Matlab-Code für Kettenbruch im Goldenen Schnitt
-
20-12-2019 - |
Frage
Ich versuche, eine Matlab-Funktion zu schreiben, die berechnet, wie viele Terme m der goldene Bruch benötigt, um eine Genauigkeit von n Stellen zu erreichen.Hier ist, was ich bisher habe, aber ich erhalte immer wieder eine Ausgabe von 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
Ich denke, das ist eine häufige Frage für diejenigen, die Zahlentheorie studieren oder gerade erst anfangen, Matlab zu lernen.Irgendein Rat?Danke!
Lösung
Der while
Bedingung fehlt ein abs
.Es sollte sein
while abs(phi-p)>10^(-n)
Mit Ihrem Code in seiner jetzigen Form ist der Anfangswert von p
(nämlich 2) ist größer als phi
, Also phi-p
ist negativ und die while
Die Schleife wird nie betreten.Deshalb bekommen Sie m
gleich 0
.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow