Hoy nos iniciamos en un sistema para la manipulación de expresiones simbólicas y numéricas, Maxima. Un herramienta informática que nos ayudará a resolver problemas de la asignatura de forma sencilla y aplicada.
Para comenzar nos iniciaremos en la definición de vectores y matrices, y las operaciones que podemos hacer con ellos.
Vectores
Un vector se define utilizando [] y los elementos del vector separados por comas. Con los vectores podemos hacer las operaciones básicas de suma y multiplicación por escalar.
v:[1,2,3];
3.v+(-2).u;
Ejercicio: Sean los vectores \(\mathbf{u}=[2,-1,5,0]\), \(\mathbf{v}=[4,3,1,-1]\) y \(\mathbf{w}=[-6,2,0,3]\). Si \(\mathbf{x}+\mathbf{v}+3\mathbf{w}=2\mathbf{u}\), ¿cuánto suman las coordenadas de \(\mathbf{x}\)?
Ejercicio: Sean los vectores \(u\)=[2,-1], \(v\)=[1,1] y \(w\)=[-1,3], ¿cuánto es \(\textbf{proy}_{w}(u)\bullet\textbf{proy}_{w}(v)\)?
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].
Ejercicio: Sea \(A\)=[[4,-1,6],[2,1,6],[2,-1,8]] y \(B\)=[[0,-1,5],[1,6,2],[1,8,0]]. ¿Cuál es la suma de los elementos de la diagonal principal de \(2A-3B\)?
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.
Las operaciones con matrices son semejantes a las utilizadas con los vectores.
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.
Uno de los ejercicios más comunes que realizaremos será el cálculo de rango, determinantes, menores e inversa de una matriz. Primero aprenderemos a realizarlo mediante operaciones elementales, consiguiendo una matriz escalonada o una matriz triangular. No obstante, tenemos los comandos que nos los proporcionan:
rank(\(M\)): dada la matriz \(M\) nos devuelve su rango.
determinant(\(M\)): dada la matriz \(M\) nos devuelve su determinante.
mat_trace(\(M\)): dada la matriz \(M\) nos devuelve su traza.
adjoint(\(M\)): dada la matriz \(M\) nos devuelve su adjunta.
minor(\(M,i,j\)): dada la matriz \(M\) nos devuelve el menor (i,j), esto es, elimina la fila i y la columna j de la matriz.
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.
ratsimp(expr): Simplifica la expresión expr y todas sus subexpresiones, incluyendo los argumentos de funciones no racionales.
Ejercicio: Cuál es el valor de x para que el rango de la matriz sea 2 \[\begin{bmatrix}
5 & -5 & -6\\
-5 & 3 & -1 \\
0 & x &7
\end{bmatrix}\]
Ejercicio: Justificar si el punto S(2,4,-13) es coplanario con los puntos P(1,-3,-1), Q(2,-2,1) y R(3,2,-4)
Ejercicio: ¿Cuál es el valor del producto escalar del vector \([1,-2,3]\) por el vector unitario normal de la ecuación implícita del plano que pasa por los puntos \(P(1,-3,-1)\), \(Q(2,-2,1)\) y \(R(3,2,-4)\)?
El pasado día vimos como realizar transformaciones elementales para encontrar una matriz escalonada de cualquier matriz. Este proceso nos ayuda en el cálculo de la inversa de una 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\).
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: Calcular la inversa de la matriz \(A\)=[[2,0,0],[1,2,0],[2,-1,3]]?
Definamos la matriz y la ampliada con la que trabajaremos
El siguiente proceso es que el elemento X3[5,2] sea un 1. Para coseguirlo tenemos diferentes métodos, en este caso el más simple es operar con la fila siguiente:
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 la matriz [[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?
El cifrado matricial (conocido históricamente como una variante del Cifrado de Hill) es una aplicación directa del álgebra lineal donde la clave secreta es una matriz invertible. ¿Cómo funciona el Cifrado Matricial?…