Pergunta

Estou tentando escrever uma função Matlab que calcula quantos termos, m, são necessários a fração áurea para chegar a n dígitos de precisão.Aqui está o que tenho até agora, mas continuo obtendo uma saída 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

Acho que essa é uma dúvida comum para quem estuda Teoria dos Números ou está começando a aprender Matlab.Algum conselho?Obrigado!

Foi útil?

Solução

O while condição está faltando um abs.Deveria ser

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

Com o seu código como está, o valor inicial de p (ou seja, 2) é maior que phi, então phi-p é negativo e o while loop nunca é inserido.É por isso que você consegue m igual a 0.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top