El siguiente artículo es una colaboración de Rogelio González, al que agradezco su interés por colaborar en este blog.

Una ecuación no es más que una igualdad en la que hay cantidades desconocidas llamadas incógnitas. Las soluciones son los valores que tienen las incógnitas cuando satisfacen la igualdad. Un sistema de ecuaciones es la reunión de 2 o mas ecuaciones con 2 o más incógnitas. Así:



Es un sistema de ecuaciones cuyas soluciones son . Los sistemas de ecuaciones tienen aplicaciones en todas las ciencias entonces es útil tener un algoritmo que las resuelva y comprender qué es lo que hace. Normalmente utilizaríamos algo de algebra lineal para resolverlo pero hoy vamos a hacerlo de otro modo.

Tipos de sistemas de ecuaciones

Aunque de manera intuitiva nos puede parecer que todo sistema tiene soluciones únicas esto no es así. El sistema pueder tener soluciones unicas como el primer ejemplo,infinitas soluciones o no tener solución. ¿Qué hace distinto un sistema de otro? o en otras palabras ¿Qué método tenemos que nos diga que sistema es?

Determinantes

El determinante de nuestro sistema es el que nos dirá qué tipo de sistema es. El determinante del sistema:

Viene dado por , en el primer ejemplo el determinante es 1 pues .En general si el determinante () es distinto de cero tenemos soluciones únicas, si el determinante es cero entonces o hay infinitas soluciones o no hay ninguna. En “el caso fácil” cuando las soluciones están dadas por:

Ahora “el caso difícil” cuando ¿Cómo saber si el sistema tiene infinitas soluciones o ninguna? Pongamos atención en los siguientes sistemas:

En el primer sistema es fácil ver que la segunda ecuación es solo la primera multiplicada por 2 y es coherente el resultado. Sin embargo en el segundo sistema el lado izquierdo de la igualdad nos dice de nuevo que la segunda ecuación es solo la primera multiplicada por 2 pero el lado derecho no puede ser cierto pues el doble de 3 no es 5. Entonces decimos que el primer sistema tiene soluciones infinitas pues las soluciones de la primera ecuación siempre cumplen la segunda pues básicamente es la misma ecuación. El segundo sistema no tiene soluciones y podemos verlo en el absurdo de que el doble de 3 es 5. Podemos decir pues que en un sistema con lo importante es ver por qué número debemos multiplicar la primera ecuación para obtener la segunda y la parte derecha de las ecuaciones nos dirán si es coherente o no, en otras palabras si tiene infinitas soluciones o ninguna.

Ideas llevadas a Python

“El caso difícil” lo podemos resolver sabiendo cuál es el número por el que tengo que multiplicar la primera ecuación para obtener la segunda, podríamos hacer m = d / a donde m sería nuestro “número”y después ver si m * c = f :

from sys import argv
script, a, b, c, d, e, f = argv

a = float(a)
b = float(b)
c = float(c)
d = float(d)
e = float(e)
f = float(f)

m = d / a

if m * c == f :
    print "El sistema tiene infinitas soluciones"
else:
    print "El sistema no tiene soluciones"


Uniendo “el caso difícil” con “el caso fácil” tenemos el código completo del algoritmo, tendremos que verificar antes que a,b,d,e no sean todos cero pues entonces no sería un sistema de ecuaciones, salvando esto podemos usar el algoritmo:

from sys import argv
script, a, b, c, d, e, f = argv

a = float(a)
b = float(b)
c = float(c)
d = float(d)
e = float(e)
f = float(f)

det = a * e - b * d

if det != 0 :
    x = (e * c - b * f) / det
    y = (a * f - d * c) / det

    print "La solucion al sistema es x= %d e y= %d" % (x, y)

else :
    m = d / a

    if m * c == f :
        print "El sistema tiene infinitas soluciones"
    else:
        print "El sistema no tiene soluciones"


Conclusion

¿Por qué tantas matemáticas y poco código? Creo que todos lo sabemos: la idea que soporta el código es lo interesante y no solo lo interesante es lo importante. No todo programador es matemático (no es necesario serlo) pero es una gran ventaja tener esa “intuición” que nos dan las matemáticas.

Índice