________________________________________________________________________________
Inhalt....: Numerisches Lösen von Gleichungen
Kategorie.: Grundkurs
Mathematik: Numerik
MuPAD.....: 3.0.0
Datum.....: 2004-03-31
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: solve, numeric::solve, plotfunc2d, YRange
________________________________________________________________________________
Numerisches Lösen von Gleichungen
Dieses Arbeitsblatt ist Bestandteil des MuPAD Grundkurses.
Wir betrachten eine komplexe Expotentialgleichung und versuchen diese mit
Hilfe des üblichen Befehls solve von MuPAD lösen zu lassen:
exp(-2*x + 2) * x^2 - 2 = 0
![]()
solve(exp(-2*x + 2) * x^2 - 2 = 0, x)
![]()
Offensichtlich führt der Ansatz über die Funktion solve nicht zum Ziel. MuPAD
kann diese Gleichung nicht symbolisch lösen. Um überhaupt sicherzustellen,
dass die Gleichung eine oder mehrere Lösungen besitzt, stellen wir die rechte
Seite als Funktion mittels plotfunc2d grafisch dar und suchen nach Nullstellen:
plotfunc2d( exp(-2*x + 2) * x^2 - 2,
x = -2..4, YRange = -3..3 )

Der Funktionsgraph suggeriert die Existenz einer Nullstelle - also eine Lösung
unserer Ausgangsgleichung - im Intervall [-1, 0]. Wir wollen nun versuchen, diese
Lösung mit Hilfe von numeric::solve zu finden. Die Aufrufsyntax von numeric::solve
ist ganz analog zu der von solve:
numeric::solve( exp(-2*x + 2) * x^2 - 2 = 0, x )
![]()
Diese Lösung scheint korrekt und läßt sich leicht durch Einsetzen in die Ursprungs-
gleichung verifizieren (wir verzichten hier darauf). Mit Hilfe der Variablen DIGITS
können wir die Genauigkeit beeinflussen und somit die Lösung auf nahezu beliebig
viele Nachkommastellen berechnen. Setzen Sie einmal selbst den Wert von
DIGITS auf 25 und führen Sie die obige Rechnung erneut durch.
Wir betrachten eine noch kompliziertiere Gleichung als die obige:
sin(x)^2 - x^2 + ln(x) + 1 = 0
![]()
Per Hand ist die Lösung dieser Gleichung nahezu unmöglich. Auch in diesem
Fall liefert solve (verständlicherweise) keine exakte Lösung:
solve( sin(x)^2 - x^2 + ln(x) + 1 = 0, x )
![]()
Nun kommt wieder die Funktion numeric::solve zum Einsatz:
numeric::solve(sin(x)^2 - x^2 + ln(x) + 1 = 0, x)
![]()
Es stellt sich allerdings die Frage, ob diese eine Lösung die einzige reelle
Lösung der Gleichung ist. Sicherheitshalber stellen wir wieder die rechte Seite
der graphisch als Funktion von x dar:
plotfunc2d(sin(x)^2 - x^2 + ln(x) + 1,
x = 0..3, YRange = -10..1)

Offensichtlicht haben wir nicht alle reellen Nullstellen gefunden. Dies ist eine
wichtige Eigenart der Funktion numeric::solve: Sie liefert uns in der Regel nur
genau eine Lösung einer Gleichung. Der Grund dafür ist, dass numerische
Lösungsverfahren häufig auf äußerst komplizierte Gleichungen angewandt
werden. Die in den Gleichungen auftretenden Funktionen sind in technischen
oder physikalischen Anwendungen sehr häufig periodisch oder stark oszilierend.
Es kommt also durchaus vor, dass Gleichungen Hunderte von Lösungen besitzen,
man aber nur an einer sehr speziellen Lösung interessiert ist. In der Regel hat man
entweder eine recht gute Kenntnis von dem Bereich, in dem sich eine Lösung einer
komplizierten Gleichung befindet, oder aber man bestimmt zunächst eine Lösung
und "hangelt" sich von dieser nach dem Auschlußprinzip (Bisektionsverfahren) zu
der eigentlich interessanten Lösung. Nebenbei wäre eine vollständige (erschöpfende)
Suche nach allen Lösungen einer Gleichung auch nicht wünschenswert. Man stelle
sich vor, eine Gleichung besitzt Tausende verschiedener Lösungen. Diese alle zu
berechnen würde wohl die Geduld eines jeden Anwenders überstrapazieren.
Bei numeric::solve haben daher die Möglichkeit, den Bereich explizit einzuschrän-
ken, in dem nach Lösungen einer Gleichung gesucht werden soll. Wir betrachten
unser Beispiel von oben:
numeric::solve(sin(x)^2 - x^2 + ln(x) + 1 = 0, x = 0..1 )
![]()
numeric::solve(sin(x)^2 - x^2 + ln(x) + 1 = 0, x = 1..2 )
![]()
Damit haben wir alle reellen Lösungen der Gleichung berechnet.
________________________________________________________________________________
Übungen:
1. Berechnen Sie alle reellen Lösungen der folgenden Gleichungen. Stellen Sie zuvor die ent-
__sprechenden linken Seiten der Gleichungen grafisch dar, um ein Gefühl für die Lokalität der
__Nullstellen zu erhalten. Findet solve eine symbolische (exakte) Lösung?


________________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen finden Sie unter: http://schule.mupad.de bzw. http://studium.mupad.de
________________________________________________________________________________