Autor Tema: Fracciones continuas en Magma

0 Usuarios y 1 Visitante están viendo este tema.

24 Octubre, 2017, 07:51 am
Leído 1404 veces

Julio_fmat

  • Héroe
  • Mensajes: 2,234
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
    • Fmat
Escriba un programa Magma que desarrolle el número \( \sqrt{13} \) en fracción continua, y ocupe dicho desarrollo para encontrar las siguientes convergentes:

\( \dfrac{p}{q}\in \mathbb{Q} \) tal que \( \left |{\sqrt{13}-\dfrac{p}{q}}\right |<10^{-4}. \)

Hola, estoy recién aprendiendo el lenguaje de programación Magma... Mi profesor para este caso lo desarrolla así:

> L:=ContinuedFraction(Sqrt(13));
> n:=0;
> repeat
n:= n+1;
M:= Convergents(L[1..n]);
until Abs(Sqrt(13)-M[1,1]/M[2,1]) lt 10^(-4);
> n;
8
> M[1,1]/M[2,1];
256/71

Algunos pasos que no entiendo son..., ¿porqué hacer n=0? Uso repeat siempre? ¿qué significa until? M[1,1], M[2,1] son matrices?

Bueno eso, Gracias de antemano.
"Haz de las Matemáticas tu pasión".

24 Octubre, 2017, 08:03 am
Respuesta #1

sugata

  • Matemático
  • Mensajes: 2,546
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
No conozco este lenguaje en particular, pero vamos a ver si te puedo ayudar.
Habitualmente en algunos lenguajes las variables cogen el último valor, o tienen valor vacío, de ahí que haya que definir \( n=0 \)

Respecto al repeat,  hay que usarlo cuando se necesite, y repetirá todo hasta llegar a until,  que significa hasta. Es decir, repite lo siguiente hasta que pase algo.
Lo de los corchetes, ni idea.

24 Octubre, 2017, 09:37 am
Respuesta #2

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 46,534
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola

Escriba un programa Magma que desarrolle el número \( \sqrt{13} \) en fracción continua, y ocupe dicho desarrollo para encontrar las siguientes convergentes:

\( \dfrac{p}{q}\in \mathbb{Q} \) tal que \( \left |{\sqrt{13}-\dfrac{p}{q}}\right |<10^{-4}. \)

Hola, estoy recién aprendiendo el lenguaje de programación Magma... Mi profesor para este caso lo desarrolla así:

> L:=ContinuedFraction(Sqrt(13));
> n:=0;
> repeat
n:= n+1;
M:= Convergents(L[1..n]);
until Abs(Sqrt(13)-M[1,1]/M[2,1]) lt 10^(-4);
> n;
8
> M[1,1]/M[2,1];
256/71

Algunos pasos que no entiendo son..., ¿porqué hacer n=0?

\( n \) es simplemente un contador para contar cuantas veces iteramos el algoritmo. Empieza en n=0, porque cada vez que ejecuta el algoritmo le añade uno. Así por ejemplo si sólo lo ejectua una vez pasaría a valer n=0+1=1.

Citar
Uso repeat siempre? ¿qué significa until?

¿Siempre? Repeat ....until, es un bucle que repite lo que se pone en medio hasta que se cumpla la condición indicada.

Citar
M[1,1], M[2,1] son matrices?

son elementos de una matriz.

Saludos.