Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Fixpunktgleichungen (Simulationen)

Viele Gleichungen können mit einer Umformung zu einer sog. Fixpunktgleichung annähernd gelöst werden. Dabei wird die Gleichung so umformuliert, dass auf der linken Seite des Gleichheitszeichens die gesuchte Größe alleine steht. Beispiel:

3x2 + 15x = 18

wird zu

x = (18 - 3x2) / 15

Um die Gleichung mit einer Fixpunktiteration zu lösen, wird zunächst die Variable x mit einem beliebigen Startwert (z. B. x=2) initialisiert. Nun verwenden wir die zweite Form der Gleichung und überschreiben x solange mit dem rechten Teil der Gleichung (hier x := (18 - 3x2)/15), bis sich der Wert von x nicht mehr oder nur noch marginal verändert. Das so gefundene x löst zumindest die zweite Form der Gleichung. Mit diesem Resultat kann nun auch die 1. Gleichung überprüft werden.

Bemerkungen: Längst nicht alle Gleichungen haben einen Fixpunkt in obigem Sinne. Zudem können schlechte Startwerte (hier z. B. -10) dazu führen, dass die Fixpunktlösung nicht gefunden wird, denn x wird mit jedem Schritt weiter von der Lörung entfernt. Zu guter Letzt ist zu erwähnen, dass bei Gleichungen mit mehreren Lösungen (wie die obige) natürlich bei einem gegebenen Startpunkt nur jeweils eine Lösung gefunden werden kann.

Lösen Sie mit diesem Verfahren die folgenden Gleichungen

  1. 3x2 + 15x = 18 (mit Startwerten x = 2 bzw. x = -10)
  2. sin(x) = x - 0.2
  3. 1 - ln(x) = 6 - x
  4. 3x3 = 6x2 - x + 1

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

3 Lösung(en)

package ch.programmieraufgaben.simulation.fixpunkt;

/**
 * Löse eine Fixpunktgleichung
 * @author Philipp Gressly (phi@gressly.ch)
 */
public class Fixpunktgleichung {
 public static void main(String[] args) {
    new Fixpunktgleichung().top();
  }
 
  double gleichung(double x) {
     return (18.0 - 3.0 * x * x) / 15.0;
     // return Math.sin(x) + 0.2;
     // return Math.log(x) + 5.0;
     // return -3.0 * x * x *x  +  6.0 * x * x + 1;
  }
  
  void top() {
    double x = 2.0; // startwert
    double xAlt = x - 1; // anders als x, damit die Schleife betreten wird.
    
    while(x != xAlt) {
       xAlt = x;
       x = gleichung(x);
       if(x == xAlt) {
           System.out.println("Es wurde ein Fixpunkt berechnet: x="+x);
           return;
       }
       System.out.println(x);
    }
  }
 
} // end of class Fixpunktgleichung
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

function fixPoint() {
  var x = 2,            // startwert
      y;

  function func(x) {
    return (18 - 3 * Math.pow(x, 2)) / 15.0;
    // return Math.sin(x) + .2;
    // return Math.log(x) + 5;
    // return -3 * Math.pow(x, 3) +  6 * Math.pow(x, 2) + 1;  // endlosschleife
  }

  do {
    y = x;
    x = func(x);
    if (x == y) return x;
  }
  while (x != y);
  return x;
}

console.log(fixPoint());                                    // lissalanda@gmx.at
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

import math

def equation(x):
    # return (18 - 3 * x * x) / 15
    # return math.sin(x) + 0.2
    return (1 - math.log(x) - 6) * (-1)
    # return math.sqrt(((3 * x * x * x) - 1 + x ) / 6)


# accuracy = 0.000000000000001
accuracy = 0

x = 2

finished = 0

while finished == 0:
    y = equation(x)
    if abs(x - y) <= accuracy:
        finished = 1
    else:
        x = y

print('found fix point at: {0}'.format(x))
                

Lösung von: Ich Bins (tubs)

Verifikation/Checksumme:

Gleichung 1:

Fixpunkt x = 1.0 kann gefunden werden. Die 2. Lösung x=-6 wird damit nicht gefunden.

Gleichung 2:

Fixpunkt = 1.08369188 (Dies kann z. B. mit Startwert 0 oder auch mit Startwert 2 gefunden werden.)

Gleichung 3:

Fixpunkt x = 6.9368474

Gleichung 4:

Die letzte Gleichung divergiert, d. h. mit jedem Schritt entfernen wir uns weiter von der Lösung.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Schwer
Webcode: 0b2b-sb7u
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen