Upload
camilo-delgado
View
75
Download
2
Embed Size (px)
Citation preview
UNIVERSIDAD AUSTRAL DE CHILE FACULTAD DE CIENCIAS DE LA INGENIERÍA INSTITUTO DE OBRAS CIVILES ESCUELA DE INGENIERÍA CIVIL EN OBRAS CIVILES.
Valdivia, 22 de mayo de 2012.
Ejercicio Nº1: Computación para Ingeniería Estructural. (IOCC 281)
1. Dada una matriz cuadrada de valores reales ,n nA , con 3n , se pide establecer un
algoritmo para calcular su determinante, leyendo los coeficientes de la matriz desde el archivo “datos.dat” y en formato libre:
PROGRAM determinante REAL deter, a DIMENSION a(3,3) WRITE(*,*) deter STOP END
(40%)
2. Implemente un código computacional para evaluar la función sin tany x x , así
como también su derivada dy dx , para x (en radianes) siendo igual a cada uno de los
coeficientes de una matriz de valores reales ,m nC , con m y n conocidos. Se pide
almacenar los valores de la función dentro de una matriz ,m nD mientras que los de
la derivada dentro de una matriz ,m nE . Efectuar las evaluaciones de y y de dy dx
mediante la creación de dos subrutinas FUNCTION diferentes.
PROGRAM y_dydx ALLOCATABLE :: c(:,:), d(:,:), e(:,:) READ(*,*) m, n ALLOCATE (c(m,n), d(m,n), e(m,n))
* Lee los coeficientes de la matriz “C” CALL LECTURA (c,m,n)
* Imprime los resultados almacenados en “D” y “E” CALL SALIDA (d,e,m,n) STOP END
(60%)
1. Una opción de algoritmo se muestra a continuación: PROGRAM determinante REAL deter, a DIMENSION a(3,3) OPEN(unit=51, FILE=’datos.dat’, STATUS=’old’)
2.0 DO i = 1, 3 READ(51,*)(a(i,j), j = 1, 3) ENDDO
2.0 deter = a(1,1)*(a(2,2)*a(3,3)-a(3,2)*a(2,3)) deter = deter + a(1,2)*(a(2,3)*a(3,1)-a(3,3)*a(2,1)) deter = deter + a(1,3)*(a(2,1)*a(3,2)-a(3,1)*a(2,2))
4.0 WRITE(*,*) deter STOP END
2. Para este ejercicio se definen 3 unidades de programa, consistentes en un programa principal y dos subrutinas FUNCTION, una de estas subrutinas para evaluar la función “y” y la otra para evaluar su derivada. Al derivar, por regla de la cadena, se tiene
sin tany x x x
2' cos tan sin sec cosy x x x x x x
sin
cos
x
x 2
1sin
cosx
x
2
1sin 1
cosx
x
1.0 REAL FUNCTION fx(x) fx = sin(x)*tan(x) RETURN END
3.0 REAL FUNCTION dfx_dx(x) fx = sin(x)*(1. + 1./cos(x)/cos(x)) RETURN END
3.0
PROGRAM y_dydx ALLOCATABLE :: c(:,:), d(:,:), e(:,:) READ(*,*) m, n ALLOCATE (c(m,n), d(m,n), e(m,n))
* Lee los coeficientes de la matriz “C” CALL LECTURA (c,m,n) DO i = 1, m DO j = 1, m a = c(i,j) d(i,j) = fx(a) e(i,j) = dfx_dx(a) ENDDO ENDDO
5.0
* Imprime los resultados almacenados en “D” y “E” CALL SALIDA (d,e,m,n) STOP END