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 = 20während das folgende Beispiel
x * y = 10
x + y + z = 6schon 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
x2 + y2 + z2 = 14
x3 + y3 + z3 = 37
x+y+z, x^2+y^2+z^2, x^3+y^3+z^3in 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
x = 1.25777280103144Es entspricht einer exakten, auf 15 Stellen genau berechneten Lösung.
y = 1.6050691563653
z = 3.13715804260326
5.95021liefern, 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.
14.02588
37.99622
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.
|
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
|
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.
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 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.
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. |
![]() |