Homepage RF21 Freeware Feature
Nichtlinearer Solver


Nichtlineare Gleichungssysteme können sogar für numerische Methoden ein harter Brocken sein. In der Schule bekommt man etwa so viel von diesem Thema zu sehen:

x + y = 20
x * y = 10
während das folgende Beispiel
x  +  y  +  z  =  6
x2 + y2 + z2 = 14
x3 + y3 + z3 = 37
schon nicht mehr mit Papier und Bleistift zu berechnen ist, außer vielleicht für Spezialisten. Um dieses Problem mit RF21 numerisch zu lösen, geben Sie die Formel
x+y+z,  x^2+y^2+z^2,  x^3+y^3+z^3
in einen leeren Formelspeicher ein und stellen x, y und z als Argumente ein. Diese zum Start des Newtonverfahrens auf beliebige, verschiedene Anfangswerte setzen (z.B. x=1, y=4, z=3). Dann ruft man mit dem Befehl "nn" den nichtlinearen Solver auf. Es erscheint ein Listenfeld zur Eingabe der Konstanten der rechten Gleichungsseiten: 6, 14, 37

Start des nichtlinearen Solvers

Nach beendeter Eingabe mehrmals <enter> drücken. Das Gleichungssystem wird gelöst und die Lösung erscheint im Formelspeicher. Eines der sechs möglichen Ergebnisse ist
x = 1.25777280103144
y = 1.6050691563653
z = 3.13715804260326
Es entspricht einer exakten, auf 15 Stellen genau berechneten Lösung.
Verändert man das Ausgangsproblem, indem man die 37 der letzten Gleichung durch 38 ersetzt, so scheint es keine Lösung mehr in reellen Zahlen zu geben. RF21 findet dann ersatzweise  x=1.37455, y=3.2011, z=1.37455, die beim Einsetzen in die Gleichung
5.95021
14.02588
37.99622
liefern, anstelle der geforderten Werte 6, 14 und 38. Es handelt sich um eine lokal optimale Approximation im Sinne der "kleinsten Quadrate" - die gefundene Lösung liefert auf der rechten Gleichungsseite den vermutlich am nächsten an (6, 14, 38) gelegenen, erreichbaren Punkt.

Läßt man für  x,y,z  dagegen komplexe Zahlen zu, so gibt es wieder eine exakte Lösung. Das komplexe Gleichungsystem ist dann äquivalent zu einem reellen, bestehend aus 6 Gleichungen für 6 Unbekannte. Dieses läßt sich mit Hilfe der komplexen Arithmetikfunktionen (vgl. die "function reference") bequem ausdrücken und dann wie oben mit dem Befehl "nn" lösen. Details dazu in der Datei "solver.wri" des Dokumentationspakets.


Hier haben wir wieder das Problem der hängenden Kette. Gegeben ist eine Kette aus 8 Stäben der Länge 1 und vom Gewicht 1. Wir sollen herausfinden, welche Form sie annimmt, wenn man sie zwischen zwei Punkten im horizontalen Abstand von 6 Einheiten aufhängt. Mit anderen Worten, gesucht sind die Winkel  a (alpha), b (beta), c (gamma) und d (delta). Da die Kette einen Zustand minimaler Energie annimmt, läßt sich dieses Problem gut mit dem Minimierungsverfahren lösen.

The hanging chain problem
Ein anderer Ansatz - der auf ein nichtlineares Gleichungssystem führt - kommt aus der Statik. Man führt als fünfte Unbekannte f die Horizontalkomponente der Kraft durch die Kette ein, diese ist in allen Gelenken gleich. Dann ergeben sich a,b,c,d und f als Lösung des folgenden Gleichungssystems:

2f sin(a) - 7cos(a) = 0
2f sin(b) - 5cos(b) = 0
2f sin(c) - 3cos(c) = 0
2f sin(d) -  cos(d) = 0
cos(a) + cos(b) + cos(c) + cos(d) = 3

Gleichungen 1 bis 4  drücken die Tatsache aus, daß im Gleichgewichtszustand das Drehmoment 0 auf jeden Stab wirkt. Gleichung 5 berechnet die horizontale Länge der halben Kette und setzt sie gleich 3.
     Nun faßt man die linken Seiten aller 5 Gleichungen, getrennt durch Kommas, in einer Formel zusammen, und legt die Symbole a,b,c,d, f  als Argumente fest. Als Startpunkt im 5-dimensionalen Raum wird zum Beispiel 45 (Winkelgrad), 45, 45, 45 und 1 verwendet. Dann wieder mit "nn" den nichtlinearen Solver aktivieren und die Konstanten der rechten Gleichungsseiten als Sollwerte eingeben.

Eingabe: Problem der hängenden Kette

Das Programm findet als Ergebnis (alle Winkel in Grad) :  

a = 57.7056633578534
b = 48.4960046063298
c = 34.140463598073
d = 12.736384850414
f = 2.21212396887098

Anders als beim Minimierungsverfahren, kann man hier von 15-stelliger Genauigkeit ausgehen.  


Hier ist eine rein geometrische Anwendung:   Zu finden sind alle gemeinsamen Tangenten des Graphen der Funktion  
 

f(x) = (x-1)2 + 2

und der Relation

R:  x4 + y4 = 1

Hierzu wählen wir die Koordinaten (a | b) und (c | d) der Berührpunkte B1 und B2 einer Tangente, sowie deren Steigung m, als Unbekannte. Dann entsprechen die ersten zwei Gleichungen der Tatsache, daß B1 auf dem Graphen von f und B2 auf dem Graphen von R liegt. Mit der dritten und vierten Gleichung drücken wir aus, daß die Tangentensteigung gleich den Steigungen der Graphen in B1 bzw. B2 ist. Die fünfte Gleichung stellt schließlich m als Differenzenquotient der Punktkoordinaten dar.
    Der Solver findet hier verschiedene Lösungen für verschiedene Startpunkte. Es gibt 4 verschiedene Lösungen, und jede entspricht einer Tangente im Bild.

Viele Probleme lassen sich in die Sprache eines nichtlinearen Gleichungssystems übersetzen. Mit RF21 wurden Probleme wie Diagonalisierung, Matrixgleichungen, Optimierung unter Nebenbedingungen gelöst. Diese Beispiele, und die Lösung des vorliegenden Tangentenproblems, finden Sie in den Dokumentationstexten. 

Das Tangentenproblem