COMPUTACIÓN 2003 – ASTRONOMIA

PRACTICA 5b

El objetivo de esta práctica es construir una pequeña biblioteca de subrutinas para operaciones con matrices. Esto permite reutilizar código, sin tener que estar reescribiendo subrutinas cada vez que las necesitemos.

En lo que sigue llamaremos A, B a las matrices sobre las cuales se realiza una operación y R a la matriz resultante de esta operación. Los símbolos N, M representan los tamaños de estas matrices.

1. Siguiendo el procedimiento explicado en la Práctica 3, ejercicio 10, construya las siguientes subrutinas:

(a) La subrutina MTXTRA transfiere la matriz A (n × m) en el arreglo R, esto es, realiza una copia de A en R.

(b) La subrutina MTXTRP coloca la traspuesta de la matriz A (n × m) en R.

(c) La subrutina MTXWRT escribe la matriz (n × m) guardada en A fila por fila por pantalla.

Verifique que cada subrutina funcione correctamente.

Recordar que el índice K del vector en donde se guardará la matriz correspondiente (de índices I, J), debe generarse con la expresión:

K = (I − 1) ∗ M + J

2. Utilizando las subrutinas anteriores construya un programa tal que dadas dos matrices (n × n) A y B y el escalar λ realice el cálculo:

AB^{t}

Nota: Para utilizar las subrutinas no es necesario insertar el código dentro del programa (aunque, por supuesto, puede hacer esto). Puede compilar por separado las subrutinas y luego unir (link) las necesarias con el programa principal en un único ejecutable como sigue.

Supongamos que mi programa matriz.f llama a la subrutina MTXMLT, la cual está guardada en el archivo mtxmlt.f. Entonces primero compilamos mtxmlt.f como sigue

     $ g77 -c mtxmlt.f

Esto genera un archivo mtxmlt.o conocido como código objeto. A continuación unimos el código objeto de nuestra subrutina con el programa principal y generamos el ejecutable,

     $ g77 -o matriz matriz.f  mtxmlt.o