Comprobación gráfica de sistemas de ecuaciones lineales
Resumen
En esta clase aprenderemos cómo plantear un sistema de ecuaciones de forma matricial y realizar el proceso para comprobar su solución. Al final nos preguntaremos si existe una operación o elemento para realizar la **división **entre matrices para obtener la solución de un sistema de ecuaciones.
tengan cuidado. lo que el profesor puso al final de x =b/? es un error tremendo a pesar de que lo hace solo con fines educativos. Realmente la división de vectores o matrices "NO EXISTE".
la división no existe, se usa solo para fines educativos
La división de matrices se define como el producto del numerador multiplicado por la matriz inversa del denominador. Es decir, sean las matrices A y B tal queA/B = AB**(-1):
Si una matriz está dividida entre un escalar, todos los términos de la matriz quedarán divididos por ese escalar.
ACLARACION: Al final de la clase el profesor hace un despeje dudoso ya que se esta trabajando con matrices, como tenemos Ax = b = (Matriz 2x2)(Matriz 2x1) = (Matriz 2x1). Lo correcto para despejar la matriz (o vector) x seria multiplicar por la izquierda la inversa de A y por tanto nos quedaria como: x = A_inv * b
import numpy as np
A= np.array([[-3,1],[-2,1]])b = np.array([5,3])A_inv= np.linalg.inv(A)
El valor de x es
x =A_inv.dot(b)print(x)
output
array([-2.,-1.])
Lo cual coincide analíticamente con nuestros resultados.
Aqui un complemento:
.
Gracias
Equivalencia entre sistemas de ecuaciones y multiplicación de matrices
Sistema de Ecuaciones lineales:
Podemos resolver un sistema de ecuaciones lineales a través de una operación matricial. La ventaja de este método es que es mucho más ordenado y transferible a la computadora.
La representación matricial AX=B es equivalente a un sistema de ecuaciones puesto que el producto interno también se puede ver como combinaciones lineales.
Nota:
Representación gráfica de rectas a través de matplotlib (plt)
x = xp.arange(0,5,1)#genera un intervalo de datos con (inicio, fin, pasos)y =3*x +2#genera los las coordenadas y a traves de las coordenadas xplt.figure()#genera el graficoplt,plot(x,y)#genera el grafico con las coordenadas indicadas (se puede generar mas de una)plt.xlim(0,5)#limites del eje xplt.ylim(-5,-5,)#limites del eje yplt.axvline(x=0, color ='grey')#eje verticalplt.axhline(y=0, color ='grey')#eje horizontal
Tenía un par de errores, y lo puse para que grafieque facilmente.
%matplotlib inline
import numpy as np
import matplotlib.pyplotas plt
x = np.arange(-5,5,1) #genera un intervalo de datos con(inicio, fin, pasos)y =3*x +5 #genera los las coordenadas y a traves de las coordenadas x
z =2*x +3 #genera los las coordenadas y a traves de las coordenadas y
plt.figure() #genera el grafico
plt.plot(x,y) #genera el grafico con las coordenadas indicadas(se puede generar mas de una)plt.plot(x,z)plt.xlim(-5,5) #limites del eje x
plt.ylim(-5,5) #limites del eje y
plt.axvline(x=0, color ='grey') #eje vertical
plt.axhline(y=0, color ='grey') #eje horizontal
Si alguien quiere resolver el sistema de ecuaciones con NumPy, aquí está el código:
este curso ha estado bastante interesante, le deberian poner en el titulo numpy porque si se aprende bastante de np y sus funciones
Hola compañeros! 👋, a continuación les dejo mis apuntes sobre la representación matricial de un sistema de ecuaciones lineales, la base es justamente el ejercicio que se ve en la clase.
Representación matricial
Un sistema de ecuaciones lineales puede representarse en un formato matricial, esto nos ayuda a resolver este sistema de forma "programática" utilizando herramientas especializadas como numpy, así podremos obtener los valores de x y y sin hacerlo a lápiz y papel.
Si deseamos representar las ecuaciones del ejemplo en un formato matricial, debemos dejar a las variables en el mismo lado de la igualdad.
Entonces las ecuaciones quedarían así:
Para representar un sistema de ecuaciones lineales en matrices necesitamos 3 crear matrices a partir de las ecuaciones que ya tenemos:
Matriz de coeficientes (A): Esta conformada por los coeficientes que acompañan a las variables.
Matriz de variables(X): Esta conformada por las variables del sistema de ecuaciones.
Matriz de constantes(B): Esta conformada por los valores constantes de las ecuaciones.
El sistema de ecuaciones lineales anterior al representarlo en un formato matricial nos quedaría la siguiente expresión: AX = B o bien:
Ya que sabemos como se ve la representación matricial de nuestro sistema de ecuaciones, podemos resolverlo utilizando numpy.
Antes de continuar debemos tener en cuenta, que ya conocemos los valores que conforman las matrices A (coeficientes) y B (constantes), pero nos falta conocer que valores conforman a la matriz de variables X, eso es justamente lo que hace el código de abajo:
A= np.array([[-3,1],[-2,1]]) # Matriz de coeficientes
B= np.array([5,3]) # Matriz de constantes
X= np.linalg.solve(A,B)print("La solución al sistema de ecuaciones lineales:")print(f"x = {round(X[0])}", f"y = {round(X[1])}", sep="\n")```El resultado que obtenemos es: `x =-2` y `y =-1`Donde los valores `x =-2` y `y =-1` representan la coordenada `(-2,-1)` donde las gráficas de las ecuaciones se interceptan.
Para comprobarlo pasemos a su respectiva visualización:
```python
plt.plot(x,y_1)plt.plot(x, y_2)plt.xlim(-5,5)plt.ylim(-5,5) # Intersección entre las ecuaciones
plt.vlines( x=X[0], ymin=X[1], ymax=0, linestyle="dashed", color="black")plt.hlines( y=X[1], xmin=0, xmax=X[0], linestyle="dashed", color="black")plt.plot(-2,-1,"ro")plt.axvline(x=0, color="grey")plt.axhline(y=0, color="grey")plt.show()
Espero este aporte les sea de utilidad, #NuncaParenDeAprender
Made with 💜 by Paho!
Otra opción para resolver sistemas de ecuaciones con matrices es con el uso de determinantes les dejo un ejemplo por si a alguien le interesa:
Esa es la regla de Cramer :D
Wao que gran clase, nunca había visto esta forma de comprobación.
Hacer las operaciones con matrices ofrece una gran ventaja para resolverlas de forma computacional. De hecho, es una de sus principales aplicaciones.
Al tener todo expresado como matrices, el sistema de ecuaciones se convierte en una simple ecuación que se resuelve con un despeje. Debido a que no existe tal cosa como "división de matrices" lo que se hace es obtener la matriz inversa.
import numpy as np
import numpy.linalgas lin #librería para obtener la inversa
import matplotlib.pyplotas plt
A= np.array([[-3,1],[-2,1]])C= np.array([[5],[3]])B= lin.inv(A) @ Cprint(B)
Como resultado de este despeje, es la matriz B que es la que contiene las incógnitas.
[[-2.][-1.]]
Por si a alguien le interesa, hasta aca todo se puede hacer con Deepnote en lugar de Jupyter.
Otra forma de resolver ecuaciones usando la librería numpy:
3*x + y = 1
1x + 2y = 0
import numpy as np
ig = np.array([1,0]) coe = np.array([[3,1],[1,2]]) solv = np.linalg.solve(coe, ig) x = solv[0] y = solv[1]{'x':x,'y':y}
no entiendo por que en casi todos los cursos que usan jupyter colocan matplotlib inline si de todas formas sin colocarlo te muestra la figura que estas formando abajo
Hola 👋🏼
Me parece que es por cuestión de buenas prácticas, y creo que en versiones anteriores, efectivamente, no lo mostraba si no lo ponías
Hola, si te pareció frustrante esta clase como a mi.(mas que todo al ver los comentarios de personas que ya estan en este ambito).
no te preocupes.
solo trata de entender lo que el profesor esta haciendo con los conocimientos que ya tienes.
si no entiendes nada sobre despeje de ecuaciones lineales.
dale, ve al curso de fundamentos matematicos en platzi.(https://platzi.com/cursos/fundamentos-matematicas/)
ahora, lo que hizo el profesor es lo siguiente.
identificó el problema y lo graficó en python(algo que ya tu conoces).
comprobó la informacion con despejando Y.
implementó el 2 punto en el concepto de matrices.
Dale, que puedes, es complejo al inicio por la familiarizacion de terminos y procesos.
pero, dale, sigue.
El hecho que las dos funciones tengan un punto donde se crucen hacen verdadera la solución de las dos ecuaciones al mismo tiempo.
Como lo planteas hubiese compatibilizado los resultados del profesor, la idea simplemente es mantener una nomenclatura comun ya sea cambies sol_1 (como hiciste) o cambies B a vector.
Hola gente, como podriamos aplicar esto a un ejemplo concreto de data science? Pregunto desde el desconocimiento, ya que nos explican conceptos matematicos avanzados y no sabria en donde aplicarlos!
¿Alguien sabe como cuadricular nuestro eje de coordenada?
importando matplotlib.pyplot as plt
puedes usar la funcion plt.grid() , la cual crea una cuadrícula
porque la sol_1 no es igual np.array([[5],[3]]) y es np.array([5,3])???
Debe ser así ya que la solución es un vector. Si fuese np.array([[5],[3]]) sería una matriz de 2 filas y 0 columnas.
Porque definió a 'b' como una matriz ([[5],[3]]) y no como vector ([5,3]). Para este caso es interpretado como lo mismo pues un vector puede operar con matrices como si fuese una matriz vertical u horizontal adaptativamente (se puede probar en numpy).