|
|
Approximation von Pi rekursiv |
|
latingirl |

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2012, 13:42
Titel: Approximation von Pi rekursiv
|
 |
|
 |
|
Hallo zusammen!
Ich sitze vor folgender Aufgabe:
Approximieren Sie die Zahl Pi (über Umfang von n-Eck im Einheitskreis), indem Sie ein entsprechendes Programm mit Matlab verfassen, welches die Rekursionsformel
s_2n = s_n/sqrt{2+sqrt{4-s_n ^2}} verwendet.
Puuh, ok, also ich hab mir mal mehrere Dinge überlegt:
a) Startwert könnte z.B. s_6 = 1 sein.
b) Der Umfang ns_n geht ja für immer größer werdende n gegen 2Pi.
D.h. Pi = 0.5*n*s_n.
c) Ich denke, dass es sinnvoll wäre eine Funktion zu verfassen in matlab, etwa function [pi] = approximation(n).
Und da tut sich ein großes Problem auf:
Die Rekursionsformel ist ja immer für s_2n definiert. Man könnte jetzt natürlich 2n durch n und n durch 0.5*n ersetzen, aber das scheint mir zu umständlich und dann müsste n ja stets gerade sein.
d) Rekursiv mit matlab zu rechnen, bedeutet ja, dass ich dann iwann mal etwas aufrufe wie approximation(n-1). Aber mit approximation soll ja schon pi approximiert werden und nicht erst die Seitenlängen ausgerechnet werden.
Habt ihr einen Tipp zu a) bis d)?
Würde mir sicher eine große Hilfe sein, ich grübel auch noch weiter und weiter und weiter.
Danke soweit!
|
|
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.10.2012, 22:19
Titel:
|
 |
Hallo latingirl,
die Rekursionsformel ist besonders einfach, da sie gar nicht von n abhängt.
Damit ist es auch egal ob n=1,2,3,4,5,... läuft oder n=6,12,24,48,...
Entscheidend ist, dass die Rekursion eine gewisse Anzahl mal aufgerufen wird.
Grüße
Sirius
|
|
|
latingirl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 07:24
Titel:
|
 |
Hallo Sirius!
Da freue ich mich aber sehr, dass sich jemand gefunden hat, der mir antwortet
Ich verstehe leider nicht ganz, warum die Rekursion nicht von n abhängt; wahrscheinlich meinst du, dass nur das Endergebnis zur Näherung für Pi wichtig ist, oder?
Habe echt noch massiv Probleme mit dem Verfassen eines entsprechenden Programms in Matlab.
Wie gebe ich es ein, dass Matlab ne Rekursion mit 2n und n akzeptiert.
Meine Funktion approximation und dann
approximation(2n) = ... approximation(n) ...
scheint nicht der richtige Weg zu sein
Brauche noch heute nen Tipp, ist echt dringend!
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 11:55
Titel:
|
 |
Hallo,
im Aufgabentext steht nirgends, wann die Approximation gut genug ist.
Also nehmen wir mal an, Du willst 5 Schritte gehen:
Wie n aus m zu berechnen ist, ist einfach.
Wenn Du s_n rekursiv berechnen willst, würde ich als Parameter die
Anzahl an noch zu gehenden Schritten übergeben.
|
|
|
latingirl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 12:18
Titel:
|
 |
Nochmals Hallo!
Also ich denke, dass es ein wenig zu kompliziert ist, die noch verbleibenden Schritte an die Funktion zu übergeben.
Ich denke es wäre besser, die Anzahl n der "Schritte" zu übergeben, die insgesamt gegangen werden sollen, so dass ich Pi dann durch das n-Eck mit der Seitenlänge s_n approximiere.
Leider helfen mir deine Ausführungen nicht sehr viel weiter...
Ich sehe auch nicht, wie ich n aus m berechnen soll und wozu.
Aber trotzdem Danke für deine Bemühung!
Wie gesagt, ich hab vor allem Schwierigkeiten damit, s_2n in die Rekursion einzubauen.
lg
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 13:17
Titel:
|
 |
Hallo,
wenn Du n durch n=6*2^m ersetzt, wird aus s_2n -> s_(m+1),
was mehr an eine rekursive Folge erinnert.
Grüße
Sirius
|
|
|
latingirl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 13:43
Titel:
|
 |
Ok, das verstehe ich.
Aber wie setze ich das jetzt in matlab um?
Ich weiß, dass das nicht richtig ist, aber ich weiß leider nicht, wie ich's verbessern könnte
Als Fehlermeldung erscheint beim Aufruf von z.B. seite(5)
??? Undefined function or method 'seite' for input arguments of type 'double'.
Habt ihr nen Tipp?
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 14:13
Titel:
|
 |
so sieht typischerweise eine rekursive Funktion aus:
|
|
|
latingirl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 14:26
Titel:
|
 |
Was ist falsch?
Pi ergäbe sich ja dann aus 0.5*6*2^m*seite(m), oder?
Das kann ich dann aber nicht mehr in die Funktion-Datei packen, oder?
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 15:10
Titel:
|
 |
Hallo latingirl,
falsch ist, dass Du zu schnell aufgibst und keine konkreten Fragen stellst.
Die Eckigen Klammern um sqrt sind Dir hoffentlich auch schon aufgefallen...
Die Rekusionsformel liefert nunmal nur die Seitenlänge eines n-Ecks.
Das Umrechnen auf pi erfolgt dann sinnvollerweise in einer zweiten Funktion.
Grüße
Sirius
|
|
|
MaFam |

Forum-Meister
|
 |
Beiträge: 799
|
 |
|
 |
Anmeldedatum: 02.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2009b
|
 |
|
|
 |
|
Verfasst am: 21.10.2012, 19:23
Titel:
|
 |
Hallo,
das lässt sich doch mit einer simplen Iteration bewerkstelligen:
Man beachte den Zusammenhang U_n=2*s_n -> 2*Pi für n -> unendlich.
Grüße, Marc
|
|
|
latingirl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 22
|
 |
|
 |
Anmeldedatum: 11.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.10.2012, 08:44
Titel:
|
 |
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|