Matheseiten-Übersicht  •  zurück
quadratische Gleichungen lösen  •  Übungen zur p-q-Formel  •  Übungen zum Lösen von Gleichungen  •  Neu: Applet zum Darstellen der Nullstellen in der komplexen Zahlenebene  •  Rechner zum numerischen Finden von Lösungsmengen beliebiger Gleichungen

Nullstellen (Lösungen) von Polynomen bestimmen

  Dynamische Erläuterung der Lösungsverfahren für Polynome 2.-4. Grades
  Numerische Bestimmung der komplexen Nullstellen für Polynome höheren Grades


  Gleichung oder Polynom eingeben:
    Zufallsterm
  Standardform (wird berechnet):
 
   Lösungen approximieren (→ zur Anzeige)           Bruchterme auflösen
      Anzahl der gefundenen Nullstellen: Maximaler Grad beim Finden des Polynoms:

Parameter einer quadratischen Gleichung:
 x2 +  x +  = 0

Lösungen

x1 = 
x2 = 
  
Parameter einer kubischen Gleichung:
 x3 +  x2 +  x +  = 0
x1 = 
x2 = 
x3 = 
  
Parameter einer Gleichung 4. Grades:
 x4 +  x3 +  x2 +  x +   = 0
x1 = 
x2 = 
x3 = 
x4 = 

Probe: (in das Polynom eingesetzt, müssen die exakten Lösungen jeweils 0 ergeben)

Lösung x1 eingesetzt ergibt: 
Lösung x2 eingesetzt ergibt: 
Lösung x3 eingesetzt ergibt: 
Lösung x4 eingesetzt ergibt: 

Die Schreibweise 1,234567e-15 bedeutet 1,234567·10-15.

Die Ergebnisse können mit dem Newton-Verfahren xn+1=xn-yn/y'n den exakten Nullstellen noch besser angenähert werden. (y ist dabei der Wert des Polynoms an der Stelle x, und y' ist die Ableitung an dieser Stelle.)
Legen Sie hier fest, wie oft der Algorithmus maximal durchlaufen werden soll:
Er bricht vorher ab, falls die Ergebnisse nicht mehr besser werden oder die Nullstelle mit dem Abstand 0 gefunden ist.


Zur Eingabe

Erläuterung des Lösungsweges  —  approximierte Lösungen:

Zur Eingabe


Hinweise

Man kann Polynome oder Gleichungen, die auf ein Polynom führen, oben eingeben oder die Koeffizienten eines Polynoms 2.-4. Grades direkt in die Eingabefelder bei den entsprechenden Polynomgraden. Bei der ersten Möglichkeit versucht das Programm, die Gleichung/den Term in die Standardform anxn + an-1xn-1 + ... + a1x + a0 = 0 zu bringen. Falls die Eingabe keine Brüche oder Klammern enthält, wird das zunächst symbolisch versucht, sonst oder bei Mißerfolg der ersten Methode mittels eines linearen Gleichungssystems. Hierzu muß der maximale Polynomgrad angegeben werden (höchstens 25). Wenn der Algorithmus nicht auf Anhieb das Polynom findet, so kann und sollte der Vorgang wiederholt werden; das Programm arbeitet mit Zufallszahlen für die x-Werte; außerdem entstehen durch hohe Potenzen oftmals große Gesamtfehler bei der Gleitkommaberechnung.

Falls Bruchgleichungen/-Terme durch Multiplikation mit den Nennern in Polynome aufgelöst werden sollen, muß die entsprechende Option aktiviert sein. (Der kgV der Nenner wird dabei nicht ermittelt, und es wird nicht vorher gekürzt.)

Wird ein Polynom bis zum 4. Grade gefunden, so werden die Koeffizienten in die Eingabefelder des entsprechenden Polynoms eingetragen, und es kann mit der Schaltfläche [Lösen mit Erläuterung] eine Erklärung des Lösungsverfahrens generiert werden.

Gleichzeitig wird auch bei Polynomen höheren Grades mit dem Newton-Verfahren numerisch nach Nullstellen gesucht, falls diese Option aktiviert ist. Die Resultate werden im Fenster für die Erläuterungen oberhalb dieses Textes angezeigt. In der Regel werden alle Nullstellen (auch die komplexen) gefunden. Standardmäßig wird der komplexe-Newton-Algorithmus maximal hundertmal durchlaufen.
Sie können diesen Wert hier ändern, oder eine maximale Suchzeit festlegen: 

Alternativ zum Javascript-Modus kann auch ein in die Seite integriertieres Java-Applet für die Nullstellensuche verwendet werden. Das Applet ist optimiert für sehr schnelle Suche — es soll zum dynamischen Visualisieren der Nullstellen in der Gaußschen Zahlenebene in "Echtzeit" dienen, während man die Polynomkoeffizienten einfach mit Scrollbars ändert — versagt aber manchmal.

Es werden Proben gemacht, bei den komplexen Nullstellen ausschließlich mit dem (u.U. berechneten) standardisierten Polynom, bei den reellen auch mit der eingegebenen Gleichung bzw. dem eingegebenen Term. Bei Gleichungen (LinkeSeite = RechteSeite) wird dabei der Wert LinkeSeite — RechteSeite berechnet.

Für die Probe mit der eingegebene Gleichung wird die Javascriptmethode eval() verwendet, wobei Potenzen vorher in die Javascript-Syntax umgewandel werden: z.B. 3x^13-x^2+1 für x=4,789 in eval(3*Math.pow(4.789,13)-Math.pow(4,789,2)+1. Polynome werden stets mit dem Hornerschema berechnet, das mit erheblich weniger Multiplikationen auskommt und auch im Komplexen funktioniert. Neben erheblichen Geschwindigkeitsvorteilen ist diese Methode auch (aufgrund der kleineren Zahl nötiger Fließkommamultiplikationen) wesentlich genauer als eval(). Das zeigt beispielsweise die Probe mit der durch das Script gefundenen reellen Nullstelle x=1,9999999701976665 des Polynoms x^25 - x^24 - x^23 - x^22 - x^21 - x^20 - x^19 - x^18 - x^17 - x^16 - x^15 - x^14 - x^13 - x^12 - x^11 - x^10 - x^9 - x^8 - x^7 - x^6 - x^5 - x^4 - x^3 - x^2 - x - 1. eval() ergibt den (völlig falschen) Wert -1021, läßt also vermuten, daß diese Nullstelle falsch sei. Der Horner-Algorithus errechnet (relativ korrekt) den sehr nahe bei Null liegenden Wert 6,616929226765933e-14. Tatsächlich sind alle 16 Stellen der Nullstelle richtig.

Reelle Nullstellen und konjugierte komplexe Nullstellenpaare führen im Programm in der Regel zur Polynomdivision, bei der das Polynom vereinfacht, d.h. sein Grad reduziert wird. Das Protokoll der Polynomdivisionen wird im Ergebnisfenster unter der Probe angezeigt. Bei (konjugierten) komplexen Nullstellen x = a ± b·î wird durch (x - a + b·î)·(x - a - b·î) = (x² - 2a·x + a²+b²) dividiert. Die Lösungsverfahren zu kubischen und biquadratischen Polynomen sind im numerischen Suchalgorithmus bislang nicht implementiert.

 

Ich habe versucht, in der automatischen Erstellung der Erläuterungen zu den Lösungsverfahren möglichst viele Spezialfälle zu berücksichtigen, so daß der Lösungsweg für fast alle Fälle gut nachvollzogen werden kann. Das hatte aber Grenzen, sowohl gesetzt durch die eingeschränkten Möglichkeiten der Anzeige in dem Textfeld, als auch durch den Wunsch, das Script nicht allzu groß werden zu lassen. Die Gleichungen der Form xn = y oder andere Fälle, in denen das absolute Glied fehlt, werden nicht gesondert behandelt, weder in den Erläuterungen noch bei der Berechnung selbst.

Gleichungen, in denen das absolute Glied fehlt, wie z.B. x4 + 4x3 - 2x = 0, lassen sich besser durch Ausklammern eines x in den Griff bekommen: x4 + 4x3 - 2x = x·(x3 + 4x2 - 2) = 0.
Das entstandene Produkt wird dann Null, wenn mindestens ein Faktor Null ist; d.h. man bekommt die Lösungen durch separate Betrachtung der Faktoren bzw. die Lösung der Gleichungen x = 0 und x3 + 4x2 - 2 = 0.

Für Polynome höheren Grades gibt es keine allgemeinen Lösungsformeln. Der Hauptsatz der Algebra besagt allerdings, daß Polynome vom Grade n immer genau n (u.U. komplexe) Nullstellen besitzen, von denen jedoch nicht alle verschieden sein müssen.
Falls man eine oder mehrere reelle Nullstellen durch Raten, Ausprobieren, durch Ablesen im Graphen (→Funktionsplotter) oder durch numerische Methoden (z.B. das oben kurz beschriebene Newton-Verfahren) herausfindet, so kann man das Polynom mittels Polynomdivision durch den Term (x-x0) in ein Polynom vereinfachen, das ein Grad kleiner ist und die restlichen Nullstellen enthält. x0 steht dabei für den x-Wert der Nullstelle.
Beispiel: Das Polynom x6 - 4x5 + 5x4 - 13x2 + 25x - 14 = 0 hat Nullstellen bei x=1 und x=2, wie man recht leicht durch eine der erwähnten Methoden herausfinden kann.
Die Polynomdivisionen ergeben dann: (x6-4x5+5x4-13x2+25x-14)/(x-1) = x5-3x4+2x3+2x2-11x+14 und (x5-3x4+2x3+2x2-11x+14)/(x-2) = x4-x3+2x-7. Die Nullstellen dieses Polynoms lassen sich dann mit der oben beschriebenen Lösungsformel gewinnen.

→ Seite zur Polynomdivision
→ Seite zum numerischen Lösen von Gleichungen

Wie "gut" die Resultate nun sind, kann man an der automatischen Probe sehen. Die Lösungen der jeweils letzten Berechnung wurden in das gegebene Polynom eingesetzt, und man kann hier sehen, wie nahe das Ergebnis an der Null liegt. Beachten Sie, daß kleine Werte in exponentieller Schreibweise aufgeführt werden, die Angabe 3,3306690738754696e-16 + 2,704619853023893e-16·î etwa bedeutet: 0,0000000000000003330669... + 0,00000000000000027046...î. Das ist also näher an der Null, als normale Taschenrechner noch erfassen können. Die Fülle der Wurzel- und gelegentliche Kosinusberechnungen, die ja in den besten Rechnern nur durch Näherungsverfahren numerisch bewerkstelligt werden kann, erzeugt eine natürliche Ungenauigkeit. In der Regel lassen sich die gelassenen Federn aber wieder ankleben, indem man auf die Ergebnisse ein geeignetes Verfahren zur Approximierung von Nullstellen, wie den Newton-Algorithmus anwendet, der in diesem Script implementiert ist. Er funktioniert auch bei komplexen Nullstellen.


Version: 22. 5. 2004
© Arndt Brünner
Matheseitenüberblick
Applet zum Darstellen der Nullstellen in der Zahlenebene
Rechner für reelle Zahlen
Rechner für komplexe Zahlen
Übungen zum Lösen quadratischer Gleichungen

Gästebuch