Se puede usar python por medio de NumPy para resolver estos sistemas de ecuaciones por medio de matrices.
Las ecuaciones que se quieren resolver son:
3x+9y-10z = 24
x-6y+4z = -4
10x-2y+8z = 20
Estas ecuaciones se pueden representar como un sistema de Matrices como A*x=B, donde si se desea resolver la matríz x se aplica la inversa de A, x = inv(A)*B. Donde A para nuestro caso es [[3 9 -10][1 -6 4][10 -2 8] y B es [[24][-4[[20]].
El código para resolver el sistema de ecuaciones es el siguiente:
#!/usr/bin/env python
#Se importa numpy como np
import numpy as np
#Se define los valores de la matriz A
A = np.matrix([[3,9,-10],[1,-6,4],[10,-2,8]])
#Se definen los valores de la matriz B
B = np.matrix([[24],[-4],[20]])
#Se calcula el valor de X con X=inv(A)*B
X = A**(-1)*B
#Se muestra el resultado
print("El resultado de X es:",X)
#Para verificar el resultado se calcula X*A y debe dar B
print("El resultado de A*X es B-> ",A*X)
El resultado de ejecutar el script se muestra a continuación:
('El resultado de X es:', matrix([[ 2.99029126],
[ 0.40776699],
[-1.13592233]]))
('El resultado de A*X es B-> ', matrix([[ 24.],
[ -4.],
[ 20.]]))
Hay un problema a la hora de calcular la matriz inversa y es que no todas las matrices pueden ser invertidas, así que está solución no funciona para todos los casos. La solución es usar la función numpy.linalg.svd .
El código siguiente en vez de usar la clase matrix usará la clase array y usar la función numpy.linalg.svd.
#!/usr/bin/env python
#Se importa numpy como np
import numpy as np
#Se define los valores de la matriz A
A = np.array([[3,9,-10],[1,-6,4],[10,-2,8]])
#Se definen los valores de la matriz B
B = np.array([[24],[-4],[20]])
#Se calcula el valor de X con X=inv(A)*B
X = np.linalg.inv(A).dot(B)
#Se muestra el resultado
print("El resultado de X es:",X)
El resultado es el siguiente:
('El resultado de X es:', array([[ 2.99029126],
[ 0.40776699],
[-1.13592233]]))
Así pues el valor de x es 2.99, el de y es 0.407 y el de z es -1.1359, mostrado con 2 procedimientos distintos.
El código de estos 2 ejemplos lo pueden encontrar en el repositorio de bitbucket de códigos de este blog.
No hay comentarios:
Publicar un comentario