________________________________________________________________________________
Inhalt....: Numerisches Lösen von Polynomgleichungen
Kategorie.: Grundkurs
Mathematik: Numerik
MuPAD.....: 3.0.0
Datum.....: 2004-03-31
Autoren...: Kai Gehrs <acrowley@mupad.de>
Funktionen: solve, numeric::solve, nops, intersect, R_
________________________________________________________________________________
Numerisches Lösen von Polynomgleichungen
Dieses Arbeitsblatt ist Bestandteil des MuPAD Grundkurses.
Wir alle kennen die berühmte p,q-Formel bzw. die a,b,c-Formel zur Lösung
quadratischer Gleichungen aus der Schule. In seltenen Fällen werden im
Schulunterricht auch die Lösungsformeln für kubische polynomielle Gleichungen
sowie polynomielle Gleichungen 4. Grades diskutiert. Es ist aber eine bekannte
Tatsache, dass es für polynomielle Gleichungen 5. Grades oder höher keine
allgemeine geschlossene Lösungsformel zur Bestimmung aller Lösungen gibt.
Versuchen wir eine hinreichend komplizierte polynomielle Gleichung mit der
Funktion solve zu lösen, so erhalten wir eine auf den ersten Blick merkwürdige
Antwort:
solve(x^6 + x^5 + x^4 + x^3 + x^2 + x + 1 = 0, x)
![]()
Ein Ausdruck der Form RootOf(...) weist immer darauf hin, dass die Lösungen
entweder sehr kompliziert sind oder dass MuPAD die Lösungen nicht symbolisch-
exakt berechnen kann (dieses ist KEIN MuPAD spezifisches Problem: siehe oben).
RootOf(...) steht für "Wurzel aus ..." und ist ein historischer Begriff für die Lösungen
polynomieller Gleichungen, die man auch als "Wurzeln" ("Roots" im Englischen)
bezeichnet. Will man solche Gleichungen trotzdem lösen, so bleibt einem nichts
anderes übrig, als auf numerische Lösungsverfahren zurückzugreifen.
Solche Lösungsverfahren zur Bestimmung der Lösungen einer polynomiellen
Gleichung sind mit der MuPAD Funktion numeric::solve verfügbar. Diese Funktion
ist nicht nur auf polynomielle Gleichungen anwendbar, sondern kann zur Lösung
ganz allgemeiner Gleichungen benutzt werden. Mit solchen allgemeineren Glei-
chungen, die sich in der Regel auch nicht exakt mit Hilfe einer Lösungsformel
lösen lassen, beschäftigen wir uns im nächsten Abschnitt.
Wir betrachten einige Beispiele polynomieller Gleichungen:
numeric::solve(x^2 = PI^2, x)
![]()
Sicherlich hätten wir bei dieser einfachen Gleichung auch direkt sehen können,
was die exakten Lösungen sind. Bei dem nächsten Beispiel wird dies schon
etwas schwieriger:
numeric::solve(x^3 + x + 1 = 0, x)
![]()
Wir sehen an diesem Beispiel schön, dass numeric::solve im Fall von polynomiellen
Gleichungen stets alle Lösungen zu finden scheint. Nach dem berühmten "Funda-
mentalsatz der Algebra", der auf Carl Friedrich Gauß zurückgeht, besitzt jede poly-
nomielle Gleichung n-ten Grades genau n (mit Vielfachheiten gezählte) Lösungen.
Im obigen Fall haben wir eine kubische Gleichung lösen lassen und in der Tat drei
Lösungen gefunden.
Die komplexen Nullstellen lassen sich mit Hilfe des Befehls intersect R_ aus-
schließen:
numeric::solve(x^3 + x + 1, x) intersect R_
![]()
Zur Lösung kubischer Gleichungen gibt es aber mit der sogenannten Cardano-
Formel noch immer eine Möglichkeit, alle geschlossenen Lösungen auch exakt
per Hand zu berechnen. Im nächsten Beispiel sieht dies schon ganz anders aus:
L:= numeric::solve(x^6 + x^5 + x^4 + x^3 + x^2 + x + 1 = 0, x)
![]()
Wir haben 6 Lösungen gefunden und es gibt keine einzige reelle Lösung:
nops(L)
![]()
L intersect R_
![]()
________________________________________________________________________________
Übungen:
1. Berechnen Sie alle und alle reellen Lösungen der Gleichung x^11 + 1 = 0. Läßt sich die Gleichung
__exakt mit Hilfe von solve lösen?
________________________________________________________________________________
Anmerkungen:
1. Weitere Anregungen finden Sie in der Buchreihe Mathematik 1 x anders. In dieser Reihe
wird eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD gelöst. Die
Bücher können unter www.schule.mupad.de/literatur kostenfrei kopiert werden.
________________________________________________________________________________