Iterationsverfahren zum Lösen von Gleichungen

Die Gleichung f(x) = g(x)

kann man in die Form bringen f(x) - g(x) = 0

Damit wird die allgemeine Aufgabe die Werte x zu bestimmen, für die 2 Funktionen den gleichen Wert besitzen darauf reduziert, die Variablen x zu finden, für welche die Funktion f(x) - g(x) Nullstellen hat. Wenn g(x) eine Zahl q ist, sollen die Variablen x gefunden werden für die f(x) den Zahlenwert q hat.

Analytisch ist die Lösung dieser Aufgabe (die "Umkehrung" von f(x) -g(x)=0 ) nur für einfache Funktionen möglich, z.B. für Gerade oder für Parabeln 2ten Grads.Bei Winkelfunktionen oder Logarithmen benutzen wir dafür Tabellen ihrer Umkehrfunktion, ohne uns meist Gedanken darüber zu machen, wie deren Werte eigentlich gewonnen wurden.

Numerisch kann man alle Gleichungen durch Iterationsverfahren lösen. Anstatt zu versuchen die Umkehrfunktion analytisch zu finden, setzt man "vorwärts" zunächst beliebige Werte x in die bekannte Gleichung ein, und berechnet das Ergebnis. Es wird im Allgemeien von Null abweichen. Dann variiert man x so lange in systematischer Weise, bis die Abweichung einen vorgegebenen Wert delta unterschreitet.

Die Simulation soll die Nullstellen mit einer absoluten Genauigkeit besser delta berechnen. Sie tut dies mit Hilfe eines ganz einfachen Iterations- Algorithmus in Form einer Schleife. Für jeden Schritt der Zeitsteuerung in der Seite EJS- Evolution wird die folgende Befehlsfolge durchlaufen:

d x = 0.1/n; - definiert die Schrittbreite in Abhängigkeit von einem Hilfsparameter n

x = x + dx; -geht zum nächsten Abszissenpunkt

der zugehörige y- Wert ist durch die Formel der Funktion auf der Seite

Fixed Relations definiert. Die Formel wird aus dem Formelfeld übernommen

if (y>0) { -es ist angenommen, daß zunächst y<0 ist,

bei Vorzeichenwechsel (y>0) wurde eine Wurzel überquert

x = x - 2*dx; -wird zum letzten Punkt zurückgesprungen

n=10*n; -und für den nächsten Schritt die Schrittbreite gezehntelt

}

if (Math.abs(y)<2*delta){ -sobald y genügend klein ist

_pause(); -wird die Rechnung abgebrochen

}

Dieser Algorithmus ist sehr einfach und leicht verständlich, braucht aber relativ viele Schritte. Man kann schnellere Algorithmen finden, indem man die Schrittbreite nicht konstant wählt, sondern von der angenäherten Steigung und eventuell auch Krümmung der Kurve zwischen 2 Schritten abhängig macht. Im ersten Fall berechnet man dafür die Nullstelle der Verbindungsgerade von 2 Iterationspunkten, im zweiten die einer Schmiegungsparabel durch 3 Punkte.

Im rechten Fenster mit hoher Auflösung werden Sie mit fortschreitender Interation erkennen, daß die Funktion sehr schnell wie eine Gerade erscheint. Wählt man den nächsten Schritt so, daß er zum Schnittpunkt der Verbindungsgeraden der beiden letzten Berechnungspunkte mit der x- Achse führt, dann ist man sehr schnell am Ziel. Diese Schrittweitenanpassung entspricht dem sogenannte Newton- Verfahren.

Mit der Verfügbarkeit schneller PC ist der Zeitaufwand für das "Probierverfahren" Iteration auch bei einfachen Algorithmen unwesentlich geworden, so daß man sie sehr universell einsetzen kann. Standard- Programme wie Excel (Zielwertsuche) oder Mathematika haben dafür fertige Lösungen.

Man kann den Algorithmus leicht so erweitern, daß alle Nullstellen einer Funktion in einem gegebenen Intervall berechnet werden. Dafür muß man mit einer übergeordneten if- else- Bedingung die Rücksprungbedingung daran anpassen., ob der Ausgangspunkt positive oder negative Ordinate hat.

if (y0<0) {

dx = 0.1/n;

x = x + dx;

if (y > 0) {

x = x - 2*dx;

n = 10*n;

}}

else {

dx = 0.1/n;

x = x + dx;

if (y < 0) {

x = x - 2*dx;

n =10*n;

}}

Da das Formelfenster editierbar ist, können Sie mit dieser Simulation für jede Funktion Nullstellen bestimmen.