Resolver sistemas de ecuaciones lineales con Python’s Numpy

    Numpy una biblioteca se puede utilizar para realizar una variedad de operaciones matem谩ticas / cient铆ficas, como encontrar productos de matriz de puntos y cruzados, valores de seno y coseno, Transformaci贸n de Fourier y manipulaci贸n de formas, etc. La palabra Numpy es una notaci贸n abreviada de “Numeric Python”.

    En este art铆culo, ver谩 c贸mo resolver un sistema de ecuaciones lineales utilizando la biblioteca Numpy Python.

    驴Qu茅 es un sistema de ecuaci贸n lineal?

    Wikipedia define un ecuaciones lineales del sistema como:

    En matem谩ticas, un sistema de ecuaciones lineales (o un sistema lineal) es una colecci贸n de dos o m谩s ecuaciones lineales que involucran el mismo conjunto de variables.

    El objetivo final de resolver un sistema de ecuaciones lineales es obtener los valores de las variables desconocidas. Aqu铆 hay un ejemplo de un sistema de ecuaciones lineales con dos variables desconocidas, x y y:

    Ecuaci贸n 1:

    4x  + 3y = 20
    -5x + 9y = 26
    

    Para resolver el sistema anterior de ecuaciones lineales, necesitamos los valores de la x y y variables. Hay varias formas de resolver un sistema de este tipo, como Eliminaci贸n de variables, Regla de Cramer, T茅cnica de reducci贸n de filas y Soluci贸n matricial. En este art铆culo, cubriremos la soluci贸n matricial.

    En la soluci贸n matricial, el sistema de ecuaciones lineales a resolver se representa en forma de matriz. AX = B. Por ejemplo, podemos representar la Ecuaci贸n 1 en forma de matriz de la siguiente manera:

    A = [[ 4   3]
         [-5   9]]
    
    X = [[x]
         [y]]
    
    B = [[20]
         [26]]
    

    Por el valor de x y y variables en la Ecuaci贸n 1, necesitamos encontrar los valores en la matriz X. Para hacer eso, podemos tomar el producto escalar inverso de la matriz Ay la matriz B Como se muestra abajo:

    X = inverse(A).B
    

    Si no est谩 familiarizado con c贸mo obtener una matriz inversa, consulte este enlace para comprender c贸mo hacerlo manualmente encontrar la inversa de matriz. Para comprender el producto de matriz de puntos, consulte Este art铆culo.

    Resolver un sistema de ecuaciones lineales con Numpy

    Por el art铆culo anterior, sabemos que necesitamos realizar dos operaciones para resolver un sistema de ecuaciones lineales: inversi贸n de una matriz y producto de una matriz de puntos. La biblioteca Numpy de Python admite ambas operaciones. Si a煤n no tiene una biblioteca Numpy instalada, puede hacer lo siguiente pip orden:

    $ pip install numpy
    

    Ahora veremos c贸mo resolver un sistema de ecuaciones lineales con la biblioteca Numpy.

    Usando los m茅todos inv () y dot ()

    Primero, encontramos la inversa de la matriz A que definimos en el art铆culo anterior.

    Primero creemos la matriz A y Python. Para crear una matriz, el array se puede utilizar el m茅todo del m贸dulo Numpy. Una matriz se puede considerar como una lista de listas en las que cada lista representa una fila.

    En el siguiente script creamos una lista llamada m_list, que adem谩s contiene dos listas: [4,3] y [-5,9]. Estas listas son los dos conjuntos de la matriz A. Para crear la matriz A y Numpy, el m_list reenviado al array m茅todo como se muestra a continuaci贸n:

    import numpy as np
    
    m_list = [[4, 3], [-5, 9]]
    A = np.array(m_list)
    

    Para obtener una matriz inversa, la matriz se pasa al linalg.inv() M茅todo del m贸dulo Numpy:

    inv_A = np.linalg.inv(A)
    
    print(inv_A)
    

    El siguiente paso es encontrar el producto escalar entre el inverso de la matriz Ay la matriz B. Es importante mencionar que un producto de matriz de puntos solo se puede hacer entre las matrices si las dimensiones internas de las matrices son las mismas es decir, el n煤mero de columnas de la matriz de la izquierda debe coincidir con el n煤mero de filas de la matriz de la derecha.

    Para obtener el producto escalar con la biblioteca Numpy, el linalg.dot() funci贸n utilizada. El siguiente script encuentra el producto escalar entre el inverso de la matriz A y la matriz B, que es la soluci贸n de la Ecuaci贸n 1.

    B = np.array([20, 26])
    X = np.linalg.inv(A).dot(B)
    
    print(X)
    

    Salida:

    [2. 4.]
    

    Seo 2 y 4 son los valores respectivos sin saberlo x y y en la Ecuaci贸n 1. Para verificar, si conecta 2 en lugar de lo desconocido x y 4 en lugar de lo desconocido y en una ecuaci贸n 4x + 3y, ver谩 que el resultado ser谩 20.

    Ahora resolvemos un sistema de tres ecuaciones lineales, como se muestra a continuaci贸n:

    4x + 3y + 2z = 25
    -2x + 2y + 3z = -10
    3x -5y + 2z = -4
    

    La ecuaci贸n anterior se puede resolver utilizando la biblioteca Numpy de la siguiente manera:

    Ecuaci贸n 2:

    A = np.array([[4, 3, 2], [-2, 2, 3], [3, -5, 2]])
    B = np.array([25, -10, -4])
    X = np.linalg.inv(A).dot(B)
    
    print(X)
    

    En el gui贸n de arriba est谩 el linalg.inv() y el linalg.dot() los m茅todos est谩n encadenados. La variable X la soluci贸n para la Ecuaci贸n 2 est谩 ah铆, y se imprime de la siguiente manera:

    [ 5.  3. -2.]
    

    El valor de lo desconocido x, yy z que son 5, 3 y -2, respectivamente. Puede insertar estos valores en la Ecuaci贸n 2 y verificar su precisi贸n.

    Usando el m茅todo de soluci贸n ()

    En los dos ejemplos anteriores, usamos linalg.inv() y linalg.dot() m茅todos para encontrar la soluci贸n del sistema de las ecuaciones. sin embargo, el linalg.solve() m茅todo, que se puede utilizar para encontrar la soluci贸n del sistema de ecuaciones lineales directamente:

    A = np.array([[4, 3, 2], [-2, 2, 3], [3, -5, 2]])
    B = np.array([25, -10, -4])
    X2 = np.linalg.solve(A,B)
    
    print(X2)
    

    Salida:

    [ 5.  3. -2.]
    

    Ver谩 que la salida es la misma que antes.

    Un ejemplo del mundo verdadero

    Veamos c贸mo se puede utilizar un sistema de ecuaciones lineales para resolver problemas de la vida real.

    Por ejemplo, un vendedor de frutas vendi贸 20 mangos y 10 naranjas en un d铆a por un total de $ 350. Al d铆a siguiente vendi贸 17 mangos y 22 naranjas por $ 500. Si los precios de la fruta se mantuvieron sin cambios en ambos d铆as, 驴cu谩l fue el precio de un mango y una naranja?

    Este problema se puede resolver f谩cilmente con un sistema de dos ecuaciones lineales.

    Digamos que el precio del mango es uno x y el precio es una naranja y. El problema anterior se puede convertir de la siguiente manera:

    20x + 10y = 350
    17x + 22y = 500
    

    La soluci贸n del sistema de ecuaciones se muestra arriba:

    A = np.array([[20, 10], [17, 22]])
    B = np.array([350, 500])
    X = np.linalg.solve(A,B)
    
    print(X)
    

    Y aqu铆 est谩 la salida:

    [10. 15.]
    

    El resultado muestra que el precio de un mango es de $ 10 y el precio de una naranja es de $ 15.

    Conclusi贸n

    El art铆culo explica c贸mo resolver un sistema de ecuaciones lineales utilizando la biblioteca Numpy Python. Puedes usar cualquiera de ellos linalg.inv() y linalg.dot() m茅todos en una cadena para resolver un sistema de ecuaciones lineales, o puede solve() m茅todo. El solve() el m茅todo es la mejor manera.

    .

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *