Pregunta

Estoy intentando escribir una función de Matlab que calcule cuántos términos, m, necesita la fracción áurea para llegar a n dígitos de precisión.Esto es lo que tengo hasta ahora, pero sigo obteniendo un resultado de 0.

phi = (1+sqrt(5))/2;
p=1;
p=[1+1/p];
LoopCounter = 0;
while (phi-p)>10^(-n)
    p=[1+1/p];
    LoopCounter = LoopCounter + 1;
end
m=LoopCounter;
m

Creo que esta es una pregunta común para quienes estudian teoría de números o recién comienzan a aprender Matlab.¿Algún consejo?¡Gracias!

¿Fue útil?

Solución

El while a la condición le falta un abs.Debería ser

while abs(phi-p)>10^(-n)

Con su código tal como está, el valor inicial de p (es decir, 2) es mayor que phi, entonces phi-p es negativo y el while El bucle nunca se ingresa.Es por eso que obtienes m igual a 0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top