Prueba n°1

Preview:

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

Recommended