Вопрос

Я пытаюсь написать функцию Matlab, которая вычисляет, сколько слагаемых, m, требуется золотой дроби, чтобы получить n цифр точности.Вот что у меня есть на данный момент, но я продолжаю получать результат 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

Я думаю, это распространенный вопрос для тех, кто изучает теорию чисел или только начинает изучать Matlab.Есть какой-нибудь совет?Спасибо!

Это было полезно?

Решение

Тот Самый while условием является отсутствие abs.Это должно быть

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

С вашим кодом в его нынешнем виде начальное значение p (а именно 2) больше, чем phi, так что phi-p является отрицательным, и while цикл никогда не вводится.Вот почему вы получаете m равный 0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top