MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

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

math

solve(exp(-2*x + 2) * x^2 - 2 = 0, x)

math

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 )

MuPAD graphics

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 )

math

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

math

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 )

math

Nun kommt wieder die Funktion numeric::solve zum Einsatz:

 

numeric::solve(sin(x)^2 - x^2 + ln(x) + 1 = 0, x)

math

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)

MuPAD graphics

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 )

math

numeric::solve(sin(x)^2 - x^2 + ln(x) + 1 = 0, x = 1..2 )

math

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?

 

image

image

________________________________________________________________________________

 

Anmerkungen:

 

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

 

________________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.