Die Webseiten der Fachschaft Informatik am ERG Saalfeld


Intervallhalbierungsverfahren

Es wird eine Lösung der Gleichung  0 = x^5 - 5x^4 - 13x^3 + 65x^2 + 36x - 170  mit dem Intervallhalbierungsverfahren gesucht
 

Algorithmus

Wir wählen uns ein Intervall, wobei eine Grenze einen negativen y-Wert und die andere Grenze einen positiven y-Wert hat. Hier wird gewählt x1 = -10 (y1 auf jeden Fall negativ) und x2 = 10 (y2 positiv). Das Intervall wird halbiert und zu diesem x3 wird der Funktionswert y3 gebildet. Ist y3 negativ, dann können wir statt y1 nun y3 und damit auch statt x1 nun x3 nehmen. Ist y3 positiv, dann können wir statt x2 nun x3 nehmen. Dadurch hat sich das Intervall halbiert. Das Verfahren wird nun solange fortgesetzt, bis die gewünschte Genauigkeit erreicht ist (hier 3 Stellen nach dem Komma).
 

Programm

x1 = -10
x2 = 10

while x2-x1 > 0.001:

    # Berechne y1 und y2
    y1 = x1**5 - 5*x1**4 - 13*x1**3 + 65*x1**2 + 36*x1 - 170
    y2 = x2**5 - 5*x2**4 - 13*x2**3 + 65*x2**2 + 36*x2 - 170

    # unser x3 ist der Mittelwert (deswegen ja Intervallhalbierungsverfahren)
    x3 = (x1+x2)/2

    # wir bestimmen dazu y3
    y3 = x3**5 - 5*x3**4 - 13*x3**3 + 65*x3**2 + 36*x3 - 170

    # bei uns ist der y-Wert auf der rechten Grenze des Intervalls positiv
    # wenn das neue y < 0 ist
    if y3 < 0:
        # dann ersetzen wir die linke Grenze
        x1 = x3
    # sonst
    else:
        # ersetzen wir die rechte Grenze
        x2 = x3

#wir geben die linke Grenze aus
print(x1)

 

Der Aufruf sah bei mir so aus:

 

Aufgaben

  1. Bringen Sie das Programm zum Laufen.
  2. Zeichnen Sie zu diesem Programm ein Struktogramm.
  3. Ergänzen Sie das Programm um eine Überschrift (unterstrichen, danach Leerzeile).
  4. Geben Sie für den Nutzer auch die Gleichung aus (einfach als String ausgeben).
  5. Geben Sie die beiden Grenzen des Intervalls aus, indem das Ergebnis liegt (x1 = ..., x2 = ...).     Die Intervallgrenzen am Ende des Verfahrens, nicht die Startwerte!
  6. Machen Sie die Ausgabe als Nullstelle deutlich (Nullstelle: ...).
  7. Ändern Sie das Programm so, dass die Genauigkeit auf 7 Stellen nach dem Komma erhöht wird.
  8. Schreiben Sie ein (kleines) Programm, welches eine Wertetabelle für diese Funktion im Intervall von -10 bis 10 in Einer-Schritten ausgibt.
  9. Die Funktion hat 5 Nullstellen, alle im Intervall von -10 bis 10. Geben Sie für jede dieser Nullstellen ein spezielles Intervall an.
  10. Ermitteln Sie alle 5 Nullstellen mit Hilfe dieses Programms.
  11. Zum Vergleich werden die ermittelten Nullstellen von 2 Schülern angesagt:
    • Schüler 1:  -3.040039,  -1.000976,  1.851806, ...
    • Schüler 2:  -3.040039,  -1.930664,  1.851806, ...
    Erklären Sie, warum die Lösung von Schüler 1 falsch ist bzw. die von Schüler 2 richtig.
  12. Der Schüler 1 glaubt Ihnen nicht. Erstellen Sie zum Nachweis eine Wertetabelle für das Intervall -2 bis -1 in 0.1er Schritten.
  13. Ändern Sie das gegebene Programm so ab, dass die beiden Grenzen des Intervalls als Parameter übergeben werden.
  14. Ändern Sie das Programm so ab, dass das Programm selbst erkennt, ob die linke Intervallgrenze der negative bzw. positive y-Wert ist und entsprechend zuordnet...

 

zurück


© ERG Saalfeld   -   HD. Kirmse + Dustin Wiese   5.08.2022