Resolución de ecuaciones diofánticas lineales con n incógnitas

Continúo con el tema de las ecuaciones diofánticas lineales. En este caso, amplío el contenido del artículo anterior y facilito un fichero que permite resolver ecuaciones diofánticas lineales con n variables. El fichero está preparado para generar las soluciones en los diferentes casos que se pueden presentar: no exista solución o tenga infinitas soluciones. El código LyX usado es mínimo y casi todo el que se ha usado está escrito directamente en LaTeX. De nuevo uso el paquete xlop de LaTeX para realizar las divisiones de números enteros.

El paquete xloppresenta algunas limitaciones, que no vuelvo a comentar. Para eso véase el artículo Resolución de ecuaciones diofánticas de la forma Ax+By=C.

El fichero permite que los coeficientes de las ecuaciones diofánticas se puedan introducir de forma manual o que se generen de forma aleatoria. También podemos determinar qué número de ejercicios deseamos resolver así como el número de incógnitas de nuestra ecuación.

En las soluciones que se obtienen se ajusta de forma automática el nombre de las incógnitas y de todos los parámetros necesarios para su resolución.

Lo único que tendremos que adecuar en el fichero se comenta en el fichero LyX que se puede descargar al final, consiste en:

# Listas de posibles ejercicios (coeficientes de las ecuaciones diofánticas)
# para que luego las incorpore deben tener de nombre Ei, i:1..n
E1 = [6,10,15,31]
E2 = [6,8,14,22]
E3 = [12,16,28,44]
E4 = [92,-1,59,-23]
E5 = [92,-1,59,-23,1]
E6 = [8,4,2,-2,6]
E7 = [18,45,-20,49,11]
E8 = [4,4,6,8,3]
E9 = [3,5,7]
E10 = [4,4,8,6,11,2]

# Podemos optar por obtener los coeficientes de las ecuaciones de forma: aleatoria o manual (de dos formas en ambos casos)
# a -> aleatoria
# a1 -> todos los ejercicios del mismo número de incógnitas definido por "nincg"
# a2 -> número de incógnitas aleatorio con un valor máximo definido por "nincg"
# m1 -> Se resuelven todos/algunos de  los ejercicios propuestos anteriormente.
# El número de ellos se define con el valor de 'maxejer' comentado después.
# m2 -> Valor por defecto. Podemos definirla "a mano" a partir de los valores de ejercicios anteriores, por ejemplo con
ListaEjer = [E1,E2,E4,E10]

# Opción por la que optamos de las anteriores
opcion = 'a2'

# Rango en el que obtener los valores aleatorios (-rango, rango)
rango = 100

# Número máximo de ejercicios. Tiene una doble función:
# Si optamos por valores aleatorios es el número de ejercicios que se generarán.
# Si optamos por valores introducidos a mano:
# Es el número máximo de ejercicios que se resolverán, comenzando por los números Ei menores.
# Si tenemos definidos 10 ejercicios y aquí ponemos 15, se resolverán los 10.
# Si tenemos definidos 10 ejercicios y aquí ponemos 3, solo se resolverán los 3 primeros: E1, E2 y E3
maxejer = 20

# Número de incógnitas para el tipo aleatorio. El valor mínimo es 2
nincg = 5

# Si es True, al final aparece un smiley que indica si la solución es correcta o no: si está bien
# se muestra una cara sonriente, en caso contrario una cara blanca que frunce el ceño
comprobar = True
#comprobar = False

Con los datos anteriores de entrada se han generado 20 ejercicios aleatorios con un número de incógnitas que oscila entre 2 y 5. En el pdf que se puede descargar al final del artículo se muestra el resultado.

En el html que sigue muestro solo uno de los 20 ejercicios anteriores, en concreto el número 8 del pdf final.

La ecuación diofántica aox0+a1x1++anxn=ba_{o}x_{0}+a_{1}x_{1}+\ldots+a_{n}x_{n}=b tiene solución si y solo si d=mcd(a0,a1,,an)d=mcd(a_{0},a_{1},\ldots,a_{n}) es un divisor de bb. En ese caso la ecuación tiene infinitas soluciones.

Problema

  1. Resuelve la ecuación diofántica

    88x092x128x2+64x3=64\boldsymbol{-88x_{0}-92x_{1}-28x_{2}+64x_{3}=64}

    Solución

    Dividimos todos los coeficientes por 4 obteniendo la siguiente ecuación:

    22x023x17x2+16x3=16-22x_{0}-23x_{1}-7x_{2}+16x_{3}=16

    image

    que divide a 16 . Tiene solución, comencemos

    Paso 1

    Como

    mcd[22, 23, 7]=1mcd\left[-22,\ -23,\ -7\right]=1

    Sea

    22x023x17x2=k0-22x_{0}-23x_{1}-7x_{2}=k_{0}

    Partimos de la ecuación

    k0+16x3=16k_{0}+16x_{3}=16

    Consideremos el sistema {1k0+0x3=10k0+1x3=16\begin{cases} 1\cdot k_{0}+0\cdot x_{3} & =1\\ 0\cdot k_{0}+1\cdot x_{3} & =16 \end{cases} que tiene como soluciones k0=1k_{0}=1 y x3=16.x_{3}=16. Su forma matricial es:

    (1010116)\left(\begin{matrix}1 & 0 & \textcolor{blue}{1}\\ 0 & 1 & \textcolor{blue}{16} \end{matrix}\right)

    image1 Restamos a la segunda fila 16 veces la primera

    (1011610)\left(\begin{matrix}1 & 0 & \textcolor{blue}{1}\\ -16 & 1 & \textcolor{blue}{0} \end{matrix}\right)

    Obtenemos el sistema de ecuaciones equivalente al primero:

    {(1)k0+(0)x3=1(16)k0+(1)x3=0\begin{cases} \left(1\right)\cdot k_{0}+\left(0\right)\cdot x_{3} & =1\\ \left(-16\right)\cdot k_{0}+\left(1\right)\cdot x_{3} & =0 \end{cases}\Rightarrow{(1)(1)+(0)(16)=1(16)(1)+(1)(16)=0xxxxxeq:79\begin{cases} \left(1\right)\cdot\left(1\right)+\left(0\right)\cdot\left(16\right) & =1\\ \left(-16\right)\cdot\left(1\right)+\left(1\right)\cdot\left(16\right) & =0 \end{cases}\phantom{xxxxx}{eq:79}

    Además hemos obtenido que mcd(1,16)=1mcd(1,16)=1.

    La primera igualdad de ([eq:79]) la tenemos que multiplicar por q=16q=16

    (1)(1)+(0)(16)=1\left({\color{red}1}\right)\cdot\left(1\right)+\left({\color{red}0}\right)\cdot\left(16\right)={\color{red}1}\,\Rightarrow16(1)(1)+16(0)(16)=16116\cdot\left({\color{red}1}\right)\cdot\left(1\right)+16\cdot\left({\color{red}0}\right)\cdot\left(16\right)=16\cdot1\Rightarrow

    (16)(1)+(0)(16)=16xxxxxeq:80\left({\color{red}16}\right)\cdot\left(1\right)+\left({\color{red}0}\right)\cdot\left(16\right)=16\phantom{xxxxx}{eq:80}

    Multipliquemos la segunda igualdad de ([eq:79]) por t0t_{0}

    (16t0)(1)+(t0)(16)=0xxxxxeq:81\left(-16t_{0}\right)\cdot\left(1\right)+\left(t_{0}\right)\cdot\left(16\right)=0\phantom{xxxxx}{eq:81}

    Sumamos ([eq:80]) a ([eq:81]) sacando factor común:

    (1616t0)(1)+(t0)(16)=16\left(16-16t_{0}\right)\cdot\left(1\right)+\left(t_{0}\right)\cdot\left(16\right)=16

    Por tanto

    {k0=1616t0x3=t0t0Z\begin{cases} k_{0}=16-16t_{0}\\ x_{3}=t_{0} \end{cases}\,\,\,t_{0}\in\mathbb{Z}

    Paso 2

    Como

    mcd[22, 23]=1mcd\left[-22,\ -23\right]=1

    Sea

    22x023x1=k1-22x_{0}-23x_{1}=k_{1}

    Tenemos la ecuación

    k17x2=k0k_{1}-7x_{2}=k_{0}

    Partimos de la ecuación

    k17x2=1k_{1}-7x_{2}=1

    Consideremos el sistema {1k1+0x2=10k1+1x2=7\begin{cases} 1\cdot k_{1}+0\cdot x_{2} & =1\\ 0\cdot k_{1}+1\cdot x_{2} & =-7 \end{cases} que tiene como soluciones k1=1k_{1}=1 y x2=7.x_{2}=-7. Su forma matricial es:

    (101017)\left(\begin{matrix}1 & 0 & \textcolor{blue}{1}\\ 0 & 1 & \textcolor{blue}{-7} \end{matrix}\right)

    7=1×(7)-7=1\times(-7) \Rightarrow Sumamos a la segunda fila 7 veces la primera

    (101710)\left(\begin{matrix}1 & 0 & \textcolor{blue}{1}\\ 7 & 1 & \textcolor{blue}{0} \end{matrix}\right)

    Obtenemos el sistema de ecuaciones equivalente al primero:

    {(1)k1+(0)x2=1(7)k1+(1)x2=0\begin{cases} \left(1\right)\cdot k_{1}+\left(0\right)\cdot x_{2} & =1\\ \left(7\right)\cdot k_{1}+\left(1\right)\cdot x_{2} & =0 \end{cases}\Rightarrow{(1)(1)+(0)(7)=1(7)(1)+(1)(7)=0xxxxxeq:82\begin{cases} \left(1\right)\cdot\left(1\right)+\left(0\right)\cdot\left(-7\right) & =1\\ \left(7\right)\cdot\left(1\right)+\left(1\right)\cdot\left(-7\right) & =0 \end{cases}\phantom{xxxxx}{eq:82}

    Además hemos obtenido que mcd(1,7)=1mcd(1,-7)=1.

    La primera igualdad de ([eq:82]) la tenemos que multiplicar por q=k0q=k_{0}

    (1)(1)+(0)(7)=1\left({\color{red}1}\right)\cdot\left(1\right)+\left({\color{red}0}\right)\cdot\left(-7\right)={\color{red}1}\,\Rightarrowk0(1)(1)+k0(0)(7)=k01k_{0}\cdot\left({\color{red}1}\right)\cdot\left(1\right)+k_{0}\cdot\left({\color{red}0}\right)\cdot\left(-7\right)=k_{0}\cdot1\Rightarrow

    (k0)(1)+(0)(7)=k0xxxxxeq:83\left({\color{red}k_{0}}\right)\cdot\left(1\right)+\left({\color{red}0}\right)\cdot\left(-7\right)=k_{0}\phantom{xxxxx}{eq:83}

    Multipliquemos la segunda igualdad de ([eq:82]) por t1t_{1}

    (7t1)(1)+(t1)(7)=0xxxxxeq:84\left(7t_{1}\right)\cdot\left(1\right)+\left(t_{1}\right)\cdot\left(-7\right)=0\phantom{xxxxx}{eq:84}

    Sumamos ([eq:83]) a ([eq:84]) sacando factor común:

    (k0+7t1)(1)+(t1)(7)=k0\left(k_{0}+7t_{1}\right)\cdot\left(1\right)+\left(t_{1}\right)\cdot\left(-7\right)=k_{0}

    Por tanto

    {k1=k0+7t1x2=t1t1Z\begin{cases} k_{1}=k_{0}+7t_{1}\\ x_{2}=t_{1} \end{cases}\,\,\,t_{1}\in\mathbb{Z}

    y como

    k0=1616t0k_{0}=16-16t_{0}

    sustituyendo y operando, obtenemos

    {x1=16t0+7t1+16x2=t1t0,t1Z\begin{cases} x_{1}=-16t_{0}+7t_{1}+16\\ x_{2}=t_{1} \end{cases}\,\,\,t_{0},t_{1}\in\mathbb{Z}

    Paso 3

    Tenemos la ecuación

    22x023x1=k1-22x_{0}-23x_{1}=k_{1}

    Partimos de la ecuación

    22x023x1=1-22x_{0}-23x_{1}=1

    Consideremos el sistema {1x0+0x1=220x0+1x1=23\begin{cases} 1\cdot x_{0}+0\cdot x_{1} & =-22\\ 0\cdot x_{0}+1\cdot x_{1} & =-23 \end{cases} que tiene como soluciones x0=22x_{0}=-22 y x1=23.x_{1}=-23. Su forma matricial es:

    (10220123)\left(\begin{matrix}1 & 0 & \textcolor{blue}{-22}\\ 0 & 1 & \textcolor{blue}{-23} \end{matrix}\right)

    23=22×2+21-23=-22\times2+21\Rightarrow Restamos a la segunda fila 2 veces la primera

    (10222121)\left(\begin{matrix}1 & 0 & \textcolor{blue}{-22}\\ -2 & 1 & \textcolor{blue}{21} \end{matrix}\right)

    22=21×2+20-22=21\times-2+20\Rightarrow Sumamos a la primera fila 2 veces la segunda

    (32202121)\left(\begin{matrix}-3 & 2 & \textcolor{blue}{20}\\ -2 & 1 & \textcolor{blue}{21} \end{matrix}\right)

    image2 Restamos a la segunda fila 1 veces la primera

    (3220111)\left(\begin{matrix}-3 & 2 & \textcolor{blue}{20}\\ 1 & -1 & \textcolor{blue}{1} \end{matrix}\right)

    image3 Restamos a la primera fila 20 veces la segunda

    (23220111)\left(\begin{matrix}-23 & 22 & \textcolor{blue}{0}\\ 1 & -1 & \textcolor{blue}{1} \end{matrix}\right)

    Obtenemos el sistema de ecuaciones equivalente al primero:

    {(1)x0+(1)x1=1(23)x0+(22)x1=0\begin{cases} \left(1\right)\cdot x_{0}+\left(-1\right)\cdot x_{1} & =1\\ \left(-23\right)\cdot x_{0}+\left(22\right)\cdot x_{1} & =0 \end{cases}\Rightarrow{(1)(22)+(1)(23)=1(23)(22)+(22)(23)=0xxxxxeq:85\begin{cases} \left(1\right)\cdot\left(-22\right)+\left(-1\right)\cdot\left(-23\right) & =1\\ \left(-23\right)\cdot\left(-22\right)+\left(22\right)\cdot\left(-23\right) & =0 \end{cases}\phantom{xxxxx}{eq:85}

    Además hemos obtenido que mcd(22,23)=1mcd(-22,-23)=1.

    La primera igualdad de ([eq:85]) la tenemos que multiplicar por q=k1q=k_{1}

    (1)(22)+(1)(23)=1\left({\color{red}1}\right)\cdot\left(-22\right)+\left(\mathbin{\color{red}-}{\color{red}1}\right)\cdot\left(-23\right)={\color{red}1}\,\Rightarrowk1(1)(22)+k1(1)(23)=k11k_{1}\cdot\left({\color{red}1}\right)\cdot\left(-22\right)+k_{1}\cdot\left(\mathbin{\color{red}-}{\color{red}1}\right)\cdot\left(-23\right)=k_{1}\cdot1\Rightarrow

    (k1)(22)+(k1)(23)=k1xxxxxeq:86\left({\color{red}k_{1}}\right)\cdot\left(-22\right)+\left(\mathbin{\color{red}-}{\color{red}k_{1}}\right)\cdot\left(-23\right)=k_{1}\phantom{xxxxx}{eq:86}

    Multipliquemos la segunda igualdad de ([eq:85]) por t2t_{2}

    (23t2)(22)+(22t2)(23)=0xxxxxeq:87\left(-23t_{2}\right)\cdot\left(-22\right)+\left(22t_{2}\right)\cdot\left(-23\right)=0\phantom{xxxxx}{eq:87}

    Sumamos ([eq:86]) a ([eq:87]) sacando factor común:

    (k123t2)(22)+(k1+22t2)(23)=k1\left(k_{1}-23t_{2}\right)\cdot\left(-22\right)+\left(-k_{1}+22t_{2}\right)\cdot\left(-23\right)=k_{1}

    Por tanto

    {x0=k123t2x1=k1+22t2t2Z\begin{cases} x_{0}=k_{1}-23t_{2}\\ x_{1}=-k_{1}+22t_{2} \end{cases}\,\,\,t_{2}\in\mathbb{Z}

    y como

    k1=16t0+7t1+16k_{1}=-16t_{0}+7t_{1}+16

    sustituyendo y operando, obtenemos

    {x0=16t0+7t123t2+16x1=16t07t1+22t216t0,t1,t2Z\begin{cases} x_{0}=-16t_{0}+7t_{1}-23t_{2}+16\\ x_{1}=16t_{0}-7t_{1}+22t_{2}-16 \end{cases}\,\,\,t_{0},t_{1},t_{2}\in\mathbb{Z}

    Por último, tenemos que

    {x0=16t0+7t123t2+16x1=16t07t1+22t216x2=t1x3=t0t0,t1,t2Z\begin{cases} x_{0}=-16t_{0}+7t_{1}-23t_{2}+16\\ x_{1}=16t_{0}-7t_{1}+22t_{2}-16\\ x_{2}=t_{1}\\ x_{3}=t_{0} \end{cases}\,\,\,t_{0},t_{1},t_{2}\in\mathbb{Z}

Enlaces al fichero fuente y al pdf final de una posible compilación.