Práctica 3

Cálculo Matricial

Lo primero que necesitamos es la forma en que se escriben las matrices en Mathematica.  Normalmente se definen introduciendo los elementos que la constituyen por filas. En este caso cada fila corresponde a una lista y que los elementos de ésta  van entre llaves separados por comas. 
     Damos algunos ejemplos:

Clear["Global`*"]

a1={{3,3,4,5,6},{3,4,5,6,7},{4,5,6,7,8},
       {5,6,7,8,9},{6,7,8,9,10}};

a2={{1,1,1,1,1},{1,1,1,1,1},{1,1,1,1,1},
        {1,1,1,1,1},{1,1,1,1,1}};

a3={{1,0},{0,0},{0,0},{0,0},{0,1}};
a4={0,1,0,0,0};
a5={{0,1,0,0,0}};

Podemos mostrar las matrices en su forma rectangular habitual con el comando MatrixForm[matriz]:

MatrixForm[a1]

MatrixForm[a4]

MatrixForm[a5]

Nótese cual es la diferencia entre las matrices a4 y a5.  No obstante no debe olvidarse que el resultado del comando MatrixForm es únicamente una representación y como tal no sirve para hacer operaciones con el:

a1+a2

MatrixForm[
        a1] + MatrixForm[a2]

Las matrices se pueden escribir directamente, aunque a veces, si sus elementos proceden de evaluar cierta función (término general) se pueden construir con Table[expresion,contador1,contador2]

b1 = Table[i^3, {i, 4}]

b2 = Table[i^3, {i, -3, 5}]

b3 = Table[i*j, {i, 4}, {j, 4}]

b4=Table[1/(i+j),{i,5},{j,5}]

Observese que este comando depende de contadores donde el primero de ellos determina las filas de la matriz, y el segundo (que es opcional) determina las columnas.

Puede también, introducir matrices, utilizando sucesivamente: Palettes, Basic Calculations, List and Matrices, Creating  Lists and Matrices. 
A continuación,  elija el modelo de matriz que necesita, pinchando encima. Si quiere aumentar el número de  filas de la matriz, teclee simultáneamente las teclas Control Ctrl y Enter [↵], pero si, lo que desea es aumentar el  número de columnas,  teclee  simultáneamente las teclas Control Ctrl y la tecla que contiene la coma [,].

Matrices especiales y referencia a elementos de una matriz dada.

Hay algunas matrices significativas, que Mathematica las genera con una orden, como son la matriz unidad y la matriz diagonal.
⊳ IdentityMatrix[n] genera la matriz identidad de orden n×n.
⊳ DiagonalMatrix[{a,b,c,d}] proporciona la matriz diagonal de orden 4×4 que tiene en la diagonal principal los elementos a,b,c,d.
En los siguientes ejemplos, se dan nombre a las matrices, porque resulta más cómodo: i4 al matriz unidad de orden 4 y d4 a la matriz diagonal que se propone.

i4 = IdentityMatrix[4]

MatrixForm[i4]

d4 = DiagonalMatrix[{1, -3, 0, 2}]

MatrixForm[d4]

A veces necesitaremos hacer referencia a los elementos de una matriz. En el caso de una fila completa de la matriz es suficiente con indicar el nombre de la matriz y la posición de la fila entre dobles corchetes, por ejemplo:

b4[[2]]

Mientras que en el caso de que queramos señalar uno de los elementos de la matriz, tendremos que introducir entre los corchetes la fila y la columna que determinan a ese elemento:

b4[[2, 1]]

A continuación mostramos dos tareas en las que estos comandos son necesarios. En la primera mostramos como a una matriz le podemos aplicar una transformacion elemental consistente en sumar a la segunda fila la primera. La segunda tarea extrae una submatriz a partir de otra dada.

MatrixForm[d4]
d4[[2]] = d4[[2]] + d4[[1]];
MatrixForm[d4]

submatriz = 
        Table[d4[[i, j]], {i, 2, 4}, {j, 3, 
            4}];
MatrixForm[submatriz]

Por último, si queremos añadir a una matriz dada una fila (en la última posición) podemos emplear el comando AppendTo[matriz,fila]

AppendTo[submatriz, {1, 1}];
MatrixForm[submatriz]

Operaciones

Suma y resta de matrices.

La ejecución de las correspondientes celdillas mostrará cuáles de las siguientes operaciones no son posibles.

a1-a2

a1+a2

a3+a5

Nótense los mensajes de error anteriores y las salidas correspondientes.

Producto por escalares

Para ver cómo se multiplica una matriz por un escalar será suficiente que consideremos
algunos ejemplos.

7 a3

7*a3

a3/7

1/7 a3

Producto de matrices

Para multiplicar dos matrices hay que emplear utilizar un punto entre ambas. Si se deja un espacio o se emplea el signo " * " lo que hace es multiplicar elemento a elemento entre los que ocupan la misma posición. Cuando una matriz es de tipo fila o columna Mathematica la
considera convenientemente como tal y, por tanto, en los ejemplos anteriores es posible efectuar a4.a1 y a1.a4, pues, en el primer caso,   considerada a4 como matriz fila, es posible la multiplicación y, en el segundo caso, considerado como columna,  también es posible
efectuar la multiplicación. A continuación se incluyen diferentes operaciones. Se observará que es posible efectuar algunas  y otras no.

a2.a3

a1.a2.a3

a3.a1

a4.a1

a1.a4

a1 . a2

a1*a2

a1 a2

a2*a3

Una operación importante al trabajar con matrices cuadradas es hallar potencias de las mismas. Este problema se reduce a calcular el producto de una matriz consigo misma un determinado número de veces. Sin embargo, si la potencia es alta, para evitar la utilización 
de una sentencia For o Do, Mathematica dispone de un comando que produce directamente el resultado buscado. Es

                                      MatrixPower[matriz,exponente].

   Si exponente es un número natural, proporciona la correspondiente potencia de la matriz, mientras que si es un entero negativo se obtiene como salida la potencia indicada de la matriz inversa (si la matriz es invertible).

Por ejemplo, la cuarta potencia de la matriz a2 es

MatrixPower[a2,4]

Veamos el siguiente ejemplo:

A = {{1, 2}, {3, 4}};

B = MatrixPower[A, 3]

MatrixForm[B]

MatrixForm[A^3]

Se observa el error al hallar A^3, ya que es una matriz de orden 2×2 cuyos elementos son los cubos de los elementos de la matriz A que ocupan la misma posición y  por lo tanto, no coincide con la matriz  B.

Inversa, Traspuesta y Determinante de una matriz.

Las matrices inversa y traspuesta de una matriz, así como su determinante, se obtienen con las sentencias Inverse[matriz], Transpose[matriz], y Det[matriz], respectivamente. Asi si una matriz tiene determinante no nulo,

Det[b4]

podemos calcular su inversa

b5 = Inverse[b4]

MatrixForm[b5.b4]

Combinando estos comandos con otros ya estudiados podemos, por ejemplo, ver para que valores del parámetro a la siguiente matriz es invertible

m1={{a,1,1},{1,a,1},{1,1,a}};
MatrixForm[m1]
Det[m1]
Factor[Det[m1]]

Esta matriz, en consecuencia, no tiene inversa cuando a tome los valores 1 o 2.

De manera similar, para obtener la traspuesta de una matriz empleamos el comando Transpose[matriz]

m2={{5,0,0,0,0},{2,4,0,0,0},{1,0,6,0,0},{1,1,1,1,0},{2,0,1,0,1}}

MatrixForm[m2]

MatrixForm[Transpose[m2]]

Por ejemplo, podemos emplear el comando Transpose para comprobar si una matriz es simétrica mediante la orden

m2 == Transpose[m2]

Combinando este comando con AppendTo podemos añadir una columna a una matriz (en lugar de una fila)

m2 = Transpose[m2];   
AppendTo[m2, {1, 2, 3, 4, 5}];   
m2 = Transpose[m2];    
MatrixForm[m2]

Rango de una matriz

Una operación que hay que efectuar a menudo al tratar problemas en los que intervienen matrices consiste en calcular el rango. Disponemos de varios procedimientos, de los que vamos a reflejar dos.

Menores de una matriz.

La forma habitual de determinar el rango de una matriz consiste en determinar el orden máximo de las submatrices con determinante no nulo. Para ello utilizamos la orden

                            Minors[matriz,orden]

   Produce los menores de la matriz indicada del orden que se especifica. Conviene presentar un ejemplo.

Definimos una matriz.

matriz=Table[i+j,{i,5},{j,3}]

Su rango puede ser, a lo sumo, tres. Hallamos, por tanto, los menores de orden tres.

Minors[matriz,3]

Observamos que todos son nulos, por lo que el rango es inferior a tres.

Pasamos a los de orden dos.

Minors[matriz,2]

Como alguno de ellos es no nulo (realmente, todos), la matriz es de rango dos.

Reducción de la matriz por filas

Otro método para determinar el rango de una matriz es someterla a transformaciones elementales por filas, lo que se consigue con la orden RowReduce[matriz].

Vemos cómo funciona con la misma matriz numérica de la subsección anterior, que debe ser redefinida.

matriz=Table[i+j,{i,5},{j,3}];
RowReduce[matriz]
MatrixForm[%]

Apreciamos que se obtiene un matriz equivalente a la original con tres filas nulas, lo que indica que el rango es dos. A continuación señalamos algunos aspectos de este comando. ¿Se puede saber con este método qué filas y columnas de la matriz de partida proporcionan la submatriz de orden igual al rango con determinante no nulo?.

Responderemos con un ejemplo. Definimos una matriz muy simple.

matriz={{0,0,1,0,0},{0,0,0,1,0},{0,0,1,1,0},{0,0,1,0,1},{0,0,0,0,1}};
MatrixForm[matriz]

La reducimos.

RowReduce[matriz]//MatrixForm

Se podría pensar que con las tres últimas columnas de las tres primeras filas se obtendría una submatriz de la matriz considerada inicialmente de orden tres de determinante no nulo. Sin embargo, se comprueba  inmediatamente que tal submatriz tiene determinante nulo. En consecuencia, la función RowReduce proporciona información sobre el rango de la matriz, entre otras cosa, pero no debe usarse para establecer qué submatriz debe considerarse.
Otra nota importante sobre el comando RowReduce es que no debe ser empleado para calcular el rango de matrices que dependan de parámetros ya que no tiene en cuenta todos los valores que puede tener el parámetro.Por ejemplo podemos considerar la matriz diagonal

diag = {{a, 0, 0}, {0, 1 - a, 0}, {0, 0, 
            1 - a}};

    MatrixForm[diag]

Evidentemente esta matriz tiene rango 1 si a=1, rango 2 si a=0 y rango 3 en el resto de los casos. Sin embargo, el comando RowReduce nos indica que siempre tiene rango 3.

MatrixForm[RowReduce[diag]]

Ejercicios

1.-  Define los comandos necesarios para aplicarle a una matriz 
B={{1,5,2},{-1,0,1},{3,2,4}}
las siguientes transformaciones elementales: multiplicar la tercera fila por 5 y permutar las dos primeras filas.

2.-  Dadas las matrices 
A={{3,0},{-1,2},{1,1}}; B={{1,5,2},{-1,0,1},{3,2,4}}; C={{6,1,3},{-1,1,2},{4,1,3}} y D={{4,-1},{0,2}}
calcula   A.D    ;    B + C^t     ;     D. A^t    ;    B.C    ;    C.B   ;    A^t . C   ;   A . D^-1

3.-  Dadas las matrices 
A={{-1,2,1},{0,1,3},{1,0,1}}  y   B= {{3,1},{-1,1},{2,2}}.
obtén la matriz X tal que  A . X = B

4.-  Dadas las matrices 
A={{1,1,1},{1,1,1},{1,1,1}}  y   B= {{a,1},{0,a}}.
calcular A^2, A^3, B^2, B^3. Pueden deducirse fórmulas para A^n y B^n

5.-  Calcula para que valores de los parámetros a y b las matrices  
A={{a,2a,1},{3a,-1,a+2},{-3,0,3}}  y   B= {{a,2b,a+b},{4a,5b,2a+2b},{7a,8b,2a+2b}}.
son invertibles.

6.-  Calcula empleando el comando RowReduce la inversa de la matriz  
A={{2,3,4},{5,6,6},{3,1,2}}  
teniendo en cuenta como se hace en las clases de teoría.