0 Daumen
1,5k Aufrufe

ich soll die rekursive Folge von 2+(sin(x))^2 = e^{x-3} in Maple bilden, also mittels Fixpunkt-Iteration eine näherungsweise Lösung der Gleichung bestimmen. dafür soll ich die Gleichung in die Form x=g(x) bringen und einen geeigneten Startwert wählen.

Das Ergebnis soll mit der Lösung der Gleichung (fsolve soll verwendet werden) verglichen werden.

Hier mein Ansatz:

restart:

f:= x -> 2+(sin(x))^2 = exp(x-3);

x[0]:= 0;

for x from 0 to 9 dox[x+1]:= f(x[x]);end do;
Und dann bekomme ich einen error, kann mir da jemand weiterhelfen? Die Aufgabe muss unbedingt in Maple gelöst werden und ich komme hier einfach nicht mehr weiter :/
LG Und Vielen Dank für eure Antworten :)
Avatar von

1 Antwort

+1 Daumen
 
Beste Antwort

zu https://de.wikipedia.org/wiki/Fixpunktiteration

Ich finde den Begriff "selbstkonvergierende Iterationsgleichung aufstellen" passender.

Man stellt nach x um:

2+(sin(x))² = exp(x-3) | ln

x-3=log(sin(x)²+2)

x=log(sin(x)²+2)+3

und versucht dabei, eine möglichst waagerechte Kurve (also was mit log oder Wurzel) zu bekommen

http://www.gerdlamprecht.de/Roemisch_JAVA.htm#log(@Psin(x),2)+2)+3@N@B0]=4;@N@Bi+1]=Fx(@Bi]);@Ni%3E19@N0@N0@N#

Bild Mathematik

Zugabe:

Die Konvergenzgeschwindigkeit kann mit der Ableitung beschleunigt werden (Newton-V. Beispiel 118):

Für Nullfunktion einfach das x durch Subtraktion auf rechte Seite bringen...

http://www.gerdlamprecht.de/Roemisch_JAVA.htm#log(@Psin(x),2)+2)+3-x@Na=0;@B0]=4;//Startwert@Nb=@Bi];a=@Bi+1]=b-Fx(b)/@Lb);@N@Aa-b)%3C4e-14@N1@N0@N#

Bild Mathematik

Nun sind bei gleicher Genauigkeit statt 36 Schritte nur 4 Schritte nötig!

Avatar von 5,7 k

danke nochmal für deine Antwort. Ich verstehe deinen Lösungsweg, jedoch weiß ich nicht, wie ich das in Maple eingeben soll, wie definiere ich den Startwert? Ich möchte gerne deine zweite Methode verwenden, sodass er nicht bis 36 hochzählen muss.


Bild Mathematik

So habe ich es mal versucht, warum erhalte ich keinen fixpunkt? ich erhalte immer unterschiedliche Werte. Wenn ich es höher rechnen lasse oder mal das -x wegnehme und deine erste Methode versuche erhalte ich auch keinen Fixpunkt an der 36 Stelle, irgendwas mache ich anscheinend falsch und ich weiß nicht was, ich bin gerade am verzweifeln, da ich noch so viel zu tun habe und mich diese beiden Aufgaben schon seit stunden aufhalten...

Bitte hilf mir :/


LG

Ich kann nichts auf Deinen Bildern erkennen, da Dein hoch geladenes Bild zu Breit ist -> dies wird dann hier auf 680 Pixel Breite verlustbehaftet komprimiert und heraus kommt so etwas:

Bild Mathematik

Also erst das Bild zusammenschieben (ohne Zoom!) -> etwa 40% des rechten Bildes sind uninteressant (die kann man abschneiden)

damit es vor dem Hochladen die 680 Pixel-Breite nicht überschreitet.

Möglichst auch nicht JPG (wieder verlustbehaftet) sondern PNG.

Das gleiche gilt auch für Deine andere Frage...

Die Newton-Iteration weicht zwar von der Ausgangsfrage ab, aber hat Dich überzeugt.

Der Iterationsrechner kann numerisch ableiten. Symbolisch abgeleitet gilt:

d/dx(log(sin(x)³ + 2) + 3 - x) = (2*sin(x)*cos(x))/(sin(x)² + 2) - 1
mit x² = pow(x,2)

Bild Mathematik

Ich hoffe man sieht das jetzt besser, vielleicht wäre es doch besser, wenn ich die erste Methode anwende und den bis zur 36. Stelle laufen lasse. Bei diesem code hier fehlt doch nur noch der Startpunkt oder?eventuell habe ich mich auch bei dem Schritt vertan an dem das Ergebnis des vorigen schrittes erneut in die Folge eingesetzt wird? Irgendwas fehlt da, ich weiß nur nicht was.

§1: Ja es fehlt wie in meinen Bildern zu sehen das Init:

x:=4

vor der for schleife

§2: nicht die Funktion wird zugewiesen, sondern das neue x

welches dann immer wieder neu eingesetzt wird (daher "Iteration"):

x:= ... sin(x)...

dann muss aber in der for-Schleife eine andere Index {Lauf-} Variable!!

oder man nimmt {z.B. für das Anzeigen der Zwischenergebnisse}

Feldvariablen {wie bei meinem Iterationsrechner {aB[...]  }

dann Init: f[0]:=4

for x from 1...

f[x]:=  ... sin(f[x-1])...

§3: ja, bleibe besser bei der Originalaufgabe und erweitere auf to 34

damit Du erst mal diesen Teil verstehen lenst

Bild Mathematik

Was genau fehlt jetzt noch? Bekomme noch diesen error:

Error, invalid input: evalf expects its 2nd argument, n, to be of type posint, but received [0]

Tut mir leid, aber dieses Programm, bzw. diese beiden Aufgaben liegen mir gar nicht... :D

Ich weiß nicht wie ich das ganze wieder in die Folge einfüge.

Du hast mein "oder" nicht richtig gelesen und noch immer beide vermischt!

Für Dein letztes Beispiel muss es lauten:

f[x]:= log(sin(f[x-1]) ^ 2+2)+3;

das zusätzliche evalf scheint mir umständlich

f[x]:= evalf(log(sin(f[x-1]) ^ 2+2)+3);

Vielen Dank, jetzt funktioniert es, ich lasse es jetzt bis 36 hochzählen und erhalte dann bei der 21 den Fixpunkt. Das evalf allerdings war nötig, ansonsten erhalte ich die jeweiligen folgen anstatt die fließpunktzahlen. Eine Frage noch, wie kann man das x-1 verstehen? Ich habe das zwar in den Folien mal irgendwo gelesen aber habe es zu diesem Zeitpunkt schon nicht verstanden.

f[x] ist der aktuelle Wert der Feldvariablen mit Index {Position} x

und f[x-1] ist sein Vorgänger { die Position davor }

Genau das steckt im Wort "Iteration" drin: man setzt das erhaltene Ergebnis immer wieder als neues Argument (Übergabeparameter) in die selbe Funktion ein...

und im Falle der "Konvergenz" hat man ein neues Ergebnis, welches besser passt...

und im unendlichen (bei endlichen Stellen natürlich nur nach endlich vielen Schritten {Iterationen}

ändert sich das Ergebnis nicht mehr -> eine Art "eingeschwungener Zustand"

Achso, vielen Dank für die sehr gute Erklärung, habe die Aufgabe jetzt verstanden :)

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community