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%)
2. 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
1
sin
cos
x
x
2
1
sin 1
cos
x
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
3. 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