Etiqueta: Sistemas Lineales

  • Singularidad, dependencia lineal y el determinante

    Uno de los mayores errores al aprender álgebra lineal es pensar que trata de números, fórmulas y cálculos. Esa es solo la superficie. En realidad, lo que estás aprendiendo es algo mucho más poderoso: cómo interpretar y combinar información.

    El lenguaje de las ecuaciones

    Para entenderlo, hay que hacer un pequeño cambio de perspectiva. Una ecuación no es una operación. Es una afirmación sobre la realidad. Es una sentencia, \( x+y=10 \), está diciendo: “hay dos cantidades cuya suma es 10”.

    Con base en esta afirmación, piensa en una ecuación como una oración que describe al mundo:

    • El perro es negro.
    • El gato es naranja.

    Ambas son sentencias que aportan información y al combinarlas tienes un conjunto de afirmaciones que combinadas te permiten deducir información al igual que un sistema de acuaciones.

    Cuando aparece el sistema: combinar información

    Imagina que estás resolviendo un problema como si fuera un pequeño caso de investigación. Tienes varias pistas y cada una aporta información parcial. Una pista puede decirte algo genérico, otra puede acotar un poco más, y juntas empiezan a dibujar una imagen más precisa. Eso es exactamente lo que hace un sistema de ecuaciones: combinar piezas de información para reducir la incertidumbre.

    Pero no todas las combinaciones de información funcionan igual. Y aquí es donde el álgebra deja de ser mecánica y empieza a ser lógica. Cuando juntas varias sentencias, solo pueden pasar tres cosas:

    1. Que cada nueva ecuación aporte algo distinto y coherente con lo anterior. En ese caso, el sistema converge hacia una única solución, se denomina sistema no singular. En términos matemáticos, el sistema es completo, consistente y determinado. En términos prácticos, tienes suficiente información bien estructurada.
    2. Las sentencias no se contradicen, pero tampoco aportan nada nuevo. Es como si alguien repitiera la misma pista con otras palabras; se denomina sistema singular. En matemáticas esto se traduce en ecuaciones dependientes, y el resultado es que no hay una única solución, sino infinitas.
    3. Las sentencias se contradicen. Una dice una cosa y otra dice lo contrario, se denomina también sistema singular. En ese momento, el sistema deja de tener sentido. Has construido una realidad imposible.

    Los tres comportamientos posibles

    Sistema completo, no singular

    Cada ecuación aporta información nueva. No se repiten, no se contradicen. Se refuerzan. En ese caso, el sistema converge hacia una única solución. Esto significa que has descrito la realidad con suficiente precisión como para identificar un único resultado. Geométricamente, si quieres visualizarlo, es el punto donde las líneas se cruzan.

    En un sistema de ecuaciones, por ejemplo, que simula una compra de peras y bananas, donde tenemos que descubrir el precio de cada una. El primer día se compran 1 pera y 1 banana por 10€; el día 2 se compran 1 pera y 2 bananas por 12€.

    $$ a + b = 10$$

    $$ a + 2b = 12$$

    Solución única: \( a = 8, b = 2 \)

    Sistema redundante, singular

    Aquí ocurre algo más sutil. Las ecuaciones no están mal. No hay contradicción. Pero una no aporta nada nuevo respecto a la otra. En ese caso, el sistema no falla, pero tampoco se define completamente. Tienes infinitas soluciones. No porque el sistema sea incorrecto, sino porque no tienes suficiente información independiente.

    En este caso la compra se expresa así:

    $$ a + b = 10$$

    $$ 2a + 2b = 20$$

    Infinitas soluciones, todos los conjuntos de dos números que sumen 10.

    Sistema contradictorio, singular

    Aquí el sistema se rompe. Una ecuación afirma algo, la otra afirma lo contrario. No existe ningún valor que pueda satisfacer ambas simultáneamente. Y esto no es un problema de cálculo. Es un problema lógico.

    En este caso la compra se expresa así:

    $$ a + b = 10$$

    $$ 2a + 2b = 24$$

    No hay soluciones posibles.

    Veamos este sistema de sentencias en un pequeño test:

    • Entre el perro, el gato y el ave, uno es rojo
    • Entre el perro, el gato, uno es naranja
    • El perro es negro

    Preguntas:

    • ¿De qué color es el ave?
    • ¿Es un sistema singular o no singular?

    Cada sentencia del sistema va descubriendo con la solución de cada sentencia. Ninguna de las sentencias por sí sola permite llegar a la solución. Es la combinación progresiva de información la que va acotando el problema hasta hacerlo determinable.

    Desde el punto de vista del álgebra lineal, este sistema es no singular. ¿Por qué? Porque cada sentencia aporta información nueva y no redundante. No hay contradicciones ni repeticiones. El sistema está bien definido y conduce a una única solución posible.

    En un dataset real, cada registro funciona como una sentencia. Cada variable añade contexto, y el modelo lo único que hace es combinar esas “afirmaciones” para encontrar patrones. Si las sentencias son coherentes y aportan información distinta, el modelo puede aprender. Si son redundantes, el modelo se vuelve ineficiente. Y si son contradictorias, el modelo simplemente no puede construir una representación fiable de la realidad.

    Los sistemas de ecuaciones representados gráficamente

    La singularidad solo depende de la matriz de coeficientes:

    Las constantes no importan a la hora de determinar la singularidad. Si los lleváramos todos a 0, mantendrían la singularidad.

    Ecuaciones dependientes e independientes

    La dependencia lineal está relacionada con lo que vimos anteriormente sobre si las ecuaciones aportan información nueva o están repitiendo lo mismo.

    Dependencia Lineal

    Un conjunto de ecuaciones (o una matriz) es linealmente dependiente si:

    • Una de ellas puede obtenerse a partir de las otras mediante multiplicaciones o sumas.

    Ejemplo básico:

    $$ x + y = 1$$

    $$2x + 2y = 2$$

    o lo que es lo mismo

    $$A = \begin {bmatrix} 1 & 1 \\ 2 & 3 \end{bmatrix}$$

    Revela que la segunda ecuación es simplemente: \( 2 \cdot (x + y)\)

    • No aporta información nueva
    • Es redundante

    Conclusión: dependencia lineal

    Caso más sutil (nivel siguiente)

    No siempre es un múltiplo directo:

    $$\text{Fila 2} = \frac{\text{Fila 1} + \text{Fila 3}}{2}$$

    • Sigue siendo dependencia lineal
    • Porque una fila se construye con otras

    Independencia lineal

    Un conjunto de ecuaciones (o una matriz) es linealmente independiente si:

    • Ninguna ecuación puede construirse a partir de las demás

    Ejemplo básico:

    $$x + y = 1$$

    $$x – y = 3$$

    en forma matricial:

    $$A = \begin {bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}$$

    No existe ningún número que permita convertir una ecuación en la otra.

    • Cada una aporta información diferente
    • Conclusión: independencia lineal

    Relación con singularidad

    • Dependencia lineal → matriz singular
    • Independencia lineal → matriz no singular

    En ciencia de datos:

    • Dependencia → variables redundantes
    • Independencia → variables útiles

    El rango: cómo medir la información de un sistema

    Hasta ahora has visto algo muy importante: no todas las frases (o ecuaciones) aportan lo mismo. Algunas añaden información nueva y otras simplemente repiten lo que ya sabemos. Pero en matemáticas —y especialmente en machine learning— necesitamos medir esa información de forma precisa. Esa información nos la brinda el rango de una matriz

    Recuerda los sistemas de frases que vimos:

    • “El perro es negro”
    • “El gato es naranja”

    Este sistema aporta dos piezas de información independientes.

    Sin embargo:

    • “El perro es negro”
    • “El perro es negro”

    Aquí solo hay una pieza de información real.

    Y en el caso más extremo, otros sistemas no aportan ninguna información útil para el problema que queremos resolver.

    ¿Qué es el rango?

    El rango traduce exactamente esa idea al lenguaje matemático: El rango de un sistema (o de su matriz) es la cantidad de información independiente que contiene.

    • Cuenta cuántas ecuaciones realmente aportan algo nuevo.
    • Ignora las que son redundantes o no aportan información útil.

    Conexión con sistemas de ecuaciones

    RangoQué significaSoluciones
    AltoMucha informaciónMuy restringidas
    MedioAlgo de redundanciaInfinitas soluciones
    BajoPoca o ninguna informaciónMáxima libertad

    Interpretación geométrica (clave en machine learning)

    Este concepto no es solo algebraico, también es geométrico:

    • Rango máximo → las soluciones se reducen a un punto
    • Rango intermedio → las soluciones forman una línea
    • Rango bajo → las soluciones ocupan un plano o más dimensiones

    Esto es exactamente lo que ocurre cuando entrenas modelos:

    • Más información → modelo más definido
    • Menos información → más incertidumbre

    Cómo se calcula el rango en la práctica

    Para calcular el rango no necesitas analizar ecuación por ecuación.

    En su lugar, haces lo siguiente:

    1. Transformas la matriz usando operaciones de fila
    2. La llevas a una forma más simple (forma escalonada)
    3. Cuentas cuántas filas siguen siendo útiles

    En machine learning, este concepto aparece constantemente:

    • Compresión de imágenes
    • Reducción de dimensionalidad
    • Eliminación de ruido
    • Modelos más eficientes

    De hecho, muchas técnicas avanzadas se basan en reducir el rango sin perder la información esencial.

    El determinante

    Otra forma para saber si un sistema es singular es a través del determinante. Un número que se calcula a partir la matriz y que te dice inmediatamente:

    • Si es 0 → matriz singular
      • Una fila es combinación de otra
      • Hay dependencia lineal
      • El sistema no tiene solución única
    • Si es ≠ 0 → matriz no singular
      • Filas independientes
      • Solucion unica

    Calcular el determinante

    Dada una matriz 2×2:

    $$\begin{bmatrix} a & b \\ c & d \end{bmatrix}$$

    El determinante es: \( ad – bc \).

    Matrices mas grandes

    El proceso es similar, pero con más diagonales,

    $$\begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}$$

    Primer diagonal: \( a * e * i \).

    Segundo diagonal: \( b * f * g \).

    Tercer diagonal: \( c * d * h \).

    Luego se realiza la operación de sustracción a la inversa:

    $$\begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}$$

    $$Det = (a * e * i) + (b * f * g) + (c * d * h)$$

    $$- (c * e * g) – (f * h * a) – (b * d * i)$$

    Atajo para el de las matrices con ceros debajo de la diagonal.

    Cuando una matriz tiene solo ceros debajo de la diagonal central, hace que todos los cálculos de las diagonales restantes sean 0 excepto el de la diagonal principal y el determinante será el resultado de este.

    Ejemplo: el resultado del determinante en esta matriz es 6 (1 *2*3).

    ¿Cómo se ve esto en el mundo de los datos?

    Lenguaje NaturalÁlgebra LinealCiencia de Datos
    SentenciaEcuación (Fila)Registro / Observación
    SujetosVariables Características (Features)
    ConsistenciaDeterminante Datos limpios y útiles
    RedundanciaDependencia LinealMulticolinealidad (Ruido)

    Y cuando operas con matrices, lo que estás haciendo en realidad es manipular información estructurada. Si programas un modelo de Machine Learning sin entender esto, tendrás problemas:

    1. Datos Redundantes: Si le das a tu modelo el “Salario Mensual” y el “Salario Anual”, no está aprendiendo más. Estás desperdiciando potencia de cómputo en información repetida (Multicolinealidad).
    2. Datos Contradictorios: Si en tu base de datos el mismo cliente aparece con 20 años y con 70 años en la misma compra, el modelo se confunde y falla.
    3. El Rango de la Matriz: En álgebra, el “Rango” es simplemente el número de pistas reales y únicas que tienes. Si tienes 100 ecuaciones pero el rango es 2, en realidad solo tienes 2 pistas útiles y 98 ecos.

  • Ecuaciones lineales la clave de la ciencia de datos

    ¿Por qué las ecuaciones lineales son clave en data science?

    Las ecuaciones lineales y los sistemas lineales son como el esqueleto de la data science. Son la base de algoritmos como la regresión lineal, los sistemas de recomendación y el análisis de datos en general. Imagina que cada punto de datos es una pieza de un rompecabezas: las ecuaciones lineales te ayudan a juntar las piezas para descubrir patrones.

    “Sin ecuaciones lineales, no habría machine learning moderno. Son el primer paso para transformar datos en decisiones.”

    ¿Qué es una ecuación lineal?

    Una ecuación lineal es una ecuación donde las variables están elevadas a la potencia 1 y multiplicadas por un coeficiente (no hay cuadrados ni raíces) y se combinan con sumas o restas.

    Ejemplo Simple

    $$3x + 2y = 30$$

    Como concepto está bien. ¿Pero cuál es el sentido de esto? ¿De dónde sale? La idea base de la ecuación lineal es una relación constante entre dos cosas. La ecuación lineal nace cuando dos magnitudes cambian de forma proporcional.

    Por ejemplo:

    Si vendes café a 2€ cada uno, el ingreso total depende linealmente del número de cafés vendidos.

    $$Ingreso = 2 \times \text{Número de cafés}$$

    Esto puede escribirse matemáticamente como

    $$y = 2x$$

    Donde:

    • xy: Variables (Ingreso, Café).
    • 2: Coeficientes (pesos de las variables)

    Esa es una relación lineal: cada vez que \(x\) aumenta 1, \(y\) aumenta 2. La tasa de cambio es constante. Visualmente esta ecuación representa una línea recta en un plano. Cada solución \((x, y)\) es un punto en esa línea.

    De ahí el nombre de lineal, porque describe una relación que se representa como una línea recta en un gráfico. Las ecuaciones lineales modelan situaciones donde:

    • El cambio es constante,
    • La relación entre variables es directa o proporcional.

    Por eso son la base de la modelización matemática, antes de llegar a modelos más complejos, todo empieza por asumir una relación lineal.

    Representar las ecuaciones

    En la forma general o modelo pendiente e intersección, toda ecuación lineal puede escribirse así:

    $$y=mx+b$$

    Donde:

    • \(b\) –> es el valor inicial o intersección con el eje Y: el valor de \(y\) cuando \(x=0\).
    • \(y\) –> valor en el eje vertical (dependiente)
    • \(x\) –> valor en el eje horizontal (independiente)
    • \(m\) –> es la pendiente, cuánto cambia \(y\) cuando \(x\) aumenta una unidad.
      • Si \(m > 0\) –> sube hacia la derecha (creciente)
      • Si \(m < 0\) –> baja hacia la derecha (decreciente)
      • Si \(m = 0\) –> la recta es horizontal
    grafica con los tipos de pendientes
    Código de la gráfica

    Código Python con Matplotlib

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(8,8))
    ax.axline((0, 1), slope=2, color="red", linewidth=1, label="Creciente")
    ax.axline((0, -1), slope=-3, color="green", linewidth=1, label="Decreciente")
    ax.axline((0, 3), slope=0, color="blue",linewidth=1, label="Horizontal")
    
    # Ejes en el centro
    ax.spines['left'].set_position('zero')   # eje Y en x=0
    ax.spines['bottom'].set_position('zero') # eje X en y=0
    
    # Quitar bordes superior y derecho
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    
    # Cambiar color y grosor de los ejes (spines)
    for spine in ['left', 'bottom']:
        ax.spines[spine].set_color('black')
        ax.spines[spine].set_linewidth(2)
    
    # Límites y cuadrícula
    ax.set_xlim(-10, 10)
    ax.set_ylim(-10, 10)
    
    # tamaño de los numeros
    ax.tick_params(axis='both', which='major', labelsize=10)
    
    # Etiquetas y leyenda
    ax.set_xlabel(r"$x$", fontsize=14, loc="right")
    ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)
    ax.legend()
    ax.set_title("Tipos de pendientes", pad=20)
    ax.legend(facecolor='none', edgecolor='none')
    ax.grid(False)
    plt.savefig("pendientes.png", transparent=True, dpi=300)
    plt.show()

    ¿Por qué las pendientes siempre avanzan a la derecha?

    Esto tiene que ver con cómo definimos el sistema de coordenadas cartesianas y el concepto de pendiente. Vamos a desglosarlo paso a paso:

    1. La pendiente mide cuánto cambia \(y\) cuando \(x\) cambia una unidad.
    2. Cuando calculamos la pendiente avanzamos de izquierda a derecha en el eje \(x\).
    3. Entonces la pendiente se interpreta como el cambio vertical que ocurre al movernos a la derecha.
    4. Por eso, al dibujar la recta, decimos que “avanza a la derecha” y sube o baja según \(x\).
    5. Si quisieras avanzar a la izquierda, sería simplemente \(x<0\) y la pendiente seguiría siendo la misma, solo que la “mirada” sería desde el otro extremo.

    En otras palabras: no es que la recta no exista hacia la izquierda, sino que matemáticamente la pendiente se mide tomando \(Δx\) (variación de x) positivo, lo que corresponde a moverse hacia la derecha.

    El sentido algebraico: equilibrio

    Desde el punto de vista algebraico, una ecuación es una igualdad entre dos expresiones que mantiene un equilibrio. Una ecuación lineal representa un equilibrio simple, sin potencias ni productos entre variables:

    $$2x+3y=30$$

    Significa que existen valores de \(x\) y \(y\) para los cuales la expresión de la izquierda \(2x+3y\)) tiene el mismo valor que el número de la derecha (30).

    • Cada punto \((x,y)\) que cumple esa igualdad está en equilibrio: pertenece a la recta.
    • Ambos lados deben ser iguales para que la ecuación se cumpla.
    • Una ecuación representa una condición de equilibrio o una restricción sobre los valores posibles de las variables.

    Desde el punto de vista algebraico, lo que hacemos con una ecuación es buscar los valores de las variables que la hacen verdadera. A eso lo llamamos resolver la ecuación. En este caso: \(2x+3y=30\) no tiene una única solución, sino infinitas combinaciones de \((x,y)\) que cumplen la igualdad (todas las que están sobre la recta).

    Si representamos todos los puntos \((x,y)\) que cumplen esa ecuación, obtenemos una recta en el plano cartesiano. Así, una ecuación lineal de dos variables es la expresión algebraica de una recta.

    Ejemplo: Ecuación lineal de las frutas

    Un problema clásico seria resolver cuantas manzanas y naranjas podemos comprar con 30€, donde las manzanas tienen un precio de 2€ y las naranjas de 3€. (Supón que puedes fraccionar las frutas).

    Este problema se resuelve con un ecuación lineal que se representa como sigue:

    $$2x + 3y = 30$$

    Donde:

    • 2 y 3 –> son los coeficientes (precios de las frutas)
    • \(x\)–> variable que representa las manzanas
    • \(y\) –> variable que representa las naranjas
    • 30 –> es el termino independiente (la constante)

    Representamos la ecuación en la forma general \(y=mx+b\):

    $$3y = -2x + 30$$

    Pasamos el 3 dividiendo y calculamos:

    $$y = \frac{2}{3}x – \frac{30}{3}$$

    $$y = -\frac{2}{3}x + 10$$

    Aquí tenemos:

    • \(m = – \frac{2}{3}\) –> pendiente de la recta.
    • \(b = 10\) –> la ordenada en el origen, o sea el punto donde la recta corta el eje Y.
    • Cuando \(x=0\): \(y=10\) –> la recta pasa por el punto \((0, 10)\).
    • Cuando \(y=0\): \(x=15\) → la recta pasa por el punto (15, 0):

    $$2x + 3y = 30$$

    $$2x + 3(0) = 30$$

    $$2x = 30$$

    $$2x = \frac{30}{2}$$

    $$x = 15$$

    Entonces tenemos ya dos puntos \((0,10)\) y \((15,0)\). Con estos dos puntos podemos trazar una recta que representa la ecuación. Cada punto en la recta, es una combinación de manzanas(\(x\)) y naranjas (\(y\)) que equivalen a una compra de 30€.

    Podemos calcular mas combinaciones de frutas posibles eligiendo los valores de \(x\) y calculando \(y\) en la ecuación de la forma pendiente – intersección.

    Por ejemplo, si \(x = 6\):

    $$y = – \frac{2}{3}x + 10$$

    $$y = – \frac{2}{3}(6) + 10$$

    $$y = – \frac{12}{3} + 10$$

    $$y = – 4 + 10 = 6$$

    Otra combinación de frutas y punto en la grafica seria \((6,6)\). Representemos gráficamente la ecuación.

    Código de la gráfica

    Código Python de Matplotlib

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(8,8))
    ax.axline((0, 10), slope=-2/3, color="red", linewidth=2, label=r"$y = -\frac{2}{3}x + 10$")
    
    # Puntos específicos
    puntos = [(15,0), (0,10), (6,6)]
    for x, y in puntos:
        ax.plot(x, y, 'ko', markersize=6)              # dibujar punto
        ax.text(x + 0.5, y + 0.5, f"({x},{y})", fontsize=10, color='black')
    
    # Ejes en el centro
    ax.spines['left'].set_position('zero')   # eje Y en x=0
    ax.spines['bottom'].set_position('zero') # eje X en y=0
    
    # Quitar bordes superior y derecho
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    
    # Cambiar color y grosor de los ejes (spines)
    for spine in ['left', 'bottom']:
        ax.spines[spine].set_color('black')
        ax.spines[spine].set_linewidth(2)
    
    # Límites y cuadrícula
    ax.set_xlim(-20, 20)
    ax.set_ylim(-20, 20)
    
    # tamaño de los numeros
    ax.tick_params(axis='both', which='major', labelsize=10)
    
    # Etiquetas y leyenda
    ax.set_xlabel(r"$x$", fontsize=14, loc="right")
    ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)
    ax.legend()
    ax.set_title("Grafica de la Ecuación", pad=20)
    ax.legend(facecolor='none', edgecolor='none')
    ax.grid(False)
    plt.savefig("ecuacion de las frutas.png", transparent=True, dpi=300)
    plt.show()

    Este sencillo problema de manzanas y naranjas nos muestra cómo las ecuaciones lineales nos permiten modelar relaciones entre variables de manera clara y predecible. Cada punto en la recta representa una combinación posible que satisface la restricción del problema (gastar 30 €), y la pendiente nos indica cómo cambiaría una variable si ajustamos la otra.

    En ciencia de datos y machine learning, este mismo concepto es fundamental: buscamos modelar relaciones entre variables para poder predecir, optimizar o tomar decisiones basadas en datos.


    Sistemas Lineales

    Un sistema lineal es un conjunto de ecuaciones lineales que resuelves juntas para encontrar valores que satisfagan todas.

    Supongamos que a nuestro problema anterior le añadimos una condición. Supón ahora que además de gastar 30 €, queremos comprar exactamente 12 frutas en total. Esa nueva condición se traduce en otra ecuación:

    $$x + y = 12$$

    Ahora tenemos dos ecuaciones y dos incógnitas \((x, y)\).

    $$\begin{cases} 2x + 3y = 30 \\ x + y = 12 \end{cases}$$

    Aquí, cada ecuación representa una recta en el plano cartesiano. El punto donde ambas rectas se cruzan es la combinación de frutas que cumple las dos condiciones al mismo tiempo: gastar 30 € y comprar exactamente 12 frutas. Existen varios métodos de resolver los sistemas de ecuaciones.

    Solución

    Método: Sustitución:

    1. Despeja una variable en una ecuación.
    2. Sustitúyela en la otra ecuación.
    3. Resuelve.

    Cuándo usarlo: Sistemas pequeños (2-3 ecuaciones).

    De la segunda ecuación despejamos \(x\) y sustituimos en la primera.

    $$x + y = 12$$

    $$x = 12 – y$$

    Sustituimos en la primera ecuación:

    $$2(12−y) + 3y = 30$$

    $$24− 2y + 3y = 30$$

    $$24 − 2y + 3y = 30$$

    $$24 + y = 30$$

    $$24 + y = 30$$

    $$y = 30 – 24 = 6$$

    Ahora sustituimos \(y\) en la segunda:

    $$x + y = 12$$

    $$x + 6 = 12$$

    $$x = 12 – 6 = 6$$

    Resultado: \(x=6,y=6\), o sea, 6 manzanas y 6 naranjas. En el gráfico el punto de intersección de las rectas es \((6,6)\).

    Método de eliminación con normalización

    1. Elige la variable pivote, busca ecuaciones en las que sea fácil trabajar; el objetivo es eliminarla.
    2. Normalizar las ecuaciones, divide cada ecuación por el coeficiente de esa variable.
    3. Restas unas ecuaciones de otras para eliminar la variable pivote.
    4. Te queda un sistema reducido con una variable menos.
    5. Repite el proceso, normaliza nuevamente si hace falta y elimina la siguiente variable hasta que tengas el valor de una variable.
    6. Sustituye ese valor en las ecuaciones de abajo hacia arriba en las ecuaciones anteriores hasta encontrar todas las variables

    Claves importantes

    • Dividir es opcional, pero ayuda a alinear ecuaciones
    • También puedes multiplicar y evitar decimales.
    • Restar ecuaciones es el paso central

    Cuándo usarlo: Sistemas pequeños (2-3 ecuaciones).

    $$\begin{cases} 2x + 3y = 30 \\ x + y = 12 \end{cases}$$

    Seleccionamos la variable \(x\) para normalizar la primera ecuación dividiendo la ecuación entre el coeficiente de \(x\) que es 2. La segunda ecuación no lo necesita, si fuera el caso, se dividiría la segunda ecuación por el coeficiente de su variable \(x\).

    $$x + 1.5 y = 15$$

    $$x + y = 12$$

    Restamos la ecuación 1 a la 2.

    $$x + y = 12$$

    $$x + 1.5 y = 15$$

    • \( x -x = 0 \)
    • \( 1y – 1.5y = 0.5y \)
    • \(12 – 15 = -3 \)

    resultado:

    $$-0.5y = – 3$$

    $$y = – \frac{3}{0.5}$$

    $$y = 6$$

    Ahora sustituimos \(y\) en la segunda:

    $$x + y = 12$$

    $$x + 6 = 12$$

    $$x = 12 – 6 = 6$$

    Resultado: \(x=6,y=6\).

    Con Matplotlib podemos graficar la recta solo con la pendiente y la intersección. En este caso para la segunda ecuación \(m = -1\) y \(b = 12\) .

    Código del gráfico

    Código Python de Matplotlib

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots(figsize=(8,8))
    ax.axline((0, 10), slope=-2/3, color="red", linewidth=2, label=r"$y = -\frac{2}{3}x + 10$")
    ax.axline((0, 12), slope=-1, color="blue", linewidth=2, label=r"$y = -x + 12$")
    
    # Puntos específicos
    ax.plot(6, 6, 'ko', markersize=6)              # dibujar punto
    ax.text(x + 0.5, y + 0.5, f"({6},{6})", fontsize=10, color='black')
    
    # Ejes en el centro
    ax.spines['left'].set_position('zero')   # eje Y en x=0
    ax.spines['bottom'].set_position('zero') # eje X en y=0
    
    # Quitar bordes superior y derecho
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    
    # Cambiar color y grosor de los ejes (spines)
    for spine in ['left', 'bottom']:
        ax.spines[spine].set_color('black')
        ax.spines[spine].set_linewidth(2)
    
    # Límites y cuadrícula
    ax.set_xlim(-20, 20)
    ax.set_ylim(-20, 20)
    
    # tamaño de los numeros
    ax.tick_params(axis='both', which='major', labelsize=10)
    
    # Etiquetas y leyenda
    ax.set_xlabel(r"$x$", fontsize=14, loc="right")
    ax.set_ylabel(r"$y$", fontsize=14, loc="top", rotation=0)
    ax.legend()
    ax.set_title("Grafica de la Ecuación", pad=20)
    ax.legend(facecolor='none', edgecolor='none')
    ax.grid(False)
    plt.savefig("sistemas_de_ecuaciones.png", transparent=True, dpi=300)
    plt.show()

    Método 2: Matriz inversa

    • Determinar si la matriz \(A\) tiene inversa.
    • Aislar el vector de incógnitas \(\vec{x}\).
    • La forma de hacerlo no es dividiendo, porque no existe la división entre matrices, sino multiplicando por su inversa, denotada \(A^{-1}\).

    La ecuación de matriz inversa:

    $$\vec{x} = A^{-1} \vec{b}$$

    Resolviendo el sistema

    Para una matriz de dos ecuaciones como la del ejemplo:

    $$A = \begin{bmatrix} d & b \\ c & a \end{bmatrix}$$

    Determinar su inversa es:

    $$A^{-1} = \frac{1}{ad – bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}$$

    Entonces:

    $$A^{-1} = \frac{1}{(2)(1) – (3)(1)} \begin{bmatrix} 1 & -3 \\ -1 & 2 \end{bmatrix}$$

    $$A^{-1} = \frac{1}{-1}\begin{bmatrix} 1 & -3 \\ -1 & 2 \end{bmatrix}$$

    $$A^{-1} = \begin{bmatrix} -1 & 3 \\ 1 & -2 \end{bmatrix}$$

    • Este método solo funciona si \(A\) tiene inversa, lo que ocurre solo si el determinante de es distinto de cero, como en este caso.

    Paso final

    $$ \vec{x} = A^{-1}\vec{b}$$

    $$\vec{x}=\begin{bmatrix} -1 & 3 \\ 1& -2\end{bmatrix} \begin{bmatrix} 30 \\ 12 \end{bmatrix}$$

    $$\vec{x} = \begin{bmatrix} (-1)(30) + (3)(12) \\ (1)(30) + (-2)(12) \end{bmatrix}$$

    $$\vec{x} = \begin{bmatrix} -30 + 36 \\ 30 – 24 \end{bmatrix} = \begin{bmatrix} 6 \\ 6 \end{bmatrix}$$

    Resultado:

    $$x = 6 \\ y = 6$$

    Hay algunas operaciones básicas que usaremos constantemente:

    • Transposición (Aᵗ) → cambia filas por columnas.
    • Multiplicación de matrices (A·B) → combina vectores o sistemas.
    • Determinante (det(A)) → indica si el sistema tiene solución única.
    • Matriz inversa (A⁻¹) → nos permite resolver sistemas como \(x=A−1bx = A^{-1} bx=A−1b\).

    Estas herramientas son la base de muchos algoritmos modernos de machine learning y análisis de datos.

    Forma de la matriz aumentada

    La matriz aumentada es otra forma de representar un sistema de ecuaciones lineales, pero con un propósito muy concreto: resolverlo más fácilmente mediante operaciones por filas (como en el método de Gauss o Gauss-Jordan). Contiene toda la información numérica del sistema. Trabajar con ella evita reescribir las variables en cada paso.

    La matriz aumentada junta la matriz de coeficientes \(A\) y el vector de términos independientes \(\vec{b}\) en una sola matriz separada por una línea vertical:

    $$\begin{bmatrix}\begin{array}{cc|c}2 & 3 & 30 \\ 1 & 1 & 12 \end{array} \end{bmatrix}$$

    Esa barra vertical no tiene significado algebraico en sí, simplemente marca la frontera entre los coeficientes del sistema y los resultados.

    Método 3: Eliminación Gaussiana

    El objetivo de la eliminación es transformar esa matriz con operaciones por filas hasta una forma en la que las variables se lean directamente.
    Las operaciones permitidas (elementales por filas) son:

    1. Intercambiar dos filas.
    2. Multiplicar una fila por un escalar distinto de 0.
    3. Sumar a una fila un múltiplo de otra fila.

    Estas operaciones no cambian el conjunto de soluciones del sistema: son equivalencias algebraicas.

    Paso 1 — Elegir pivote (y, opcionalmente, intercambiar filas)

    En esta parte normalmente queremos que el primer elemento de la primera fila (posición (1,1)) sea un buen pivote (idealmente 1 y no 0). En nuestro caso la fila 2 ya tiene un 1 en la columna 1, así que intercambiamos las filas para facilitar cálculos:

    Operacion \(R_1 \leftrightarrow R_2\) (Row1 y Row2)

    $$\begin{bmatrix}\begin{array}{cc|c} 1 & 1 & 12 \\ 2 & 3 & 30 \end{array} \end{bmatrix}$$

    Paso 2 — Eliminar la variable \(x\) de las filas inferiores

    Qué se hace: queremos que en la columna del pivote (columna 1) todos los elementos excepto el pivote sean 0. Si el pivote fuese 0 habría que intercambiar filas para evitar dividir por 0.

    Elegimos multiplicar por 2 porque ese número es precisamente lo necesario para que, al restarlo, el coeficiente 2 de la fila 2 quede anulado \((2 − 2 = 0)\).

    Operación :\(R_2 \leftarrow R_2 – 2R_1\)

    Multiplicación de la fina 1 por 2:

    $$\begin{bmatrix}\begin{array}{cc|c} 2 & 2 & 24 \end{array} \end{bmatrix}$$

    Resta la fila multiplicada a la segunda, resultado:

    $$\begin{bmatrix}\begin{array}{cc|c} 1 & 1 & 12 \\ 0 & 1 & 6 \end{array} \end{bmatrix}$$

    • Al hacer esa resta estamos eliminando \(x\) de la segunda ecuación.
    • Esto reduce el sistema a uno triangular superior, que es más fácil de resolver.
    • La segunda fila ahora es \(0x+1y=6\), es decir \(y=6\). Hemos aislado una variable.

    Paso 3 — Resolver la última ecuación (retro-sustitución) o diagonalizar (Gauss–Jordan)

    Ya tenemos el valor de \(y=6\), si usamos retro-sustitucion

    Retro-sustitución para obtener \(x\) sustituyendo y en la primera ecuación:

    $$x+y=12x \rightarrow x + 6 = 12 \rightarrow \\ x = \frac{12}{6} \rightarrow x=6$$

    Solución por Gaus-Jordan

    Eliminamos el \(y\) en la primera fila:

    $$\begin{bmatrix}\begin{array}{cc|c} 1 & 1 & 12 \\ 0 & 1 & 6 \end{array} \end{bmatrix}$$

    Resultado:

    $$\begin{bmatrix}\begin{array}{cc|c} 1 & 0 & 6 \\ 0 & 1 & 6 \end{array} \end{bmatrix} \rightarrow x = 6 , y = 6$$

    Comprobación

    Comprobación en las ecuaciones originales:

    $$2x+3y=2(6)+3(6)\\ =12+18=30$$

    $$x+y=6+6=12$$

    Aplicaciones en Data Science

    La generalización del sistema lineal en una matriz aumentada es muy importante porque los modelos lineales en ciencia de datos funcionan exactamente igual:

    $$\vec{y} = A\vec{w} + \vec{ε}$$

    donde:

    • \(A\) es la matriz de datos (cada fila una observación, cada columna una variable)
    • \(\vec{w}\) son los pesos o coeficientes del modelo (lo que queremos estimar),,
    • \(\vec{y}\)​ son los valores observados o predichos.
    • \(\vec{ε}\) representa los errores o diferencias entre la predicción y los datos reales.

    Esa es exactamente la forma que adoptan los modelos lineales en ciencia de datos y machine learning.

    Resolver el sistema equivale a encontrar los valores de \(\vec{w}\) que mejor explican o ajustan los datos. Por eso, las ecuaciones lineales y su resolución matricial son la base matemática de muchos algoritmos de Machine Learning.


    Ecuaciones Lineales con Python

    Python hace que resolver sistemas lineales sea fácil y rápido con NumPy. Vamos a hacerlo de forma didáctica, con el mismo ejemplo de las frutas (dos ecuaciones, dos incógnitas), y luego generalizamos a más variables.

    Ve los artículos relacionados con las matrices en Python:

    El sistema del ejercicio de las frutas en formas matricial compacta se expreso como:

    $$A = \begin{bmatrix} 2 & 3 \\ 1 & 1 \end{bmatrix}, \vec{b} = \begin{bmatrix} 30 \\ 12 \end{bmatrix}$$

    Resolver el sistema con NumPy:

    import numpy as np
    
    # Definimos la matriz de coeficientes y el vector de resultados
    A = np.array([[2, 3],
                  [1, 1]])
    
    b = np.array([30, 12])
    
    # Resolver el sistema A x = b
    x = np.linalg.solve(A, b)
    
    print("Solución (x, y):", x)
    Solución (x, y): [6. 6.]

    Comprobar el resultado:

    # Verificamos A @ x = b
    print("Comprobación:", A @ x)
    Comprobación: [30. 12.]

    Usando la inversa de la matriz (método alternativo)

    Este método no se recomienda en práctica cuando hay muchas variables, porque calcular la inversa directamente es más costoso y menos estable numéricamente.

    A_inv = np.linalg.inv(A)
    x_alt = A_inv @ b
    
    print("Solución con A^-1:", x_alt)
    Solución con A^-1: [6. 6.]