Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

Navegación de entradas

MAD: Anexo a la Teoría de números ←
→ MAD: Teoría de Grafos

MAD: Ecuaciones diofánticas y de congruencias con maxima

Posted on 11 de marzo de 2026

Ecuación de congruencias

Recordemos, para resolver la ecuación \(aX\equiv b {\pmod {n}}\), \((aX \equiv b (n))\), cuando \(\mathbf{mcd}(a,n)=1\), utilizamos bien solución de Bézout, bien la función \(\varphi\) de Euler.

Ejemplo: Resolver la ecuación \[7X\equiv 3 {\pmod {103}}\]

(%i5) ex:eucl_ext(7,103);
if ex[1]<0 then inv:mod(ex[1],103) else inv:ex[1]$
sol:mod(inv*3,103)$
print(«Solución X=»,sol,«(103)»)$

(ex)[−44,3,1]Solución X=74(103)

Verifiquémoslo:

(%i6) mod(7*sol,103);

(%o6) 3


Ejercicio: Resolver la ecuación de congruencias \(3X\equiv 16 \pmod{22}\).

(%i1) mcd(a,b):=block([r,i],
   r:[mod(a,b)],
   r:append(r,mod(b,r)),
   id:2,
   for i:2 while r[i]>0 do (
       r:append(r,[mod(r[i−1],r[i])])
   ),
   r[length(r)−1]
)$

(%i3) fiEuler(n):=block([f,i,m],
  f:1,
  for i:2 thru n−1 do (
       if(mcd(i,n)=1) then f:f+1
  ),
  f
)$
fi:fiEuler(22);

\[\operatorname{ }10\]

Sabemos que \(3^{10-1}\pmod{22}\) es el inverso de 3, luego

(%i5) r:mod(3^2,22)$
makelist(r:mod(3·r,22),i,3,9);

\[\operatorname{ }\left[ 5\operatorname{,}15\operatorname{,}1\operatorname{,}3\operatorname{,}9\operatorname{,}5\operatorname{,}15\right] \]

El inverso que buscamos es 15. El resultado será

(%i6) mod(15·16,22);

\[\operatorname{ }20\]

Verifiquémoslo

(%i7) mod(3·20,22);

\[\operatorname{ }16\]


Hemos visto el uso de la función \(\varphi\) de Euler. El cálculo de esta función también se puede realizar si sabemos la descomposición de un número entero en sus factores primos:

Si \(n\in\mathbb{Z}\) es \({\displaystyle n=p_{1}^{k_{1}}\cdots p_{r}^{k_{r}}}\), entonces \[\varphi (n)=n\prod_{i=1}^r\left(1-\frac{1}{p_i}\right)\]

Ejemplo: Utilizar la fórmula anterior para construir un algoritmo que calcule \(\varphi(87)\)


(%i2)

fiEuler(n) := block([result, p, d],
   result : n,
   p : n,
   d : 2,  
   while d · d <= p do (
       if mod(p, d) = 0 then (
           /* Aplicamos la fórmula: result = result * (1 – 1/d) */
           result : result · (d − 1) / d,
           /* Eliminamos todas las ocurrencias del factor d en p */
           while mod(p, d) = 0 do (
               p : p / d
           )
       ),
       d : d + 1
   ),
   /* Si al final p > 1, lo que queda es el último factor primo */
   if p > 1 then result : result · (p − 1) / p,
   return(result)
)$
fiEuler(87);

\[\tag{%o2} 56\]


Sistemas de congruencias

Ejercicio: Resolver el sistema \[\begin{align*}
3X &\equiv 2\pmod{8} \\ 2X&\equiv 1\pmod{5} \end{align*}\]

Tenemos las ecuaciones de congruencia 3X\(\equiv\)2(mod 8) y 2X\(\equiv\)1(mod 5):

(%i4) eq:[[3,2,8],[2,1,5]]$

Resolvamos la ecuaciones de congruencia de forma individual

(%i6) s:[]$
for i:1 thru 2 do(
   d:eucl_ext(eq[i][1],eq[i][3]),
   s:append(s,[mod(d[1]*eq[i][2],eq[i][3])]),
   print(eq[i][1],«X=»,eq[i][2],«(mod»,eq[i][3],«)-> X=»,s[i],«(mod»,eq[i][3],«)»)
)$

3X=2(mod8)→ X=6(mod8)2X=1(mod5)→ X=3(mod5)

Ahora calculamos los inversos de los respectivos módulos módulo el producto de ellos:

(%i10) sv:[]$
p:product(eq[i][3],i,1,2)$
for i:1 thru 2 do(
   d:eucl_ext(p/eq[i][3],eq[i][3]),
   sv:append(sv,[d[1]*p/eq[i][3]])
)$
sv;

(%o10) [−15,16]

La solución del sistema será

(%i13) sm:0$
for i:1 thru 2 do(
   sm:sm+s[i]*sv[i]
)$
print(«X=»,mod(sm,p),«(mod»,p, «)»)$

X=38(mod40)


Ejercicio: Resolver el sistema \begin{align*}
5&\equiv 3 \pmod{17} \\
2&\equiv 7 \pmod{15} \\
12&\equiv 14\pmod{31} \\
22&\equiv 17\pmod{29} \\
\end{align*}

Tenemos la ecuaciones de congruencia 5X=3(mod 17),2X=7(mod 15), 12X=14(mod 31) y22X=17(mod 29):

(%i4) eq:[[5,3,17],[2,7,15],[12,14,31],[22,17,29]]$

Resolvamos la ecuaciones de congruencia de forma individual

(%i6) s:[]$
for i:1 thru length(eq) do(
   d:eucl_ext(eq[i][1],eq[i][3]),
   s:append(s,[mod(d[1]*eq[i][2],eq[i][3])]),
   print(eq[i][1],«X=»,eq[i][2],«(mod»,eq[i][3],«)-> X=»,s[i],«(mod»,eq[i][3],«)»)
)$

5X=3(mod17)→ X=4(mod17)2X=7(mod15)→ X=11(mod15)12X=14(mod31)→ X=27(mod31)22X=17(mod29)→ X=10(mod29)

Ahora calculamos los inversos de los respectivos módulos módulo el producto de ellos:

(%i10) sv:[]$
p:product(eq[i][3],i,1,length(eq))$
for i:1 thru length(eq) do(
   d:eucl_ext(p/eq[i][3],eq[i][3]),
   sv:append(sv,[d[1]*p/eq[i][3]])
)$
sv;

(%o10) [−53940,106981,81345,94860]

La solución del sistema será

(%i14) sm:0$
for i:1 thru length(eq) do(
   sm:sm+s[i]*sv[i]
)$
sol:mod(sm,p)$
print(«X=»,sol,«(mod»,p, «)»)$

X=208781(mod229245)

Veamos que es cierto:

(%i15) makelist(mod(eq[i][1]*sol–eq[i][2],eq[i][3]),i,1,length(eq));

(%o15) [0,0,0,0]


Ecuación lineal diofántica

El pasado día trabajamos las ecuaciones lineales diofánticas. En particular, abordamos la solución de la ecuación \[ax+by=c.\]

Ejercicio: Sea \(v\) la menor de las soluciones positivas de 4x+22y=46, ¿cuál es el valor de [3,-5].v?

Utilicemos el algoritmo extendido de Euclides para determinar el mcd y la solución de Bézout:

(%i2) d:eucl_ext(4,22);

(d)[−5,1,2]

Veamos si verifica las condiciones y, en su caso, sustiyamos en la fórmula:

(%i3) if(mod(46,d[3])=0) then (
       print(«Hay solución:»),
       cprima:46/d[3],
       x:d[1]*cprima+22/d[3]*k,
       y:d[2]*cprima–4/d[3]*k,
       print(«x=»,x),
       print(«y=»,y)
   )$

Hay solución:x=11⁢k−115y=23−2⁢k

Estimemos las soluciones positivas. Primero creamos la función que nos devuelve las soluciones:

(%i4) sol(i):=[ev(x,k=i),ev(y,k=i)]$

Ahora, consideramos el valor más cercano de la x a cero:

(%i6) id:floor(115/11)$
makelist(sol(i),i,id,id+2);

(%o6) [[−5,3],[6,1],[17,−1]]

Respondamos a la pregunta:

(%i7) [6,1].[3,–5];

(%o7) 13


Ejercicio: Sea \(v\) la menor de las soluciones positivas de 7x-11y=5, ¿cuál es el valor de [3,4].v?

Como necesitamos el mcd y, si hay solución, una solución inicial dada por la solución de Bezout, apliquemos el algoritmo extendido de Euclides

(%i6) a:7$b:–11$c:5$
d:eucl_ext(a,b);

(d)[−3,−2,1]

El mcd es 1, con lo cual hay solución. Apliquemos la fórmula:

(%i8) sol(k):=[d[1]*(c/d[3])+b/d[3]*k,d[2]*(c/d[3])–a/d[3]*k]$
sol(k);

(%o8) [−11⁢k−15,−7⁢k−10]

Buscamos una solución positiva, luego

(%i11) solve(sol(k)[1],k);
p:floor(ev(k,%));
makelist(sol(i),i,p–2,p+2);

(%o9) [k=−1511](p)−2(%o11) [[29,18],[18,11],[7,4],[−4,−3],[−15,−10]]

Como vemos, k=-2 es el número que marca el cambio de signo en la variable x, y en este caso tambien en la y. Por tanto, la solución que buscamos es

(%i12) sol(–2).[3,4];

(%o12) 37


Si la ecuación es de tres variables y tiene solución, el caso más sencillo es cuando tenemos dos coeficientes coprimos. En tal caso, la ecuación plantea una solución paramétrica cuyo parámetro es la variable del coeficiente no coprimo. Es decir, si \(m.c.d(a,b)=1\), planteamos la ecuación \[ax+by=n-c\lambda,\] donde designamos \(z=\lambda\), la resolvemos como ya conocemos.

Ejercicio: Resolver la ecuación \(5x+12y+3z=11\)

Utilicemos el algoritmo de Euclides para determinar el mcd

(%i6)

eq:[5,12,3,11]$
d:eq[1]$
makelist(d:mcd(d,eq[i]),i,2,3);

\[\]\[\tag{%o6} \left[ 1\mathop{,}1\right] \]

Como el mcd es 1 la ecuación tendrá solución. Ahora elegimos dos coeficientes coprimos: veíamos que el 5 y el 12 los son. Resolvemos, por tanto, la ecuación 5x+12y=11-3k, considerando z=k

(%i7)

d:eucl_ext(5,12);

\[\]\[\tag{%o7} \left[ 5\mathop{,}\mathop{-}2\mathop{,}1\right] \]

Observemos que la Solución de Bezout nos dice: 5*5+12*(-2)=1, luego

(%i10)

cprima:11−3·k$
x:rat(d[1]·cprima+12·l);
y:rat(d[2]·cprima−5·l);

\[\]\[\tag{%o9)/R} 12 l\mathop{-}15 k\mathop{+}55\]

\[\]\[\tag{%o10)/R} \mathop{-}\left( 5 l\right) \mathop{+}6 k\mathop{-}22\]

Las soluciones dependen de dos parámetros:


(%i11)

sol(i,j):=[ev(x,k=i,l=j),ev(y,k=i,l=j),i]$

Veamos unas primeras soluciones:


(%i12)

s:create_list(sol(i,j),i,0,2,j,0,2);

\[\begin{align*}[&[55,-22,0],[67,-27,0],[79,-32,0],\\ &[40,-16,1],[52,-21,1],[64,-26,1],\\ &[25,-10,2],[37,-15,2],[49,-20,2]]\end{align*}\]\[\tag{%o12)/R} \]


Ejercicio: Dada la ecuación 7x-2y+9z=10, dar la solución positiva con min{x>0} y min{y>0}


(%i6)

eq:[7,−2,9,10]$
d:eq[1]$
makelist(d:mcd(d,eq[i]),i,2,3);

\[\]\[\tag{%o6} \left[ 2\mathop{,}1\right] \]

Vemos que tiene solución, además los coficientes son coprimos; por tanto, podemos elegir cualquier para de coeficientes para buscar la solución. Sin embargo, en este caso nos piden una solución que cumpla min{x>0} y min{y>0}, entonces nos interesa que x dependa de un único parámetro. Es decir, resolvamos la ecuación -2y+9z=10-7k, considerando x=k:


(%i7)

d:eucl_ext(eq[2],eq[3]);

\[\]\[\tag{%o7} \left[ 4\mathop{,}1\mathop{,}1\right] \]


(%i12)

cprima:eq[4]−eq[1]·k$
y:rat(d[1]·cprima+eq[3]·l)$
z:rat(d[2]·cprima−eq[2]·l)$
sol(i,j):=[i,ev(y,k=i,l=j),ev(z,k=i,l=j)]$
sol(k,l);

\[\]\[\tag{%o12)/R} \left[ k\mathop{,}9 l\mathop{-}28 k\mathop{+}40\mathop{,}2 l\mathop{-}7 k\mathop{+}10\right] \]

Para valores min{x>0}, será x=1, con lo cual


(%i13)

x1:sol(1,l);

\[\]\[\tag{%o13)/R} \left[ 1\mathop{,}9 l\mathop{+}12\mathop{,}2 l\mathop{+}3\right] \]

Veamos valores de y para estos puntos:


(%i14)

makelist(ev(x1,l:i),i,−2,2);

\[\]\[\tag{%o14)/R} \left[ \left[ 1\mathop{,}\mathop{-}6\mathop{,}\mathop{-}1\right] \mathop{,}\left[ 1\mathop{,}3\mathop{,}1\right] \mathop{,}\left[ 1\mathop{,}12\mathop{,}3\right] \mathop{,}\left[ 1\mathop{,}21\mathop{,}5\right] \mathop{,}\left[ 1\mathop{,}30\mathop{,}7\right] \right] \]

Repitamos el proceso considerando primero que y=k:


(%i20)

d:eucl_ext(eq[1],eq[3])$
cprima:eq[4]−eq[2]·k$
x:rat(d[1]·cprima+eq[3]·l)$
z:rat(d[2]·cprima−eq[1]·l)$
sol(i,j):=[ev(x,k=i,l=j),i,ev(z,k=i,l=j)]$
y1:sol(1,l);

\[\]\[\tag{%o20)/R} \left[ 9 l\mathop{+}48\mathop{,}1\mathop{,}\mathop{-}\left( 7 l\right) \mathop{-}36\right] \]


(%i21)

makelist(ev(y1,l:i),i,−7,−4);

\[\]\[\tag{%o21)/R} \left[ \left[ \mathop{-}15\mathop{,}1\mathop{,}13\right] \mathop{,}\left[ \mathop{-}6\mathop{,}1\mathop{,}6\right] \mathop{,}\left[ 3\mathop{,}1\mathop{,}\mathop{-}1\right] \mathop{,}\left[ 12\mathop{,}1\mathop{,}\mathop{-}8\right] \right] \]

Como la solución [3,1,-1] no es positiva, la respuesta a la pregunta sería la solución [1,3,1].

Ejercicio: Sea v\(:[x_s,y_s,z_s]\) la solución de la ecuación 5x-15y+22z=32, que cumple min{0<\(y_s\)<5} y max{0<\(z_s\)<10}, ¿cuál es el producto de v.[-2,3,4]


(%i11)

eq:[7,−15,22,32]$
d:eucl_ext(eq[1],eq[3]);
cprima:eq[4]−eq[2]·k$
x:rat(d[1]·cprima+eq[3]·l)$
z:rat(d[2]·cprima−eq[1]·l)$
sol(i,j):=[ev(x,k=i,l=j),i,ev(z,k=i,l=j)]$
sol(k,l);

\[\]\[\tag{%o6} \left[ \mathop{-}3\mathop{,}1\mathop{,}1\right] \]

\[\]\[\tag{%o11)/R} \left[ 22 l\mathop{-}45 k\mathop{-}96\mathop{,}k\mathop{,}\mathop{-}\left( 7 l\right) \mathop{+}15 k\mathop{+}32\right] \]


(%i12)

y1:sol(1,l);

\[\]\[\tag{%o12)/R} \left[ 22 l\mathop{-}141\mathop{,}1\mathop{,}\mathop{-}\left( 7 l\right) \mathop{+}47\right] \]


(%i13)

makelist(ev(y1,l:i),i,4,7);

\[\]\[\tag{%o13)/R} \left[ \left[ \mathop{-}53\mathop{,}1\mathop{,}19\right] \mathop{,}\left[ \mathop{-}31\mathop{,}1\mathop{,}12\right] \mathop{,}\left[ \mathop{-}9\mathop{,}1\mathop{,}5\right] \mathop{,}\left[ 13\mathop{,}1\mathop{,}\mathop{-}2\right] \right] \]

Observemos que si considerásemos como parámetro la variable z, tendríamos la ecuación 5x-15y=32-22z, y mcd(5,15)=5 no nos garantiza que 5|(32-22z) para cualquier z. Sin embargo, si ocurre en el caso de 22z=32(mod 5); es decir, 2z=2(mod 5), z=1+5k
El resultado anterior no implican que no existan soluciones con \(z\neq 1+5k\), de hecho hemos visto que [-9,1,5] o [13,1,-2] son soluciones. Sin embargo, no podemos llegar a dichas soluciones siguiendo el procedimiento de considerar la variable \(z\) como parámetro.

Por las indicaciones del ejercicios, supongamos que \(z\)=6<10, entonces se plantea la ecuación 5x-15y=-100


(%i14)

sol_z:diof2(5,−15,−100);

\[\]\[\tag{%o14} \left[ \mathop{-}\left( 3 k\right) \mathop{-}20\mathop{,}\mathop{-}k\right] \]


(%i15)

makelist(append(ev(sol_z,k:i),[6]),i,−3,2);

\[\]\[\tag{%o15} \left[ \left[ \mathop{-}11\mathop{,}3\mathop{,}6\right] \mathop{,}\left[ \mathop{-}14\mathop{,}2\mathop{,}6\right] \mathop{,}\left[ \mathop{-}17\mathop{,}1\mathop{,}6\right] \mathop{,}\left[ \mathop{-}20\mathop{,}0\mathop{,}6\right] \mathop{,}\left[ \mathop{-}23\mathop{,}\mathop{-}1\mathop{,}6\right] \mathop{,}\left[ \mathop{-}26\mathop{,}\mathop{-}2\mathop{,}6\right] \right] \]

Así, la solución que buscamos es [-17,1,6]


(%i16)

[−17,1,6].[−2,3,4];

\[\]\[\tag{%o16} 61\]


Ejercicio: Resolver el sistema 3x+5y-z=12, 2x-3y+4z=3

Planteemos las ecuaciones y simplifiquemos para dejar solo dos variables


(%i4)

equ:[3·x+5·y−z=12,2·x−3·y+4·z=3]$
eq1:rat(4·equ[1]+equ[2]);

\[\]\[\tag{%o4)/R} 17 y\mathop{+}14 x\mathop{=}51\]


(%i13)

eq:[14,17,51]$
a:eq[1]$b:eq[2]$c:eq[3]$
d:eucl_ext(a,b);
x1:d[1]·(c/d[3])+b/d[3]·k$
y1:d[2]·(c/d[3])−a/d[3]·k$
print("x=",x1)$
print("y=",y1)$

\[\]\[\tag{%o9} \left[ \mathop{-}6\mathop{,}5\mathop{,}1\right] \]\[\mbox{}\\»x=»17 k\mathop{-}306\mathop{
}\]\[\mbox{}\\»y=»255\mathop{-}14 k\]


(%i16)

s1:solve(ev(equ[1],x=x1,y=y1),z);
sol(i):=[ev(x1,k=i),ev(y1,k=i),ev(ev(z,s1),k=i)]$
sol(k);

\[\]\[\tag{%o14} \left[ z\mathop{=}345\mathop{-}19 k\right] \]

\[\]\[\tag{%o16} \left[ 17 k\mathop{-}306\mathop{,}255\mathop{-}14 k\mathop{,}345\mathop{-}19 k\right] \]

Ya tenemos la ecuaciones paramétricas como solución del problema.


Ejercicio: Resolver el sistema 7x+2y+3z=5,5x+3y-2z=3


(%i4)

equ:[7·x+2·y+3·z=5,5·x+3·y−2·z=3]$
eq1:rat(−5·equ[1]+7·equ[2]);

\[\]\[\tag{%o4)/R} \mathop{-}\left( 29 z\right) \mathop{+}11 y\mathop{=}\mathop{-}4\]


(%i13)

eq:[11,−29,−4]$
a:eq[1]$b:eq[2]$c:eq[3]$
d:eucl_ext(a,b);
y1:d[1]·(c/d[3])+b/d[3]·k$
z1:d[2]·(c/d[3])−a/d[3]·k$
print("y=",y1)$
print("z=",z1)$

\[\]\[\tag{%o9} \left[ 8\mathop{,}3\mathop{,}1\right] \]\[\mbox{}\\»y=»\mathop{-}\left( 29 k\right) \mathop{-}32\mathop{
}\]\[\mbox{}\\»z=»\mathop{-}\left( 11 k\right) \mathop{-}12\]


(%i16)

s1:solve(ev(equ[1],z=z1,y=y1),x);
sol(i):=[ev(ev(x,s1),k=i),ev(y1,k=i),ev(z1,k=i)]$
sol(k);

\[\]\[\tag{%o14} \left[ x\mathop{=}13 k\mathop{+}15\right] \]

\[\]\[\tag{%o16} \left[ 13 k\mathop{+}15\mathop{,}\mathop{-}\left( 29 k\right) \mathop{-}32\mathop{,}\mathop{-}\left( 11 k\right) \mathop{-}12\right] \]


(%i18)

makelist(solve(sol(k)[i],k),i,1,3);
floor(makelist(ev(k,%[i]),i,1,3));

\[\]\[\tag{%o17} \left[ \left[ k\mathop{=}\mathop{-}\left( \frac{15}{13}\right) \right] \mathop{,}\left[ k\mathop{=}\mathop{-}\left( \frac{32}{29}\right) \right] \mathop{,}\left[ k\mathop{=}\mathop{-}\left( \frac{12}{11}\right) \right] \right] \]

\[\]\[\tag{%o18} \left[ \mathop{-}2\mathop{,}\mathop{-}2\mathop{,}\mathop{-}2\right] \]


(%i19)

makelist(sol(i),i,−3,−1);

\[\]\[\tag{%o19} \left[ \left[ \mathop{-}24\mathop{,}55\mathop{,}21\right] \mathop{,}\left[ \mathop{-}11\mathop{,}26\mathop{,}10\right] \mathop{,}\left[ 2\mathop{,}\mathop{-}3\mathop{,}\mathop{-}1\right] \right] \]


(%i20)

makelist(%[i].[7,2,3],i,1,3);

\[\]\[\tag{%o20} \left[ 5\mathop{,}5\mathop{,}5\right] \]


Navegación de entradas

MAD: Anexo a la Teoría de números
MAD: Teoría de Grafos

Novela

La Loba, la lucha fraticida por un reino

La Loba, la lucha fratricida por un reino.

Urraca, señora de Zamora, acusada de instigar la muerte de su hermano, el rey Sancho de Castilla, deberá defenderse de la acusación, al tiempo que luchará por mantener la cohesión entre los hermanos y los reinos cristianos: una lobera de fieros lobeznos.

👉 En amazon

Entradas recientes

  • MAD: Teoría de Grafos
  • MAD: Ecuaciones diofánticas y de congruencias con maxima
  • MAD: Anexo a la Teoría de números
  • MAD: Ecuación diofántica
  • MAD: Congruencias con maxima
marzo 2026
L M X J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
« Feb    

Categorías

  • Álgebra Lineal
  • general
  • Matemática Discreta
  • MathBio

Etiquetas

Prácticas MAD Prácticas MathBio Prácticas Álgebra

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org
©2026 Diario de clases | Diseño: Tema de WordPress Newspaperly