Frage

Was läuft da falsch mit meiner Implementierung eines quartic Gleichungsauflöser?
Hier ist mein Code auf GitHub . Ich folgte: http://www.1728.com/quartic2.htm
In der Tat beginnt die wirkliche Umsetzung auf Linie 271, wo ich die monic Poly erstellen.

Wenn ich es mit einem Polynom mit 4 reellen Wurzeln versuche es funktioniert gut (zum Beispiel mit 3x ^ 4 + 6x ^ 3 - 123x ^ 2 - 126x + 1.080)., Gibt sonst falsch Wurzeln

Danke,
Rubik

P. S. Ich rief die Funktion __quartic, weil sie noch in der Entwicklung

ist
War es hilfreich?

Lösung

Wenn es kein Problem mit dem kubischen Löser (wie phkahler vorgeschlagen), dann wette ich, dass es ein Fall von int Division in diesen Zeilen ist:

f = float(c - (3*b**2 / 8))
g = float(d + (b**3/ 8) - (b*c / 2))
h = e - (3*b**4 / 256) + (b**2 * c / 16) - (b*d / 4)

Wenn Sie eine Version von Python verwenden, die weniger als 3,0 und nicht die Teilung von __future__ importieren, dann können Sie sich hier große Probleme haben. Zum Beispiel, wenn b = 3, dann (3*b**2/8) bis 3 durch int Teilung gleich ist und nicht der richtige Schwimmer Teilungswert von 3,375. Wahrscheinlich der beste Weg, dies zu korrigieren, ist a, b, c, d und e Schwimmer zu konvertieren, bevor Sie tun Berechnungen beginnen. Ihre Umwandlung in Schwimmer nach alle Berechnungen für f und g sind wirklich nicht notwendig, nachdem Sie diese Korrektur vorgenommen haben, und sie sind nicht wirklich viel Sie jetzt zu helfen.

Weitere Informationen zu diesem Geschäftsbereich Problem und seine Geschichte siehe:

http://www.python.org/dev/peps/pep-0238 /

http: //python-history.blogspot. com / 2009/03 / Problem-with-integer-division.html

Andere Tipps

Gibt es in Ihrer Kubikwurzel Löser Arbeit? Sie sollten es nur reduziert haben eine einzige reelle Wurzel für die Verwendung innerhalb des quartic Solver zurück. Führen Sie eine Reihe von Testfällen auf dem kubischen Löser zuerst, einschließlich Gleichungen mit dem beiden 1 und 3 reellen Wurzeln. Erst danach wird überprüft, sollten Sie versuchen, den quartic Solver zu debuggen.

Vielleicht kann ich helfen. Ich schrieb ein Programm und das Verfahren zur Lösung von Gleichungen vierten Grades .

Ich vermute, Sie sind nicht das Programm in JavaScript zu schreiben. Ich wäre bereit zu helfen (wenn ich kann).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top