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!

War es hilfreich?

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
scroll top