Saltar al contenido

Diario de clases

Clases de Jesús Soto

Menú
  • Fórmulas
Menú

MAD: El mcd con maxima

Posted on 18 de febrero de 2026

El pasado día vimos que el algoritmo de Euclides se fundamenta en el teorema:

Teorema: Si \(a\) y \(b\) son números enteros, \[\mathbf{mcd}(a,b)=\mathbf{mcd}(b,r),\] donde \(r\) es el resto del algoritmo de la división para \(a\) y \(b\) (\(a=qb+r\)).

Algoritmo para el cálculo del \(\mathbf{mcd}\)

\[\begin{array}{l} r=[b,\mathbf{mod}(b,a)];\\ i=2;\\ \mathbf{while}(r[i]>0) \\ \qquad r[i++]=\mathbf{mod}(r[i-1],r[i]); \\ \mathbf{end}\\ \mathbf{print}(«\mathbf{mcd}:», r[i-1])\end{array} \]

Ejercicio: Crear una algoritmo que calcule el \(\mathbf{mcd}(a,b)\)

(%i2) mcd(a,b):=block([r1,r2,r3],
   r1:a,
   r2:b,
   r3:mod(r1,r2),   
   while(r3>0)do(
       r1:r2,
       r2:r3,
       r3:mod(r1,r2)
   ),   
   r2
)$
mcd(21,15);

\[3\]


Este algoritmo nos calcula el mcd; sin embargo, para posteriores ejercicios utilizaremos el proceso pasado que vimos. Por ejemplo, para calcular el \(\mathbf{mcd}(43134,343)\) construimos la siguiente tabla:

cociente

125

1

3

12

43134

343

259

84

7

259

84

7

0

resto

Tanto la fila cociente como la fila resto las utilizaremos más adelante. Veamos cómo obtenemos ambas filas con un algoritmo:

Algoritmo de Euclides

\[\begin{array}{l}
q=\lfloor b/a\rfloor;\\
r=\mathbf{mod}(b,a);\\
i=1;\\
n=a;\\
\mathbf{while}(r[i]>0) \\
\qquad q[i++]=\lfloor n/r[i]\rfloor ;\\
\qquad r[i++]=\mathbf{mod}(n,r[i]); \\
\qquad n=r[i];\\
\qquad i=i+1;\\
\mathbf{end}\\
\mathbf{print}(«Cocientes:», q)\\
\mathbf{print}(«Restos:», r)\end{array} \]

Ejercicio: Crear un algoritmo que calcule el \(\mathbf{mcd}(43134,343)\) guardando los cocientes y los restos sucesivos.

(%i2) algEucl(a,b):=block([q,r,i,n],
   q:[floor(a/b)],
   r:[mod(a,b)],
   i:1,
   n:b,
   while(r[i]>0)do(   
       q:append(q,[floor(n/r[i])]),
       r:append(r,[mod(n,r[i])]),
       n:r[i],
       i:i+1   
   ),
   [q,r]
)$
algEucl(43134,343);

\[\left[ \left[ 125,1,3,12\right] ,\left[ 259,84,7,0\right] \right] \]


Procedimiento recursivo

Ejercicio: Crear un algoritmo recursivo que calcule el \(\mathbf{mcd}\).

(%i2) mcd(a,b):=if (b=0) then a else mcd(b,mod(a,b))$
mcd(114,32);

\[\tag{%o2} 2\]


Ejercicio: Crear un algoritmo recursivo que calcule los cocientes en el cálculo de \(\mathbf{mcd}\).


(%i2)

cEucl(a, b) := if b = 0 then []
                else cons(floor(a/b), cEucl(b, mod(a, b)))$
cEucl(43134,343);

\[\tag{%o2} \left[ 125{,}1{,}3{,}12\right] \]


mcm

Ya estamos en condiciones para determinar el \(\mathbf{mcm}\) utilizando:

Teorema: Dados dos números enteros \(a\) y \(b\), entonces \[\mathbf{mcm}(a,b)=\frac{|ab|}{\mathbf{mcd}(a,b)}\]

Ejemplo: ¿Cuál es el valor de \(\mathbf{mcm}(30,25)\)?

Primero definimos el mcd:

(%i1) mcd(a,b):=if (b=0) then a else mcd(b,mod(a,b))$

Ahora aplicamos \[\mathbf{mcm}(a,b)=\frac{|ab|}{\mathbf{mcd}(a,b)}\]

(%i3) mcm(a,b):=abs(a·b)/mcd(a,b)$
mcm(30,25);

\[150\]


Teorema de Bézout

Con un proceso recursivo

Ejemplo: Utilizar los cocientes y restos obtenidos del ejercicio anterior para resolver \[43134x+343y=\mathbf{mcd}(43134,343)\]

Tengamos en cuenta que \(\mathbf{mcd}(43134,343)=7\). Consideremos a y b como constantes:


(%i5)

q:[125,1,3,12]$
r1:a−q[1]·b$
r2:b−q[2]·r1$
7=r1−q[3]·r2$
rat(%);

\[\tag{%o5)/R} 7\mathop{=}\mathop{-}\left( 503 b\right) \mathop{+}4 a\]

Recordemos que \(a=43134\) y \(b=343\).


Ejemplo: Sea v=[a,b], la solución de Bezout de \(\mathbf{mcd}(54180,47355)\). ¿Cuánto es, en valor absoluto, el producto escalar [3,2].v/||v||?


(%i2)

mcd(a,b):=if (b=0) then a else mcd(b,mod(a,b))$
cEucl(a, b) := if b = 0 then []
                else cons(floor(a/b), cEucl(b, mod(a, b)))$


(%i6)

n:54180$
m:47355$
d:mcd(n,m);
q:cEucl(n,m);

\[\tag{d} 105\]

\[\tag{q} \left[ 1\mathop{,}6\mathop{,}1\mathop{,}15\mathop{,}4\right] \]


(%i11)

r1:a−q[1]·b$
r2:b−q[2]·r1$
r3:r1−q[3]·r2$
d=r2−q[4]·r3$
rat(%);

\[\tag{%o11)/R} 105\mathop{=}127 b\mathop{-}111 a\]

Ya tenemos la solución de Bezout que buscamos.


(%i14)

v:[−111,127]$
[3,2].v/sqrt(v.v);
abs(%),numer;

\[\tag{%o13} \mathop{-}\left( \frac{79}{5 \sqrt{1138}}\right) \]

\[\tag{%o14} 0.4683666417157143\]


Con matrices

Ejemplo: Sea v=[a,b], la solución de Bezout de \(\mathbf{mcd}(462,216)\). ¿Cuánto es, en valor absoluto, el producto escalar [-1,5].v/||v||?


(%i2)

cEucl(a, b) := if b = 0 then []
                else cons(floor(a/b), cEucl(b, mod(a, b)))$
q:cEucl(462,216);

\[\tag{q} \left[ 2\mathop{,}7\mathop{,}5\right] \]


(%i5)

m:ident(2)$
makelist(m:m.matrix([0,1],[1,−q[i]]),i,1,length(q))$
m:%[length(q)];

\[\tag{m} \begin{pmatrix}\mathop{-}7 & 36\\
15 & \mathop{-}77\end{pmatrix}\]

Ya tenemos la solución de Bezout que buscamos.


(%i8)

v:[m[1,1],m[2,1]]$
[−1,5].v/sqrt(v.v);
abs(%),numer;

\[\tag{%o7} \frac{82}{\sqrt{274}}\]

\[\tag{%o8} 4.953801165307452\]


Ejemplo: Sea v=[a,b], la solución de Bezout de \(\mathbf{mcd}(43134,343)\). ¿Cuánto es, en valor absoluto, el producto escalar [4,-3].v/||v||?

Por el ejercicio anterior sabemos que

(%i2) q:[125,1,3,12]$

(%i6) l:makelist(matrix([0,1],[1,–q[1][i]]),i,1,length(q[1]));
l2:matrix([1,0],[0,1])$
l3:makelist(l2:l2.l[i],i,1,length(l));
print(«Solución de Bezout: («,l3[4][1,1],«,»,l3[4][2,1],«)»)$

(l)[(011−125),(011−1),(011−3),(011−12)](l3)[(011−125),(1−1−125126),(−14126−503),(4−49−5036162)]Solución de Bezout: (4,−503)

(%i9) v:[l3[4][1,1],l3[4][2,1]]$
[4,–3].v/sqrt(v.v);
abs(%),numer;

(%o8) 30510121(%o9) 3.03171328560307


Algoritmo extendido de Euclides

El proceso que hemos calculado con matrices lo podemos programar de la siguiente forma:

(%i1) eucl_ext(a,b):=block([s,t,r],
   s:[1,0,0],
   t:[0,1,0],
   r:[a,b],
   while (r[2]>0) do (    
       s[3]:s[1]–floor(r[1]/r[2])*s[2],
       t[3]:t[1]–floor(r[1]/r[2])*t[2],
       s:[s[2],s[3],0],
       t:[t[2],t[3],0],
       r:[r[2],mod(r[1],r[2])]
   ),
   [s[1],t[1],r[1]]
)$

Función \(\varphi\) de Euler

Ejercicio: Para \(n\in\mathbb{Z}^+\), se define la función \(\varphi\) de Euler como \[\varphi (n)=|\{m\in\mathbb{Z}^+|m<n, mcd(n,m)=1\}|.\]
Crear una función en maxima que determine \(\varphi(n)\) para \(n\in\mathbb{Z}^+\).

(%i1) fi(n):=block([f,i],
   f:1,
   for i:2 thru n–1 do(
       if (mcd(i,n)=1) then f:f+1
   ),
   f
)$

Ecuaciones diofánticas de dos variables

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


 

Ejercicio: ¿Cuál es la suma de dígitos del \(\textbf{mcd}(1108955617, 2283735839)\)?

  • 21
  • 14
  • 6

B.)

MAD: Máximo común divisor y Ecuación diofántica de 2 variables

Posted on 16 de febrero de 2026

Máximo común divisor Consideremos dos números enteros Si \(a\) y \(b\) distintos de cero, decimos que \(c\) es un divisor común de \(a\) y \(b\) si \(c|a\) y \(c|b\). Cuando existen, únicamente,…

El algoritmo de la división con maxima

Posted on 11 de febrero de 2026

1. El algoritmo de la división Dados dos números enteros \(a\) y \(b\), con \(a\) no nulo, la división euclídea asocia un cociente \(q\in\mathbb{Z}\) y un resto \(r\in\mathbb{Z}\), únicos, que verifican: \[b=q\,a+r,\quad…

MAD: Divisibilidad y Algoritmo de la división

Posted on 9 de febrero de 2026

Divisibilidad El concepto de divisibilidad es uno de los más importantes que veremos en Teoría de números. Con él pretendemos dar una sustitución de la división que no siempre es posible en…

MAD: Presentación

Posted on 2 de febrero de 2026

En la presentación del día de hoy hemos visto Presentación Objetivos de la asignatura Metodología y Evaluación Bibliografía Objetivos, Metodología y Evaluación El contenido de la asignatura está centrado en tres bloques:…

ALG: Ejercicios de repaso

Posted on 17 de diciembre de 2025

Ejercicio: Sea la matriz \(A=\begin{bmatrix}4 & 2 & 0 & 0\\ 3 & 3 & 0 & 0\\ 0 & 0 & 2 & 5\\ 0 & 0 & 0 & 2\end{bmatrix}\)…

ALG: Diagonalización de una matriz

Posted on 15 de diciembre de 2025

Dado \(\mathbf {A} \in M_{n\times n}(\mathbb {K} )\), una matriz cuadrada con valores sobre un cuerpo \(\mathbb {K}\), decimos que \(\mathbf{A}\) es diagonalizable si, y sólo si, \(\mathbf{A}\) se puede descomponer de…

ALG: Autovectores y autovalores con maxima

Posted on 12 de diciembre de 2025

El pasado día vimos que para calcular los valores propios o autovalores necesitamos el polinomio característico. Ejercicio: Determinar los autovalores de la matriz \[\begin{bmatrix}1 & 1 & 0\\ 2 & 0 &…

ALG: Autovectores y autovalores

Posted on 10 de diciembre de 2025

Autovalores Denominamos esta parte autovectores y autovalores, también conocidos como vectores y valores propios de una matriz. Su definición es simple: Dada una matriz, \(A\in\mathcal{C}_n(\mathbb{K})\), real o compleja, cuerpos que trataremos, decimos…

MathBio: Modelización de procesos biológicos

Posted on 9 de diciembre de 2025

Muchos procesos biológicos ocurren continuamente a través del tiempo. Algunos ejemplos son el cambio de concentración de un fármaco en el torrente sanguíneo de un paciente, o el crecimiento de la masa…

Paginación de entradas

1 2 … 7 Siguientes

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: El mcd con maxima
  • MAD: Máximo común divisor y Ecuación diofántica de 2 variables
  • El algoritmo de la división con maxima
  • MAD: Divisibilidad y Algoritmo de la división
  • MAD: Presentación
febrero 2026
L M X J V S D
 1
2345678
9101112131415
16171819202122
232425262728  
« Dic    

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