Prueba n°1

3
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 , nn A , con 3 n , 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 tan y 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 , mn C , con m y n conocidos. Se pide almacenar los valores de la función dentro de una matriz , mn D mientras que los de la derivada dentro de una matriz , mn E . 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%)

Transcript of Prueba n°1

Page 1: 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%)

Page 2: Prueba n°1

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

Page 3: Prueba n°1

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