Cuando el Backsolving falla: Variación en los Sistemas de Ecuaciones Lineales


En artículos anteriores trate del backsolving aplicado a sistemas de ecuaciones lineales, es decir, aquellos que tienen la forma \(M \cdot P = C\). Donde \( M \) es una matriz cuadrada conocida, \(P\) es el vector de incógnitas y \( C \) es el vector de resultados conocidos. Resolver este tipo de problemas consiste en aplicar el método de backsolving, lo que equivale a calcular la inversa de la matriz ( M ).

Recordemos que la matriz inversa es aquella que, al multiplicarse por la matriz original, da como resultado la matriz identidad: una matriz con unos en la diagonal principal y ceros en el resto.

Este procedimiento funciona perfectamente cuando cada componente de \( P \) tiene una única solución, es decir, cuando el sistema es coherente y no hay ambigüedad.
Por ejemplo, en el problema de precios de frutas, si el precio de una manzana y el de una naranja son fijos para todos los compradores, podemos resolver el sistema sin dificultad.

Sin embargo, ¿qué ocurre si los compradores van a diferentes tiendas y los precios no son los mismos para todos?

Podría suceder que en algunas tiendas las manzanas sean un poco más caras o más baratas. A primera vista, parece un sistema perfectamente válido: dos ecuaciones, dos incógnitas.
Pero hay un detalle importante: el precio de las manzanas no es el mismo para ambos casos. Esto rompe el supuesto de “valores constantes” necesario para aplicar el backsolving.

Lo que sucede es que el resultado es incongruente. El problema es que el método asume que los precios son los mismos para todos los individuos. Cuando esta condición no se cumple (como aquí, donde los precios varían entre personas), la solución obtenida no representa la realidad.

Este tipo de error también ocurre cuando intentamos resolverlo programáticamente con Python. Veamos cómo se representaría en código:

import numpy as np

# Cantidad de frutas que compra cada persona
M = np.array([[2, 3],   # Persona 1
              [3, 5]])  # Persona 2

# Precios variables: persona 1 y 2
P = np.array([[2.0, 3.0], 
              [2.2, 3.0]])

# Costes totales observados
C = np.array([13.0, 21.6])

# Cálculo del coste multiplicando componente a componente
costes = np.sum(M * P, axis=1)
print(costes)

Esto devuelve:

[13.  21.6]

Hasta aquí todo bien. Pero si intentamos backsolving con un único vector de precios promedio:

# Intentar resolver suponiendo precios fijos
C = np.array([13, 21.6])
M = np.array([[2, 3],
              [3, 5]])

P_est = np.linalg.inv(M).dot(C)
print(P_est)

El resultado será el mismo que hallamos a mano:

[0.2 4.2]

Es decir, la solución matemática es consistente dentro del sistema, pero no tiene interpretación real.

Conclusión

El método de backsolving es eficaz solo cuando los parámetros son constantes. Si las variables cambian entre observaciones —como ocurre en este caso con los precios de las manzanas—, el método se vuelve inadecuado y los resultados carecen de sentido práctico.

En próximos artículos abordo otros enfoques que permitan manejar situaciones donde los valores del vector desconocido varían entre individuos o condiciones, como ocurre en muchos problemas reales de datos.

Comentarios

Deja una respuesta

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