Prueba n°1
-
Upload
camilo-delgado -
Category
Documents
-
view
75 -
download
2
Transcript of Prueba n°1
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