Disciplinas relacionadas con la matemática => Temas de computación => Mensaje iniciado por: Julio_fmat en 24/10/2017, 02:51:07 am



Título: Fracciones continuas en Magma
Publicado por: Julio_fmat en 24/10/2017, 02:51:07 am
Escriba un programa Magma que desarrolle el número [texx]\sqrt{13}[/texx] en fracción continua, y ocupe dicho desarrollo para encontrar las siguientes convergentes:

[texx]\dfrac{p}{q}\in \mathbb{Q}[/texx] tal que [texx]\left |{\sqrt{13}-\dfrac{p}{q}}\right |<10^{-4}.[/texx]

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.


Título: Re: Fracciones continuas en Magma
Publicado por: sugata en 24/10/2017, 03:03:40 am
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 [texx]n=0[/texx]

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.


Título: Re: Fracciones continuas en Magma
Publicado por: Luis Fuentes en 24/10/2017, 04:37:34 am
Hola

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

[texx]\dfrac{p}{q}\in \mathbb{Q}[/texx] tal que [texx]\left |{\sqrt{13}-\dfrac{p}{q}}\right |<10^{-4}.[/texx]

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?

[texx]n[/texx] 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.

Cita
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.

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

son elementos de una matriz.

Saludos.