Matrices

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

ALGEBRA LINEAL CON PYTHON

FEDERICO RODAS

Universidad de las Fuerzas Armadas ESPE

Índice

Parte 1. Matrices 2
1. Matrices: Deniciones y tipos 2
1.1. Diagonal: 2
1.2. Traza: 2
1.3. Matriz Cuadrada de orden n: A ∈ Mn 2
2. Matriz Transpuesta 3
3. Tipos de Matrices 4
3.1. Matrices triangulares y diagonales 4
3.2. Matriz Identidad de orden n: I (n) 4
3.3. Matrices simétricas y antisiméticas 4
4. Operaciones con matrices 6
4.1. Suma y resta de matrices 6
4.2. Producto de matrices 6
4.3. Determinantes:det (A) , |A| 10
4.4. Matriz adjunta y cofactores: adj(A) , cof (aij ) 12
4.5. Matriz Inversa 14
4.6. Operaciones de Filas y columnas 17
5. Sistema de Ecuaciones Lineales 20
5.1. Resolución por método de eliminación Gaussiana 21

1
ALGEBRA LINEAL CON PYTHON 2

Parte 1. Matrices
1. Matrices: Definiciones y tipos

Es un ordenamiento bidimensional de m las y n columnas


A ∈ Mm×n
 
a11 a12 .. .. a1n
 a21 a22 a2n 
 .. .. ..
 
 . . .

A= 
 . .. ..

 .. . .


am1 am2 amn
aij >elementos de una matriz
A ∈ Mm×n es igual a decir {aij } , i = m, j = n
1.1. Diagonal: Son los elementos de aij ∈ A tq i = j .
 
1 2 0 1
A= 1 3 −1 2 
0 0 2 1
La diagonal ={1, 3, 2}
1.2. Traza: Es el sumatorio de los elementos de la diagonal.

n
X
(1.1) ∀aij ∈ Am×n tq, i = j, tr(A) = aii
i
Para el ejemplo anterior tr (A) = 6
1.3. Matriz Cuadrada de orden n: A ∈ Mn .
An
Es aquella matriz con el mismo número de las que de columnas
Un vector en cambio es una matriz unidemnsional:
v ∈ V, v ∈ M1×n
v = [v1 , v2 , ..., vn ]
v es un vector la , pero también podemos tener vectores columnas
u ∈ V, u ∈ Mn×1  
u1
 u2 
u= . 
 
 .. 
un
ALGEBRA LINEAL CON PYTHON 3

Algoritmo 1 Transpuesta de una matriz


import numpy as np
A=np.array([[1,2,3],[3,4,-1]])
B=np.transpose(A)
print('A=',A)
print('B=',B)
A= [[ 1 2 3] [ 3 4 -1]]
B= [[ 1 3] [ 2 4] [ 3 -1]]

Algoritmo 2 Transpuestas con Sympy


import sympy as sp
x,y=sp.symbols('x y')
a=(x+y)**2
print(sp.factor(x**2+4*x+4))
s=sp.simplify(a)
print(s)
C=sp.Matrix([[1,x],[y,1]])
print(C)
print('trans(C)=',C.T)

2. Matriz Transpuesta

La matriz transpuesta consiste en cambiar el ordenamiento de las a columnas,


en otras palabras un vector la se convierte en un vector columna. Matemáticamente
se dene como
(2.1) (aij )T = aji

 
v1
 v2 
vT =  ..
 
.

 
vn
T
u = [u1 , u2 , ..., un ]
Ejemplo 1.
 
1 0
A= 2 2 
3 −1
 
T 1 2 3
A =
0 2 −1
en python:
Para realizar matrices simbólicas :
ALGEBRA LINEAL CON PYTHON 4

Algoritmo 3 matriz identidad de orden 3


import numy as np
np.eye(3)

3. Tipos de Matrices

3.1. Matrices triangulares y diagonales. Una matriz triangular es una ma-


triz en la que todos los elementos por encima o por debajo de la diagonal principal
son cero. Si todos los elementos por encima y por debajo de la diagonal principal
son cero y todos los elementos en la diagonal principal son iguales, entonces la
matriz se llama matriz diagonal.
Sea la matriz triangular inferior de orden 4:
 
a 0 0 0
 ∗ b 0 0 
 
 ∗ ∗ c 0 
∗ ∗ ∗ d
Sea la matriz triangular superior de orden 4:
 
a ∗ ∗ ∗
 0 b ∗ ∗ 
 
 0 0 c ∗ 
0 0 0 d
Sea la matriz diagonal de orden 4:
 
a 0 0 0
 0 a 0 0 
 
 0 0 a 0 
0 0 0 a
3.2. Matriz Identidad de orden n: I (n). Es una matriz diagonal cuyo ele-
mento único además el 0 es el 1
 
1 0 ··· 0
 0 1 0 0 
.. .. ..
 
. . .
 
 0 
0 ··· 0 1
En python la forma de identicar a la matriz identidad es:
3.3. Matrices simétricas y antisiméticas. Una matriz A se dice que es simé-
trica si es igual a su matriz transpuesta, es decir,

(3.1) A = AT
cumpliendo con la ec.2.1.
Una matriz A se dice que es antisimétrica si es igual a la negación de su matriz
transpuesta, es decir,

(3.2) A = −AT
ALGEBRA LINEAL CON PYTHON 5

Algoritmo 4 Transpuesta de matrices


C=np.array([[1,2,3],[2,4,5],[3,5,6]])
print('C=',C)
Ct=np.transpose(C)
print('trans(C)=',C)
print('Dado que C=trans(C)=>C es simétrica')
D=np.array([[0,2,-3],[-2,0,-5],[3,5,0]])
print('D=',D)
Dt=np.transpose(D)
print('trans(D)=',Dt)
print('Dado que D=-trans(D)=>D es antisimétrica')

.
Ejemplo 2. Sea
 
1 2 3
A =  2 4 5  = AT
3 5 6
cumple la condición de la ec.3.1.
Sea
 
0 2 −3
B =  −2 0 −5  = −B T
3 5 0
B es una matriz asimética que cumple con la condición en la ec. 3.2.
Corolario 3. La condición necesaria para que las matrices sean asimétricas es que
el elemento único en la diagonal sea el 0.
Corolario 4. La suma de dos matrices simétricas es otra matriz simétrica.
ALGEBRA LINEAL CON PYTHON 6

Algoritmo 5 Suma de Matrices


import numpy as np
A=np.array([[1,2,3],[2,4,5],[3,5,6]])
B=np.array([[0,2,-3],[-2,0,-5],[3,5,0]])
C=A+B

Algoritmo 6 Código Latex para crer la matriz A:


\begin{align*}
\left[\begin{array}{ccc}
1 & 2 & 3\\
2 & 4 & 5\\
3 & 5 & 6\
end{array}\right]
\end{align*}

4. Operaciones con matrices

Es importante recalcar que no existe la división por matrices.

4.1. Suma y resta de matrices. Para la suma y resta se opera elemento por
elemento, es evidente que la condición para que se puedan operar es que deben
tener el mismo orden. Entonces , dadas las matrices A, B ∈ Mm×n , la operación
suma/resta se la dene como:

A + B = aij + bij

En resumen , la suma es elemento con elemento correspondiente, y mantenindo


la posición en la matriz resultante.

Ejemplo 5. Sea A, B ∈ M3
   
1 2 3 0 2 −3
A =  2 4 5 ,B =  −2 0 −5 
3 5 6 3 5 0
1+0 2+2 3−3
A+B = 2−2 4+0 5−5 
3+3 5+5 6+0
En python:

4.2. Producto de matrices. La condición para realizar el producto entre dos


Am×n , Bn×p ∈ M, es que el número de columnas de A sea igual al número
de las de B. El resultado será una matriz con el numéro de las de A y el número
de columnas de B tq, Am×n .Bn×p = Cm×p .
El producto de matrices se realiza sumando de forma ordenada la la de A con
la columna de B, y elemento por elemento , de la siguiente forma. Es en resumen
realizar el producto punto entre la primer vector la de A , con el vector columna
de B :
ALGEBRA LINEAL CON PYTHON 7

 
a11 a12 ··· a1n
 a21 a22 ··· a2n 
.. .. .. ..
 
A= .
. . .

 
..
 
am1 am2 . amn
 
b11 b12 ··· b1p
 b21 b22 ··· b2p 
. .. .. ..
 
 ..
B=
. . .


..
 
bn1 bn2 . bnp
   b 
a11 a12 ··· a1n 11
   b 21

P aso 1 =  = .

 ..
 
 

bn1
n
X
c11 = ⟨a1,: , b:,1 ⟩ = a1i .bi1
i=1
Xn
c12 = ⟨a1,: , b:,2 ⟩ = a1i .bi2
i=1
Xn
c13 = ⟨a1,: , b:,3 ⟩ = a1i .bi3
i=1
.
p veces..
n
X
c1p = ⟨a1,: , b:,p ⟩ = a1i .bip
i=1
..
.
n
X
cij = ⟨ai,: , b:,j ⟩ = aik .bkj
k=1

Entonces el producto de matrices se puede generalizar con la siguiente expresión

n
X
(4.1) Am×n .Bn×p = Cm×p = {cij } = aik .bkj
k=1

El producto de matrices no es conmutativo

A.B ̸= B.A
Ejemplo 6.Sea A, B ∈ M3
   
1 2 3 0 2 −3
A =  2 4 5  , B =  −2 0 −5 
3 5 6 3 5 0
ALGEBRA LINEAL CON PYTHON 8

Algoritmo 7 Producto de matrices usando Sympy


import sympy as sp
C=sp.Matrix([[1,x],[y,1]])
print(C)
print('trans(C)=',C.T)
D=sp.Matrix(2,3,[1,2,x,0,1,y])
print(D)
E=sp.Matrix([[1, -1], [3, 4], [0, 2]])
print(E.row(2))
print('C*D=',C*D)
print((C*D).T)
out: C*D= Matrix([[1, x + 2, x*y + x], [y, 2*y + 1, x*y + y]])

C = A.B
 
1(0) + 2(−2) + 3(3) 1(2) + 2 (0) + 3 (5) 1 (−3) + 2 (−5) + 3 (0)
=  2(0) + 4(−2) + 5(3) 2(2) + 4 (0) + 5 (5) 2 (−3) + 4 (−5) + 5 (0) 
3 (0) + 5 (−2) + 6 (3) 3 (2) + 5 (0) + 6 (5) 3 (−3) + 5 (−5) + 6 (0)
 
5 17 −13
=  7 29 −26 
8 36 −34

Proposición 7.
Demostrar que si A y B son matrces multiplicables entones
T
(4.2) (A.B) = B T .AT
Desarrollemos primero la parte derecha de la proposición. Empezamos con el pro-
ducto de A.B aplicando la denición expresada en la ec.4.1.

n
X
C = {cij } = A.B = aik .bkj
k=1
n
X
T
(4.3) (A.B) = C T = {cji } = D = {dij } = akj .bik
k=1
,ahora comprobamos el otro lado
n
X
(4.4) B T .AT = {bji } . {aji } = bik .akj
k=1
n
X
por ser conmutativo = akj .bik
k=1
como la ec.??
,y la ec. ??
entonces ambos lados de la ec. son iguales
Lqqd
ALGEBRA LINEAL CON PYTHON 9

Proposición 8.
Demostrar que para cualquier matriz A, las matrices B = A.AT , C = AT .A son
matrices simétricas.

B = BT ; C = C T
aplico la proposición anterior
T T
B T = A.AT = AT .AT = A.AT = B
T T
C T = AT .A = AT . AT = AT .A = C
por la proposición 1
T T
= AT .A = C = B

A.A

Si B es simétrico
C = A.A = AT .A = D,
T

primero la izquierda
n
X
cij = {aji } . {aij } = ajk akj
k

De esta proposición podemos observar que para el caso se cumple para toda
matriz

AT .A = A.AT

Proposición 9. Si A, B ∈ Mm×n (K) , y λ ∈ K un número cualquiera, entonces:


T
(A + B) = AT + B T
T
(λA) = λAT
T
Primero : (A + B) = AT + B T

por la izquierda de la igualdad


C =A+B
cij = aij + bij
C T = {cji } = aji + bji
por la derecha de la igualdad
D = AT + B T
dij = aji + bji
.:
{cji } = dij
T
= (A + B) = AT + B T
ALGEBRA LINEAL CON PYTHON 10

Ejercicio 10.Probar que si A es una matiz cuadrada , entonces A+AT es simétrica


y A − A es antisimétrica.
T

C = A + AT
si C es simétrica debe cumplir
C = CT
entonces por la proposición anterior
se puede decir que
T T
= AT + A

A+A
= A + AT
C = CT
lqqd

4.3. Determinantes:det (A) , |A|. Dada una matriz cuadrada A = {aij } ∈ Mn ,


denimos el determinante como:

X sg(a)
det (A) = |A| = (−1) a1j1 .a2j2 ...anjn
α∈Sn

(no se estresen con la fórmula)


donde α es cada una de las permutaciones de elementos, y sg (a).

4.3.1. Cómo se calcula, ya en serio?? Para la matriz de orden 2:

x y
↘ ↗
|A2 | = = xw − zy
↗ ↘
z w
%se suma
1se resta

Para la matriz de orden 3:


ALGEBRA LINEAL CON PYTHON 11

Algoritmo 8 Cálculo de determinantes con Numpy y Sympy


import numpy as np
import sympy as sp
from numpy import linalg as linalg
A=np.array([[1,0,3],[-1,2,2],[0,1,0]])
print(linalg.det(A))
x,y,z,w=sp.symbols('x y z w')
B=sp.Matrix([[x,y],[z,w]])
print(B.det())

a11 a12 a13


det (A (3)) = a21 a22 a23
a31 a32 a33
a11 a12 a3
↘ ↗
↘ ↗
a21 a22 a23
↘ ↗ ↘ ↗
↗ ↘ ↗ ↘
a31 a32 a33
= ↘ ↗ ↘ ↗
↗ ↘ ↗ ↘
a11 a12 a3
↗ ↘
↗ ↘
a21 a22 a23

= a11 a22 a33 + a21 a32 a13 + a31 a12 a23


− a21 a12 a33 − a11 a32 a23 − a31 a22 a13
 
1 0 3
Ejemplo 11. Sea A =  −1 2 3 , calcular el determinante.
0 1 0
 
  1 0 3
1 0 3  −1 2 3 
 
A =  −1 2 3  =   0 1 0 

0 1 0  1 0 3 
−1 2 3
det (A) = 0 − 3 + 0 − 0 − 3 − 0 = −6

4.3.2. Propiedades.
1. El determinante de una matriz diagonal o triangual es el producto
de los elementos de la diagonal principal. Ej: |I (n)| = 1
2. |A| = AT
ALGEBRA LINEAL CON PYTHON 12

3. |A.B| = |A| |B|


4. Si dos las o columnas son iguales, el determinante es cero.
5. Si una la o column es de ceros, el det. es cero.
6. Si multiplicamos una la o columna por un escalar, el determinante queda
multiplicado por el mismo número.
7. Si cambiamos una la Ai por otra Ai + λAi ,el determinante no cambia.
8. Al intercambiar dos las o columnas el determinante cambia signo.
Las propiedades 6,7, y 8 nos serán útiles para la parte de escalonamiento de matri-
ces, o método de Gauss.

4.4. Matriz adjunta y cofactores: adj(A) , cof (aij ). Dada una matriz cua-
drada A ∈ Mn , llamaremos cofactor al elemento aij que es resultado de multiplicar
i+j
(−1) por el determinante obtenido de la matriz eliminando la la i y la columna
j de A.
Los elementos de la matriz adjunta son los cofactores de cada una de los elementos
de la matriz origen, tq sea

adj (A) = {cof (aij )} , ∀i, j ≤ n

i+j
cof (aij ) = (−1) det ({akl }) ∀k ̸= i, l ̸= j
   
x y w −z
Sea A = ,=>cof (A) =
z w y −w
Para una matriz de orden tres, la matriz
 
a11 a12 a13
A =  a21 a22 a23 
a31 a32 a33

la matriz adjunta de A es

cof(a11 ) cof(a12 ) cof(a13 )


 

adj(A) =  cof(a21 ) cof(a22 ) cof(a23 ) 


cof(a31 ) cof(a32 ) cof(a33 )
       
a22 a23 a21 a23 a21 a22
det −det det
 a32 a33   a31 a33   a31 a32 
 
 
a12 a13 a11 a13 a11 a12
−det det −det
 
= 

  a32 a33   a31 a33   a31 a32  

a12 a13 a11 a13 a11 a12
det −det det
 
a22 a23 a21 a23 a21 a22

Calculemos el cofactor cof (aij ), y para esto se calcula el determinante de la


matriz eliminando todos los elemtos en la la i y todos los elementos de la columna
j. Para conseguir el cofactor a22 ,tendría esta matriz :
ALGEBRA LINEAL CON PYTHON 13

 
a11 a
12 a13
2+2
cof(a22 ) = (−1) . det  a
21 a
22 a
23

a31 a
32 a33
 
a11 a13
= det
a31 a33
 
a11 a12 a13
1+1
cof(a11 ) = (−1) . det  a21 a22 a23 
a31 a32 a33
 
a22 a23
det
a32 a33

 
1 0 3
Ejemplo 12. Sea A =  −1 2 3 , calcular la adj (A)
0 1 0

       
2 3 −1 3 −1 2
det −det det
1 0  0 0 0 1  

   
0 3 1 3 1 0
 −det 1 det −det
 
= 
  0  0 0   0 1  

0 3 1 3 1 0
det −det det
 
2 3 −1 3 −1 2
 
−3 0 −1
= 3 0 −1 
−6 −6 2

Proposición 13. adj(A)T =adj(AT )

Álgebra de Matrices :
No se puede realizar transposición de términos como se lo hace con escalares.

xz − y = 3
3−y
z=
x

En matrices podemos hacer transposición sólo de sumas y restas. Porque son


opoeraciones conmutativas. En el caso del producto hay que tener cuidado, porque
no existe la división.
ALGEBRA LINEAL CON PYTHON 14

Sea X, Y, Z ∈ M
XZ − Y = 3I
3I − Y
Z ̸=
X
hay que tomar en cuentala denición de matriz inversa
(4.5) A.A−1 = I
X −1 (XZ − Y ) = X −1 3I
X −1 .XZ − X −1 Y = X −1 .3I
−1
.X.Z − X −1 Y = X −1 .3I

X

IZ − X −1 Y = X −1 .3I
Z − X −1 Y = X −1 .3I
Z = X −1 .3I + X −1 Y

4.5. Matriz Inversa.


Teorema 14.
(4.6) A.adj AT = det (A) .In


Entonces , si decimos que la función inversa es la matriz para la cual multiplicada


por su inversa me da la matriz identidad :
(4.7) An .A−1
n = In
Usando el Teo 1. decimos que la inversa cumple con la siguiente igualdad.

adj AT

(4.8) A −1
=
|A|
De esta fórmula podemos deducir la condición de inversibilidad de una matriz :
(4.9) |A| =
̸ 0
 
1 0 3
Ejemplo 15. Sea A =  −1 2 3 ,
0 1 0
 
−3 0 −1
como la adj(A) =  3 0 −1 
−6 −6 2
=> por la proposición adj(A)T =adj(AT )
 
−3 3 −6
T
adj (A) =  0 0 −6 
−1 −1 2
 
−3 3 −6
 0 0 −6   
−1 −1 2 1/2 −1/2 1
A−1 = = 0 0 1 
−6
1/6 1/6 −1/3
ALGEBRA LINEAL CON PYTHON 15

Ejemplo 16. Calcular la inversa, la adjunta y comprobar el resultado

 
1 2 3
A =  −1 −2 −3 
4 −5 6
det (A) = 0
port tener la la 1, y 2 iguales.
∴A es no inversible

Las matrices singulares son aquellas que no son inversibles.

 
2 3
Ejemplo 17. Sea A =
2 2
, calcular la inversa y comprobar

det (A) = −2
 
2 −2
adj (A) =
−3 2
 
T 2 −3
adj (A) =
−2 2
 
2 −3
−2 2
 
−1 3/2
inv (A) = =
−2 1 −1

Demostración por Inducción

Vamos a suponer una armación A1 → V


..
.
An → V
se podría armar que:
An+1 → V

Proposición 18. Comprobar que dada una matriz A , si A es invertible, entonces


su inversa es única.
ALGEBRA LINEAL CON PYTHON 16

es el conjunto de las matrices inversas de A


 −1
An
Decir que A tiene una inversa única es decire que:
A1 = A2 = A3 = ... = An = An+1 = ... = An+m
por inducción decimos
A1 .A = A2 .A = A3 .A = ... = An .A = An+1 .A = ... = An+m .A = I
A1 = A1 I
= A1 (AA2 )
= (A1 .A) A2
= IA2
A1 = A2
por inducción
A1 = A1 I
= A1 (AAn )
= (A1 .A) An
A1 = An
luego
A1 = A1 I
= A1 (AAn+1 )
= (A1 .A) An+1
A1 = An+1

A1 = An+m
ALGEBRA LINEAL CON PYTHON 17

Proposición 19. Sea A, B ∈ Mn , si A,B son invertibles entonces inv (A.B) =


inv (B) .inv (A) . Y también que AT es invertible, entonces inv AT = (inv (A))T .


Para la primera parte: (A.B)−1 = B −1 .A−1


−1
A−1 . (A.B) (A.B) = A−1 I
por asociación del producto
−1 −1
= A−1

A .A .B. (A.B)
−1
B (A.B) = A−1
−1
B −1 .B (A.B) = B −1. A−1
−1
(A.B) = B −1. A−1
lqqd
−1
T
para la segunda parte: AT = A−1
−1 T
AT AT = AT A−1
T
I = A−1 .A (por la proposición)
I = I (por reducción al absurdo)
4.6. Operaciones de Filas y columnas. Nosotros diremos que después de
realizar operaciones de las y columnas, una matriz es equivalente a otra que resulte
de un proceso de escalonamiento.

4.6.1. Matriz Escalonada por las o columnas. Para ser considerada como una
matriz escalonada debe cumplir con ciertas características:
Las las de ceros, si existen , están todas al nal .
La cabecera de una la siempre está más a la izquierda que la cabecera de
la la precedente.
Ejemplo 20. Matriz escalonada por las
 
0 −1 0 2 3
 0 0 3 3 2 
0 0 0 0 0
Matriz escalonada por columnas
 
2 0 0
 3 0 0 
3 1 0

4.6.2. Proceso de escalonamiento. Dadas dos matrices A, B ∈ Mm×n , B ≈ A,


si pasa por un proceso de escalonamiento con operaciones permitidas de las y
columnas.
Intercambiar las : fi ←→ fj
Multiplicar la la por un escalar : λfi
Sumar y restar las: fi + λfj
ALGEBRA LINEAL CON PYTHON 18

Algoritmo 9 Escalonamiento de matríces numéricas


import numpy as np
M=np.array([[1,2],[3,4],[5,6]])
print(M)
print('primera la: ',M[0][:])#acceso sólo a la primera la
print('segunda la: ',M[1][:])
print('tercera la: ',M[2][:])
M[1][:]=M[1][:]-M[1][0]*M[0][:]
print('~',M)
M[2][:]=M[2][:]-M[2][0]*M[0][:]
print('~',M)

Ejemplo 21. Escalonar la siguiente matriz


pivote
 
1 2
A= 3 4  f2 = f2 − 3f1
5 6 f3 = f3 − 5f1
   
1 2 1 2
≈ 3 − 3(1) 4 − 3(2)  =  0 −2 
5 − 5(1) 6 − 5(2) 0 −4 f3 = f3 − 2f2
   
1 2 1 2  
1 2 f1 = f1 − 2f2
≈ 0 −2  f2 = f2 /(−2) ≈  0 1  ≈ ≈ I2
0 1
0 0 0 0
Para realizar operaciones de escalonamiento lo recomendable es que el pivote
tenga el número 1 en la columna que queremos escalonar. Además, que las las con
elementos de cero se pasen al nal usando la operación de "cambio de las".
4.6.3. Rango de una matriz. El rango es el número de las no nulas de una matriz
escalonada .
Teorema 22. Dos matrices equivalentes tienen el mismo rango .
Ejemplo 23. Calcular el rango de la matriz :
     
1 −1 2 −2 1 −1 2 −2 1 −1 2 −2
A= 3 −3 6 −6  ≈  0 0 6 −6  f2 = f2 /6 ≈  0 0 1 −1 
5 −5 4 −4 0 0 0 0 0 0 0 0
   
1 −1 2 −2 f1 = f1 − 2f2 1 −1 0 0
≈ 0 0 1 −1  ≈  0 0 1 −1 
0 0 0 0 0 0 0 0
rref(): Esta función nos entrega una matriz escalonada, y un vector con el rango
de la matriz.
Ejemplo 24. Calcular el rango de la siguiente matriz
   
1 −1 0 −2 1 −1 0 0
 3 −3 6 −6   0 0 1 0 
M = ≈ 
 5 −5 4 −4   0 0 0 1 
2 −2 −2 2 0 0 0 0
rango (M ) = 3
ALGEBRA LINEAL CON PYTHON 19

Algoritmo 10 Uso de rref() para encontrar la matriz reducida con Sympy


import sympy as sp
A=sp.Matrix([[1,-1,2,-2],[3,-3,6,-6],[5,-5,4,-4]])
print('A=',A)
Aesc,r=A.rref()
# A.rref(): Esta función nos entrega un matriz Aesc, que es la matriz
# reducida, y un vector r que es el rang(A)
print('La matriz escalonada es ~',Aesc)
print('rang(A)=',r)
rango (A) = 2

4.6.4. Teoremas de Gauss y Gauss-Jordan.


Teorema 25. Toda matriz de orden m×n distinta de la matriz 0 es equivalente
por las (columnas), a una matriz escalonada por las (columnas).
Teorema 26. Toda matriz de orden m×n distinta de la matriz 0 es equivalente
por las a una única matriz escalonada reducida por las.
Nosotros mediante el proceso de escalonamiento podemos también calcular las
respectivas matrices inversas, de tal forma de encontrar una matriz I que sea equi-
valente a la inversa. Esto es igual a encontrar una sucesión de matrices elementales
E1 , E2 , ..., Ek tq:
E1 .E2 ...Ek .A = I
E1 .E2 ...Ek .A.A−1 = A−1
A−1 = E1 .E2 ...Ek
Si representamos (A|I) como la matriz ampliada, después de aplicar el proceso
de Gauss-Jordan, obtendríamos al un lado la matriz inversa :
(A|I) ≈ (E1 .A|E1 I)
≈ (E2 .E1 .A|E2 .E1 )
..
.
≈ (E1 .E2 ...Ek .A|E1 .E2 ...Ek )
≈ I|A−1


En otras palabras yo podría tener este procedimiento


 
a11 a12 · · · a1n | 1 0 · · · 0
 a21 a22 · · · a2n | 0 1 0 
 .. .. . . .. . 
 
 . . .. | .. . .. 
an1 an1 ··· ann | 0 0 ··· 0
≈mediante operaciones de las reducimos
a−1 a−1 a−1
 
1 0 ··· 0 | 11 12 ··· 1n
 0 1 0 | a−1
21 a−1
22 ··· a−1
2n

.. .. .. .. .. ..
 
. . . . . .
 
 | 
0 0 ··· 0 | a−1
n1 a−1
n1 ··· a−1
nn
ALGEBRA LINEAL CON PYTHON 20

Algoritmo 11 Inversa de una matriz usando rref() y matriz ampliada


import sympy as sp
Mamp = sp.Matrix([[0,-1,-2,-15,1,0,0,0],[3,2,3,-12,0,1,0,0],
[8,7,6,-7,0,0,1,0][15,12,7,0,0,0,0,1]])
#print('det(M)=',M.det())
print("M ={} ".format(Mamp))
# Use sympy.rref() method
M_rref,r = Mamp.rref()
print("La matriz escalonada es :{}".format(M_rref))
M=sp.Matrix([[0,-1,-2,-15], [3,2,3,-12], [8,7,6,-7],[15,12,7,0]])
print('inv(M)=',M.inv())
M_rref
out:
61 29
− 89 7
 
1 0 0 0 − 240 30 80 15
1
0 1 0 0
 2 − 23 3
2 − 12 

0 0 1 0 − 5 1
− 163
0 
16 2
7 1 3 1
0 0 0 1 − 120 30 − 40 30

Ejemplo 27. Ejemplo:


Calcular la inversa de
 
0 −1 −2
A= 3 2 1 
8 7 6
   
0 −1 −2 | 1 0 0 1 0 −1 | 4 −5 2
 3 2 1 | 0 1 0 ≈ 0 1 2 | 4 −8 3 
8 7 6 | 0 0 1 0 0 0 | 5 −8 3
 
0 −1 −2 −15
 3 2 3 −12 
Ejemplo 28. Calcular la inversa de 
 8 7 6 −7 

15 12 7 0

5. Sistema de Ecuaciones Lineales

El procedimiento es: Dado un sistema de n ecuaciones con n incognitas.

a11 x1 + a12 x2 + ... + a1n xn = c1


a21 x1 + a22 x2 + ... + a2n xn = c2
..
.
an1 x1 + an2 x2 + ... + ann xn = cn
a este sistema se le puede representar de forma matricial
(5.1) A.X = C
, donde A ∈ Mn representa la matriz de coecientes, X es el vector de incógnitas
y R el vector de términos independientes de la igualdad. Tal que los vectores X, R
ALGEBRA LINEAL CON PYTHON 21

Algoritmo 12 Uso de solve() y librería linalg


from scipy import linalg
import numpy as np
A=np.array([[2,3],[-1,1]])
C=np.array([4,1])
x = linalg.solve(A,C)
print(x)
[0.2 1.2]

tienen n términos.
 
a11 a12 ··· a1n
 a21 a22 ··· a2n 
A= .. .. ..
 
. . .

 
an1 an1 ··· ann
   
x1 c1
 x2   c2 
X= ..  , C =  ..
   
.  .

  
xn cn
Al sistema también puede ser representado usando la matriz ampliada del siste-
ma:  
a11 a12 · · · a1n | e1
 a21 a22 · · · a2n | e2 
 .. .. .. . 
 
 . . . | .. 
an1 an1 · · · ann | en
Ejemplo 29. Sea el sistema
2x + 3y = 4
−x + y = 1
este se puede expresar como:
A.X = C
    
2 3 x 4
=
−1 1 y 1
esto se puede representar como la matriz ampliada:
   
2 3 | 4 1 0 | 1/5

−1 1 | 1 0 1 | 6/5

5.1. Resolución por método de eliminación Gaussiana.


Teorema 30. (Rouché-Frobenius) .
Un sistema de ecuaciones lineales AX = C , es compatible ssi el rango (A) es
igual al rango de la matriz ampliada (A|C). Por otro lado, un sistema compatible
con n incógnitas.
- Es determinado ssi rango (A)=rango (A|C) = n
- Es indeterminada ssi rango (A) = rango (A|C) < n
ALGEBRA LINEAL CON PYTHON 22

Al grado de libertad del sistema está dado por : n − rango (A). Y determina el
número de parámetros que denen las soluciones.
En resumen este teorema indica que para tener un sistema con solución el número
de ecuaciones debe ser igual o mayor al número de incógnitas.
Ejemplo 31. Determinar los parametros para que el sist. siguiente tenga solución
:

x1 + 3x2 − x3 = 4
2x1 + 4x2 + x3 = −2
2x1 + ax2 + 2x3 = 0
2x2 + x3 = −2
El sistema se lo puede representar como la matriz ampliada:
 
1 3 −1 | 4
 2 4 1 | −2 
 
 2 a 2 | 0 
0 2 1 | −2
Entonces para garantizar que el sistema tenga rango n = 3
   
1 3 −1 |4 1 3 −1 | 4
 2
 4 1 |−2  f2 = f2 − 2f1 ≈ 
 0 −2 3 | −10   f2 ↔ f4
 2 a 2 |0  f3 = f3 − 2f1  0 a−6 4 | −8 
0 2 1 |−2 0 2 1 | −2
   
1 3 −1 | 4 1 3 −1 | 4
 0 2 1 | −2   0 −2 3 | −10 
≈ 0 a − 6 4 | −8 
 ≈ 
 0 a−6 4 | −8  f3 = f3 − f4
0 −2 3 | −10 f4 = f4 + f2 0 0 4 | −12
   
1 3 −1 | 4 1 3 −1 | 4
 0 −2 3 | −10   0 −2 3 | −10 
≈ 0 a−6 0 |
 ≈  ≈
4  f3 ↔ f4  0 0 4 | −12  f3 /4
0 0 4 | −12 0 a−6 0 | 4
   
1 3 −1 | 4 1 3 −1 | 4
 0 −2 3 | −10   f2 = f2 − 3f1 ≈  0 −2 0 | −1   f2 = f2 / (−2)


 0 0 1 | −3   0 0 1 | −3 
0 a−6 0 | 4 0 a−6 0 | 4 f4 = f4 / (a − 6)
   
1 3 −1 | 4 1 3 −1 | 4
 0 1 0 | 1/2   0 1 0 | 1/2 

 0 0 1 |
 ≈ 
−3   0 0 1 | −3 
0 1 0 | 4/ (a − 6) f4 = f4 − f2 0 0 0 | 4/ (a − 6) − 1/2
para que el sistema tenga solución
hay que garantizar que el rang (A) = 3 => 4/ (a − 6) − 1/2 = 0
8 = a − 6 ∴ a = 14

También podría gustarte