код matlab для непрерывной дроби золотого сечения
-
20-12-2019 - |
Вопрос
Я пытаюсь написать функцию 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
.
Не связан с StackOverflow