miércoles, 21 de diciembre de 2022

Un ejemplo de cálculo de álgebra lineal con la herramienta GNU Octave

El software matemático GNU Octave —pertenece al software libre, y por tanto, es gratuito— es una valiosa herramienta empleada en el cálculo y en el análisis numérico —ofrece también un nutrido repertorio de utilidades para la elaboración de gráficas— que no es difícil de empezar a utilizar en Bachillerato si restringimos sus prestaciones al currículo propio de dichos estudios, si bien sus posibilidades van mucho más allá, orientándose realmente a los estudios universitarios, incluso a la investigación. Para animaros a que lo utilicéis, en este ejemplo muestro cómo resolver un sistema de ecuaciones lineales compatible determinado empleando el método de la matriz inversa. És claro que no podréis usar esta herramienta en los exámenes de acceso a la universidad y en los exámenes ordinarios (por lo menos, de momento), pero os ayudará enormemente cuando estudiéis la asignatura en vuestra casas, permitiéndoos investigar en los conceptos y procedimientos, así como contrastar, comprobar o, simplemente, saltaros los procedimientos rutinarios (ya aprendidos) para resolver problemas más interesantes.

Consideremos el siguiente sistema de ecuaciones lineales con tres incóngitas $$\left.\begin{matrix}x&+&y&+&z&=&1 \\ x&-&2y&+&3z&=&2 \\ x&+&3y&-&z&=&3\end{matrix}\right\}$$ que en forma matricial puede escribirse de la forma $$\begin{pmatrix} 1 & 1 & 1 \\ 1 & -2 & 3 \\ 1 & 3 & -1 \end{pmatrix}\,\begin{pmatrix} x \\ y \\ z\end{pmatrix}=\begin{pmatrix} 1 \\ 2 \\ 3\end{pmatrix}$$ Entendiendo por $A$ la matriz de los coeficientes del sistema, por $X$ el vector columna de las incóngnitas y por $B$ el vector columna de los términos independientes, podemos escribir la ecuación matricial $$AX=B$$ Multiplicando ambos miembros por $A^{-1}$, se tiene que $A^{-1}AX=A^{-1}B$, y como $A^{-1}A=I$ (matriz identidad), teniendo en cuenta que $IX=X$, llegamos a $$X=A^{-1}B$$ Esto constituye el método de la matriz inversa para resolver el sistema de ecuaciones, obteniendo éstas, esto es, el vector columna de las incógnitas, que, claro está, para poder aplicarlo es necesario que $\text{det}(A)\neq 0$ (el sistema tiene que ser compatible).

Voy ahora a resolverlo, con la ayuda del GNU Octave:

  >> A=[1,1,1;1,-2,3;1,3,-1]
A =

   1   1   1
   1  -2   3
   1   3  -1
   
>> det(A)
ans = 2
% Como el determinante de la matriz de los coeficientes es
% distinto de cero, la matriz es regular (inversible) y su 
% rango es 3; en efecto,

>> rank(A)
ans = 3


% Analicemos el sistema según el tipo de solución
% (teorema de Rouché-Fröbenius)
% luego el sistema es compatible; 
% Además, es compatible, habida cuenta de que 
% el rango de la matriz ampliada es también 3,

% (en efecto, el rango de la matriz ampliada es 3)

>> A_a=[1,1,1,1;1,-2,3,2;1,3,-1,3]
A_a =

   1   1   1   1
   1  -2   3   2
   1   3  -1   3

>> rank(A_a)
ans = 3

% Por otra parte, el rango, que es 3, 
% es igual al número de incóngitas
% por lo que el sistema es (compatible) determinado


% Procedo a resolverlo,
% calculando la matriz inversa de A: 
>> A_i=inv(A)
A_i =

  -3.5000   2.0000   2.5000
   2.0000  -1.0000  -1.0000
   2.5000  -1.0000  -1.5000


% Compruebo que está bien calculada:
% el producto de la matriz A por su inversa
% (y el de la inversa de A por A)
% ha de ser igual a la matriz identidad

>> I=[1,0,0;0,1,0;0,0,1]
I =

   1   0   0
   0   1   0
   0   0   1


>> A_i*A
ans =

   1.0000   0.0000        0
        0   1.0000        0
        0   0.0000   1.0000

>> A*A_i
ans =

   1.0000        0        0
   0.0000   1.0000   0.0000
        0        0   1.0000

% Finalmente, calculo el vector de las incóngitas X:

% (defino antes el vector de los términos independientes)
>> B=[1;2;3]
B =

   1
   2
   3

% Y he aquí la solución del sistema
>> X=A_i*B
X =

   8
  -3
  -4

% Compruebo la solución, sustituyendo en las ecuaciones
% los valores de las incóngitas que acabamos de calcular

% Los sustituyo en la primera ecuación
% Para ello, téngase en cuenta que 
% el valor de la variable x es X(1),
% y es X(2) 
% y z es X(3)
% ya que en el programa, X, es un arreglo ('array' o 'vector')
% que tiene estas tres componentes. 
% En efecto:

>> X(1)+X(2)+X(3)
ans = 1
que, en efecto, es el valor 
del término independiente de la misma


% Los sustituyo en la segunda ecuación
>> X(1)-2*X(2)+3*X(3)
ans = 2
que, en efecto, es el valor 
del término independiente de la misma

% Los sustituyo en la tercera ecuación
>> X(1)+3*X(2)-X(3)
ans = 3
que, en efecto, es el valor 
del término independiente de la misma.

$\diamond$

-oOo-

Referencias

[1] https://octave.org/. Página web de desarrollo y descarga del programa de cálculo GNU Octave.
[2] John W. Eaton; David Bateman; Søren Hauberg; Rik Wehbring, Free Your Numbers, https://www.gnu.org/software/octave/octave.pdf. Manual actualizado de la herramienta GNU Octave.