Существует ли открытая C-реализация для решения квартичных уравнений:
Я думаю о реализации решения Ferrari. В Википедии я читал, что решение устойчиво в вычислительном отношении только для некоторых из возможных комбинаций знаков коэффициентов. Но, возможно, мне повезло ... Я получил прагматичное решение, решив аналитически, используя систему компьютерной алгебры и экспортировав в C. Но если есть проверенная реализация, я бы предпочел использовать это. Я ищу быстрый метод и предпочитаю не использовать общий поиск корня.
Мне нужны только реальные решения.
polynomials
nonlinear-equations
roots
highsciguy
источник
источник
Ответы:
Я бы настоятельно рекомендовал не использовать закрытые формы решений, поскольку они, как правило, очень нестабильны. Вы должны быть предельно внимательны в отношении порядка и порядка оценки дискриминанта и других параметров.
Классическим примером является пример для квадратного уравнения . Вычисляя корни как вы попадете в беду для многочленов, где с тех пор вы получаете отмену в числитель. Вам нужно вычислить .ax2+bx+c=0
Хаймам в своем шедевре «Точность и стабильность численных алгоритмов» (2-е изд, SIAM) использует метод прямого поиска, чтобы найти коэффициенты кубического полинома, для которого классическое аналитическое кубическое решение дает очень неточные результаты. В качестве примера он приводит . Для этого многочлена корни хорошо отделены, и, следовательно, проблема не является плохо обусловленной. Однако, если он вычисляет корни, используя аналитический подход, и оценивает многочлен от этих корней, он получает остаток от , используя метод стабильного стандарта (метод матрицы-компаньона) остаток имеет порядок[a,b,c]=[1.732,1,1.2704] O(10−2) O(10−15) , Он предлагает небольшую модификацию алгоритма, но даже тогда он может найти набор коэффициентов, ведущих к вычетам что определенно не годится. См. P480-481 вышеупомянутой книги.O(10−11)
В вашем случае я бы применил метод Барстоу . Он использует итеративную комбинацию итераций Ньютона на квадратичных формах (а затем решаются корни квадратичных) и дефляцию. Это легко реализовать, и в Интернете даже есть несколько реализаций.
источник
Смотрите эти:
Решение квартик и Cubics для графики , первоначально опубликованной в Graphics Gems V . Оригинальный код здесь . Смотрите также это и это .
Универсальный метод решения квартичных уравнений .
источник
Численные рецепты в c обеспечивают выражение в замкнутой форме для вещественных корней квадратичных и кубических, которые предположительно имеют приличную точность. Поскольку алгебраическое решение квартики включает в себя решение кубики, а затем решение двух квадратиков, возможно, замкнутая форма квартики с хорошей точностью не может быть и речи.
источник