Реализация решателя четвертого уравнения не работает - PullRequest
1 голос
/ 18 января 2011

Что не так с моей реализацией решателя квартичных уравнений?
Вот мой код на GitHub . Я следовал этому: http://www.1728.com/quartic2.htm
На самом деле реальная реализация начинается со строки 271, где я создаю монический поли.

Если я попробую его с полиномом с 4 действительными корнями, он будет работать нормально (например, с 3x ^ 4 + 6x ^ 3 - 123x ^ 2 - 126x + 1 080), в противном случае выдаст неправильные корни.

Спасибо
рубик

P.S. Я вызвал функцию __quartic, потому что она все еще находится в разработке

Ответы [ 3 ]

4 голосов
/ 18 января 2011

Если это не проблема с вашим кубическим решателем (как предложил phkahler), то я держу пари, что это случай деления int в следующих строках:

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)

Если вы используетеверсия Python, которая меньше 3.0 и не импортирует деление из __future__, тогда у вас могут быть серьезные проблемы здесь.Например, если b = 3, то (3*b**2/8) равно 3 при делении на int, а не на правильное значение деления с плавающей запятой, равное 3,375.Вероятно, лучший способ исправить это - преобразовать a, b, c, d и e в числа с плавающей точкой, прежде чем вы начнете делать вычисления.После того, как вы сделали это исправление, ваше преобразование в число с плавающей точкой после всех вычислений для f и g действительно не нужно, и сейчас они вам не особо помогают.

Для получения дополнительной информации об этой проблеме деления и ее историисм .:

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

http://python -history.blogspot.com / 2009/03 / problem-with-integer-Division.html

1 голос
/ 21 января 2011

Возможно, я могу помочь. Я написал программу и процедуру решения квартичных уравнений .

Полагаю, вы не пишете программу на JavaScript. Я был бы готов помочь (если смогу).

1 голос
/ 18 января 2011

Работает ли ваш решатель кубических корней?Вы должны уменьшить его до возврата только одного реального корня для использования в решателе кварталов.Сначала запустите ряд тестов для кубического решателя, включая уравнения с 1 и 3 действительными корнями.Только после того, как это будет проверено, вы должны попытаться отладить решатель квартов.

...