Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Día: 3 de octubre de 2025

ALG: Matrices con Maxima

Posted on 3 de octubre de 2025

Matrices

Si queremos utilizar matrices nos bastará con definirla mediante matrix(). Las filas de definimos como vectores:

Ejercicio: Definir las matrices \(A=\begin{bmatrix}1 & 2 & 3\\
4 & 5 & 6\end{bmatrix}\) y \(B=\begin{bmatrix}1 & 2 \\ 3& 4 \\ 5 & 6\end{bmatrix}\).


(%i2)
A : matrix([ 1, 2, 3],[ 4, 5, 6]) ;
B : matrix([ 1, 2],[ 3, 4],[ 5, 6]) ;

(A) [ 1 2 3 4 5 6 ]
(B) [ 1 2 3 4 5 6 ]


La primera, A, sería una matriz de 2×3, B sería una matriz de 3×2. La manera de acceder a los elementos es mediante A[i,j].

Los operadores anteriores comentados para vectores funcionan igual en matrices. En el caso de elevar una matriz a una potencia tendríamos que utilizar "^^".

Otra forma de acceder a submatrices es con los comandos:

  • col((Matriz,NúmColumna)): Recupera la columna NúmColumna.
  • row((Matriz,NúmFila)): Recupera la fila NúmFila.
  • submatrix(\(i_1,i_2,\ldots,i_p\), Matriz,\(j_1,j_2,\ldots,j_q\)): Elimina de la Matriz las filas cuyos números son \(i_1,i_2,\ldots,i_p\) y las columnas cuyos números son \(j_1,j_2,\ldots,j_q\). No es preciso que estén ambas: pueden eliminarse únicamente filas o columnas.
  • addrow(Matriz, \(v_1, \ldots, v_p\)): Añade en la base de Matriz las filas dadas por vectores (o matrices) \(v_1, \ldots, v_p\). Las longitudes deben ser concordantes.
  • addcol(Matriz, \(v_1, \ldots, v_p\)): Añade en la base de Matriz las filas dadas por vectores (o matrices) \(v_1, \ldots, v_p\). Las longitudes deben ser concordantes.
  • matrix_size(Matriz): Proporciona las dimensiones de la matriz.
  • transpose(Matriz): Proporciona la matriz traspuesta de Matriz.
  • mat_trace(\(M\)): dada la matriz \(M\) nos devuelve su traza.

Algunas matrices interesantes:

  • diagmatrix(Número,Valor): Genera una matriz cuadrada diagonal cuyo tamaño se establece mediante el valor de Número y en la que todos los elementos de la diagonal tienen el mismo Valor.
  • diag_matrix(\(a_1,a_2,\ldots,a_n\)): Genera una matriz diagonal cuadrada con \(a_1,a_2,\ldots,a_n\) en la diagonal.
  • ident(Número): Genera la matriz identidad (cuadrada) cuyo tamaño viene dado por el valor Número; es un caso particular del anterior.
  • zeromatrix(n,m): Genera la matriz de n filas y m columnas en la que todos sus elementos son ceros.

Ejercicio: Construir la matriz \[\begin{pmatrix}2 & 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
2 & 2 & 0 & 0 & 0 & 0 & 0 & -1 & 0\\
0 & 0 & 3 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 3 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 3 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 4 & 4 & 4 & 4\\
0 & 0 & 0 & 0 & 0 & 4 & 4 & 4 & 4\\
0 & 1 & 0 & 0 & 0 & 4 & 4 & 4 & 4\\
0 & 0 & 0 & 0 & 0 & 4 & 4 & 4 & 4\end{pmatrix}\]


(%i7)
X:addcol(zeromatrix(2,2)+2,zeromatrix(2,7))$
X1:addcol(zeromatrix(3,2),ident(3)·3)$
X1:addcol(X1,zeromatrix(3,4))$
X:addrow(X,X1)$
X:addrow(X,addcol(zeromatrix(4,5),zeromatrix(4,4)+4))$
X[2,8]:−1$
X[8,2]:1$

Ejercicio: Escribir en forma matricial el sistema \[\begin{matrix}x+2y=10\\ 2x-2y=4\\ 3x+5y=26\end{matrix}\]


(%i4)
A:matrix([1,2],[2,−2],[3,5])$
X:transpose(matrix([x,y]))$
b:transpose(matrix([10,4,26]))$
print(A,X,"=",b)$

\[\begin{pmatrix}1 & 2\\ 2 & -2\\ 3 & 5\end{pmatrix} \begin{pmatrix}x\\ y\end{pmatrix}=\begin{pmatrix}10\\ 4\\ 26\end{pmatrix}\]


Ejercicio: Dadas \(A\)=[[1,-3],[2,2],[4,1]] y \(B\)=[[-1,-7], [4,-5]], Si \(C=B^t\cdot A^t\), ¿cuánto es \(c_{12}\)?


(%i4) A:matrix([1,–3],[2,2],[4,1])$
B:matrix([–1,–7], [4,–5])$
C:transpose(A.B);
C[1,2];

(C) [ − 13 6 0 8 − 24 − 33 ]
(%o4) 6


Ejercicio: Sea \(A=\begin{bmatrix} 1 & 3\\ \alpha & 1 \end{bmatrix}\), ¿cuál es el valor de \(\alpha\) para el cual A es una raíz del polinomio \(f(x)=x^2-2x-8\)?


(%i2)
A : matrix([ 1, 3], [ x, 1]) $
A ^ ^ 2 – 2 * A – 8 * ident( 2) ;

(%o2) [ 3 ⁢ x − 9 0 0 3 ⁢ x − 9 ]

(%i3) solve(%[1,1],x);

(%o3) [ x = 3 ]


Operaciones con matrices en maxima

El pasado día vimos como realizar transformaciones elementales para encontrar una matriz escalonada de cualquier matriz. Estas operaciones son fáciles con maxima utilizando estos comandos:

  • rowswap(\(M\), i, j): dada la matriz \(M\) nos devuelve la misma donde la se han intercambiado las filas i y j, \(f_i\leftrightarrow f_j\).
  • columnswap(\(M\), i, j): dada la matriz \(M\) nos devuelve la misma donde la se han intercambiado las columnas i y j, \(c_i\leftrightarrow c_j\).

Ejercicio: Dar las matrices de paso, por la izquierda y por la derecha, que verifica la semejanza \[\begin{bmatrix}
0 & 0 & 1 & 2 \\
0 & 0 & 2 & 1 \\
3 & 4 & 0 & 0 \\
4 & 3 & 0 & 0 \\
\end{bmatrix}\sim \begin{bmatrix}
0 & 0 & 3 & 4 \\
0 & 0 & 4 & 3 \\
1 & 2 & 0 & 0 \\
2 & 1 & 0 & 0
\end{bmatrix}\]

(%i2) A:matrix([0,0,1,2],[0,0,2,1],[3,4,0,0],[4,3,0,0])$
X:addcol(A,ident(4));

\[\begin{bmatrix}0 & 0 & 1 & 2 & 1 & 0 & 0 & 0\\0 & 0 & 2 & 1 & 0 & 1 & 0 & 0\\3 & 4 & 0 & 0 & 0 & 0 & 1 & 0\\4 & 3 & 0 & 0 & 0 & 0 & 0 & 1\end{bmatrix}\]

(%i4) X:rowswap(X,1,3)$
X:rowswap(X,2,4);

\[\begin{bmatrix}3 & 4 & 0 & 0 & 0 & 0 & 1 & 0\\4 & 3 & 0 & 0 & 0 & 0 & 0 & 1\\0 & 0 & 1 & 2 & 1 & 0 & 0 & 0\\0 & 0 & 2 & 1 & 0 & 1 & 0 & 0\end{bmatrix}\]

(%i5) EL:submatrix(X,1,2,3,4);

\[\begin{bmatrix}0 & 0 & 1 & 0\\0 & 0 & 0 & 1\\1 & 0 & 0 & 0\\0 & 1 & 0 & 0\end{bmatrix}\]

(%i6) X:addrow(submatrix(X,5,6,7,8),ident(4));

\[\begin{bmatrix}3 & 4 & 0 & 0\\4 & 3 & 0 & 0\\0 & 0 & 1 & 2\\0 & 0 & 2 & 1\\1 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{bmatrix}\]

(%i8) X:columnswap(X,1,3)$
X:columnswap(X,2,4);

\[\begin{bmatrix}0 & 0 & 3 & 4\\0 & 0 & 4 & 3\\1 & 2 & 0 & 0\\2 & 1 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\\1 & 0 & 0 & 0\\0 & 1 & 0 & 0\end{bmatrix}\]

(%i9) ER:submatrix(1,2,3,4,X);

\[\begin{bmatrix}0 & 0 & 1 & 0\\0 & 0 & 0 & 1\\1 & 0 & 0 & 0\\0 & 1 & 0 & 0\end{bmatrix}\]

(%i10) EL.A.ER;

\[\begin{bmatrix}0 & 0 & 3 & 4\\0 & 0 & 4 & 3\\1 & 2 & 0 & 0\\2 & 1 & 0 & 0\end{bmatrix}\]


  • rowop(\(M\), i, j, \(\alpha\)): dada la matriz \(M\) nos devuelve la misma donde la \(f_i\leftarrow f_i-\alpha f_j\).
  • columnop(\(M\), i, j, \(\alpha\)): dada la matriz \(M\) nos devuelve la misma donde la \(c_i\leftarrow c_i-\alpha c_j\).

Con estos comandos podemos realizar las operaciones elementales que tratamos en clases anteriores. Sin embargo, una de las operaciones tiene un procedimiento más delicado: la multiplicación de una fila por un escalar. Imaginemos que el elemento \(a_{ic}=\gamma\) de una matriz queremos que su valor sea \(\beta\), necesitamos saber qué escalar \(\alpha\) debemos multiplicar a la fila \(f_i\) para que el comando rowop(\(M\), i, i, \(\alpha\)) transforme \(a_{ic}=\gamma\) en \(a_{ic}=\beta\). Luego \[\beta f_i={\gamma}f_i \ -\ {\gamma}{\alpha}f_i\to \alpha=1-\frac{\beta}{\gamma}.\]
De esta forma, solo necesitamos sustituir para encontrar el \(\alpha\) apropiado que nos proporcione \(\beta\).

Ejercicio: Dada \(\begin{bmatrix}2 & \operatorname{-}4 & 3\\ 6 & \operatorname{-}8 & 5\\ 6 & 1 & 7\end{bmatrix}\). Encontrar una matriz triangular superior que sea semejante por operaciones elementales.

(%i2) A:matrix([2,−4,3],[6,−8,5],[6,1,7]);
X:addcol(ident(3),A);

\[\begin{bmatrix}2 & -4 & 3\\6 & -8 & 5\\6 & 1 & 7\end{bmatrix}\]

\[\begin{bmatrix}1 & 0 & 0 & 2 & -4 & 3\\0 & 1 & 0 & 6 & -8 & 5\\0 & 0 & 1 & 6 & 1 & 7\end{bmatrix}\]

(%i3) X:rowop(X,2,1,3);

\[\begin{bmatrix}1 & 0 & 0 & 2 & -4 & 3\\-3 & 1 & 0 & 0 & 4 & -4\\0 & 0 & 1 & 6 & 1 & 7\end{bmatrix}\]

(%i4) X:rowop(X,3,1,3);

\[\begin{bmatrix}1 & 0 & 0 & 2 & -4 & 3\\-3 & 1 & 0 & 0 & 4 & -4\\-3 & 0 & 1 & 0 & 13 & -2\end{bmatrix}\]

(%i5) X:rowop(X,3,2,13/4);

\[\begin{bmatrix}1 & 0 & 0 & 2 & -4 & 3\\-3 & 1 & 0 & 0 & 4 & -4\\\frac{27}{4} & -\frac{13}{4} & 1 & 0 & 0 & 11\end{bmatrix}\]


Ejercicio: Dada la matriz propuesta en el video, realizar las mismas operaciones con maxima para concluir con la matriz escalonada que proporciona.


Ejercicio: Realizar como anteriormente con la matriz dada en:


A veces, podemos necesitar comandos que nos ayuden a simplificar expresiones, algunos son:

  • expand(expr): Expande la expresión expr. Los productos de sumas y de sumas con exponentes se multiplican, los numeradores de las expresiones racionales que son sumas se separan en sus respectivos términos, y las multiplicaciones (tanto las que son conmutativas como las que no) se distribuyen sobre las sumas en todos los niveles de expr.
  • radcan(expr): Simplifica la expresión expr, que puede contener logaritmos, exponenciales y radicales, convirtiéndola a una forma canónica, lo que significa que todas las expresiones funcionalmente equivalentes se reducen a una forma única.
  • ratsimp(expr): Simplifica la expresión expr y todas sus subexpresiones, incluyendo los argumentos de funciones no racionales.
  • fullratsimp(expr): Aplica repetidamente ratsimp a una expresión, seguida de simplificaciones no racionales, hasta que no se obtienen más transformaciones; entonces devuelve el resultado.

Podéis ver más en Funciones y variables para simplificación

Rango de una matriz

Tenemos una función que nos permite calcular el rango de una matriz:

  • rank(M): Calcula el rango de la matriz M.

Ejercicio: Verifica el resultado del ejercicio


Ejercicio: Sea A:[[1,2,-3], [-2,0,4], [0,4,-2], [-2,-4,a]]. ¿Cuál es el valor de a para que el rango de la matriz sea par?


Ejercicio: Sea A:[[1,a,b,0], [2,2a,b,1], [2,3,b,0], [0,1,0,1]], con a,b\(\in\mathbb{R}\). ¿Cuál es el rango de la matriz según los parámetros dados?


Inversa de una matriz

Recordad que para calcular la inversa de una matriz utilizaremos:

Sea \(A\) matriz cuadrada de orden \(n\). Si conseguimos mediante semejanza por transformaciones elementales una matriz tal que \[[A\, |\, I_n] \sim [I_n\, |\, B],\]entonces \(B\) es la inversa de \(A\).

Ejercicio: Dada la matriz A=[[1,1,0,0], [-1,1,-1,0], [0,1,1,1], [0,0,1,1]], ¿cuánto es \(\mathbf{tr}(A^{-1})\)


Inversa mediante los comandos de maxima

  • invert(\(M\)): dada la matriz \(M\) nos devuelve su inversa.
  • invert(\(M\)),detout: dada la matriz \(M\) nos devuelve su inversa con el determinante fuera.

Ejercicio: Utiliza estos comandos para encontrar la matriz \(X\) tal que \[\begin{bmatrix}1&2\\ 3& 4\end{bmatrix}X=\begin{bmatrix}6&3\\ 19& 2\end{bmatrix}\]


Ejercicio: Sea A=[[-1,1,3], [1,-2,0], [1,-2,1], [1,0,1]], y \(L\) su pseudoinversa. ¿cuánto es el valor de \(\sum L[i,j]\)


Bibliografía

  • Arriaza Gómez A. J., del Águila Garrido L., Rambla Barreno F., Redondo Neble M. V., Rodríguez Galván J. R., Viglialoro G. Manual de prácticas de Matemáticas con Máxima. Cádiz: Editorial UCA; 2015.

Ejercicio: Sea \(A=\begin{bmatrix}1&1&-1\\ 2&0&1\end{bmatrix}\), ¿cuál es la suma de todos los elementos de su pseudoinversa?
  • 3/7
  • 5/7
  • 12


B.)

Observa que la pseudoinversa es \[\begin{bmatrix}\frac{3}{14} & \frac{5}{14}\\
\frac{5}{14} & \mathop{-}\left( \frac{1}{14}\right) \\
\mathop{-}\left( \frac{3}{7}\right) & \frac{2}{7}\end{bmatrix}\]

Novela

La Loba, la lucha fraticida por un reino

La Loba, la lucha fratricida por un reino.

Urraca, señora de Zamora, acusada de instigar la muerte de su hermano, el rey Sancho de Castilla, deberá defenderse de la acusación, al tiempo que luchará por mantener la cohesión entre los hermanos y los reinos cristianos: una lobera de fieros lobeznos.

👉 En amazon

Entradas recientes

  • MAD: Presentación
  • ALG: Ejercicios de repaso
  • ALG: Diagonalización de una matriz
  • ALG: Autovectores y autovalores con maxima
  • ALG: Autovectores y autovalores
octubre 2025
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031  
« Sep   Nov »

Categorías

  • Álgebra Lineal
  • general
  • Matemática Discreta
  • MathBio

Etiquetas

Prácticas MathBio Prácticas Álgebra

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
©2026 Diario de clases | Diseño: Tema de WordPress Newspaperly