Kann mir jemand die Fixpunktiteration erklären?

2 Antworten

Beispiel :

I.) (x + 5) * (y + 1) = (x + 8) * (y - 3)

II.) (x - 3) * (y - 1) = (x - 1) * (y + 3)

Bei der Fixpunktiteration stellt man zunächst so um, dass auf der linken Seite eine Variable ganz für sich alleine ist :

I.) x = -5 + (x + 8) * (y - 3) / (y + 1)

II.) y = 1 + (x -1) * (y + 3) / (x - 3)

Das nennt man eine Fixpunktform.

Nun legt man Startwerte fest, die können

  • anhand eines Graphen geschätzt sein
  • anhand einer Wertetabelle geschätzt sein
  • einfach nur ausgedacht sein
  • mit einem Zufallsgenerator ausgedacht sein

usw.

Mit manchen Startwerten wird es konvergieren, mit manchen nicht.

Manchmal konvergiert es mit nahezu jedem Startwert, manchmal gibt es überhaupt keine Konvergenz, egal welche Startwerte man nimmt.

Meistens kann man ein und dieselbe Gleichung auch auf verschiedene Art und Weise nach einer Variablen umstellen, sodass man verschiedene Fixpunktformen erhalten kann.

Wobei manche Fixpunktformen konvergieren, und eventuell manche nicht.

Für dein Beispiel nehme ich die Startwerte x = 0 und y = 0

Die setzt du nun in die Fixpunktgleichungen ein -->

x = -5 + (x + 8) * (y - 3) / (y + 1)

y = 1 + (x -1) * (y + 3) / (x - 3)

x = -5 + (0 + 8) * (0 - 3) / (0 + 1) = -29

y = 1 + (-29 -1) * (0 + 3) / (-29 - 3) = 3.8125

Nun hast du neue Startwerte --> x = -29 und y = 3.8125

Und mit denen machst du ganz genau das, was du vorher mit den ersten Startwerten auch gemacht hast, und du erhältst wieder neue Startwerte und so weiter.

Und das machst du immer so weiter, das nennt sich Iteration.

Nach der 13-ten Iteration erhältst du -->

x = -2.004650655778308

y = 7.009633452845481

Und da ist bereits gut genug erkennbar, dass die Lösung wohl

x = -2 und y = 7

sein wird.

Nach der 60-ten Iteration ist der Fehler kleiner als 10 ^ - 14, und das ist genauer als die meisten Taschenrechner.

Da das zwar von Hand zu machen ist, aber trotzdem auch aufwendig ist, verwendet man einen programmierbaren Taschenrechner, der sowas kann. Dann geht es innerhalb von Sekunden.

Man kann auch ein Computerprogramm schreiben, da muss man dann halt eine Programmiersprache können, BASIC reicht für sowas bereits vollkommen aus.

Vielleicht werde ich noch eine weitere Antwort schreiben.

Noch ein Beispiel :

x = e ^ (-x)

Startwert :

x = 1

x = e ^ (-1)

x = 0.36787944117144233

x = e ^ (- 0.36787944117144233)

x = 0.69220062755534635

x = e ^ (- 0.69220062755534635)

x = 0.5004735005636368

x = e ^ (- 0.5004735005636368)

x = 0.6062435350856

und immer so weiter.

Nach 65 Iterationen erhält man :

x = 0.5671432904097838

Das ist auf 15 Stellen nach dem Komma genau.