Mostrando entradas con la etiqueta GNU Octave. Mostrar todas las entradas
Mostrando entradas con la etiqueta GNU Octave. Mostrar todas las entradas

martes, 6 de junio de 2023

Un ejemplo de las bondades de usar una herramienta de cálculo automático para operar con matrices

Toda vez que ya se sepa operar perfectamente a mano, conviene aprender a utlizar un programa/calculadora que permita hacer cálculos de manera automática. Aquí tenéis un ejemplo con GNU Octave [1]: dada la matriz cuadrada, de orden $3$, $A=\begin{pmatrix}1&-1&0\\1&0&0\\1&1&1\end{pmatrix}$ y la matriz identidad (también de orden $3$), $I=\begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix}$, queremos calcular la matriz que resulta al realizar la operación $A^5-2\,A^3+7\,A-I$. Basta con escribir las siguientes instrucciones en el panel correspondientes, para obtener el resultado rápidamente.

>> A=[1,-1,0;1,0,0;1,1,1]
A =

   1  -1   0
   1   0   0
   1   1   1

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

   1   0   0
   0   1   0
   0   0   1

>> A^5-2*A^3+7*A-I
ans =

   8  -6   0
   6   2   0
   0   9   5

>>

-oOo-

Utilidades:

  [1] GNU Octave

Un ejercicio sobre el producto de matrices

ENUNCIADO. Sean las matrices $A=\begin{pmatrix}1&0&1\end{pmatrix}$ y $B=\begin{pmatrix}0\\1\\1\end{pmatrix}$. Calcúlense los productos $A\,B$ y $B\,A$.

SOLUCIÓN. Los tamaños de las matrices son $A_{1\times 3}$ y $B_{3\times 1}$, por lo que $A\,B$ es una matriz de tamaño $1\times 1$; y $B\,A$, una matriz de tamaño $3\times 3$. Operando según la regla de multiplicación matricial, se obtiene $A\,B=1$ y $B\,A=\begin{pmatrix}0&0&0\\1&0&1\\1&0&1\end{pmatrix}$. $\diamond$

-oOo-

Comentario/sugerencia: Si ya se ha aprendido a multiplicar matrices sin la ayuda de calculadora/ordenador, se utilice algúna herramienta de cálculo numérico (o bien alguna herramientas CAS). A continuación, muestro las instrucciones para hacerlo con GNU Octave [1]

    >> A=[1,0,1]
A =

   1   0   1

>> B=[0;1;1]
B =

   0
   1
   1

>> A*B
ans = 1
>> B*A
ans =

   0   0   0
   1   0   1
   1   0   1

>>

  

-oOo-

Utilidades:

  [1] GNU Octave

Uso del álgebra lineal en un problema de sucesiones numéricas

ENUNCIADO. Considérese la sucesión de números enteros positivos $1,3,6,10,15,\ldots$. Obténgase la fórmula del término general y calcúlese el valor de quincuagésimo término.

SOLUCIÓN. Observemos que la sucesión de las primeras diferencias es $2,3,4,5,\ldots$; y, la de las segundas, $1,2,3,\ldots$. Una sucesión tal como la propuesta es de naturaleza cuadrática en $n$ (índice de los términos de la sucesión), por tanto podemos escribir que el término genérico es $f(n)=a\,n^2+b\,n+c$, donde los coeficientes (a determinar) son números racionales.

Calculemos pues el valor de dichos coeficientes. Para ello, basta tener en cuenta que $f(1)=1=a\cdot 1^2 + b\cdot 1+c$; $f(2)=3=a\cdot 2^2 + b\cdot 2+c$; y $f(3)=6=a\cdot 3^2 + b\cdot 3+c$. Así, podemos plantear el siguiente sistema de ecuaciones lineales: $$\left\{\begin{matrix}a+b+c=1\\ 4a+2b+c=3\\ 9a+3b+c=6\end{matrix}\right.$$

En forma matricial, el sistema se escribe $$M\,X=B$$ donde $M=\begin{pmatrix}1&1&1\\4&2&1\\9&3&1\end{pmatrix}$, $B=\begin{pmatrix}1\\3\\6\end{pmatrix}$ y $X=\begin{pmatrix}a\\b\\c\end{pmatrix}$

En mis materiales encontraréis muchos ejercicios de resolución de un sistema de ecuaciones lineales, paso a paso. En este caso en concreto, no deberíais tener ninguna dificultad para resolverlo sin ayuda de calculadora o de un ordenador; por lo que en este ejercicio vamos a emplear un programa de cálculo numérico, como es GNU OCTAVE [1], para resolverlo de manera automática, que, por razones más que obvias, también es muy conveniente que aprendáis a utilizarlo.

Las instrucciones que hay que escribir son muy sencillas, si bien pueden emplearse instrucciones de GNU Octave que corresponden a varios procedimientos alternativos de álgebra lineal (el enlace lleva a un artículo de otro de mis blogs, que recomiendo que leáis):

  >> M=[1,1,1;4,2,1;9,3,1]
M =

   1   1   1
   4   2   1
   9   3   1

>> B=[1;3;6]
B =

   1
   3
   6

>> X=linsolve(A,B)
A =

   0.5000
   0.5000
        0

  
Entonces, $a=b=1/2$ y $c=0$. Por consiguiente, $f(n)=\dfrac{n^2+n}{2}$; y, por tanto, $f(50)=\dfrac{50^2+50}{2}=1275$. $\diamond$

$\diamond$

-oOo-

Utilidades:

  [1] GNU Octave

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.