6

我有一个五次函数(5 次多项式),我想用 C++ 解决它。有没有我可以使用的实现或数学库来继续?

4

3 回答 3

4

我有一个五次函数(5 次多项式),我想用 C++ 解决它。

这里有一个问题,一个相当有名的问题。二次方程有一个简单的解。三次方程更难一些。分析解决它们的一种方法是通过卡尔达诺的方法。四次方程更难,但仍然可以解析求解。

这就是它结束的地方。五次多项式方程(或更高)的根没有公式可以用多项式的系数来写,并且只能使用标准代数运算。一个完整的数学分支,伽罗瓦理论,源于一个证明,即不存在五次元的通用解析解。

这意味着您将不得不求助于数字求根技术。

于 2012-09-30T12:16:53.683 回答
4

Boost有这个。看看这里:

http://www.boost.org/doc/libs/1_51_0/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html http://www.boost.org/doc/libs/1_51_0 /libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html

描述

这些函数求解某些函数 f(x) 的根,而不需要 f(x) 的导数。这里使用 TOMS 算法 748 的函数是渐近已知的最有效的函数,并且已被证明对于某些类别的平滑函数是最优的。

或者,有一个简单的二分例程,在某些情况下它本身就很有用,或者在调用更高级的算法之前缩小包含根的范围。

不幸的是,这些库对初学者不友好,我还没有找到如何使用它们的示例。现在按原样提供答案。现在,看看这里 http://programmingexamples.net/wiki/CPP/Boost/Math/Tools/TOMS748

您应该能够插入升压多项式而不是 t。

于 2012-09-30T10:29:32.207 回答
3

也许这可以解决您的问题:http ://www.gnu.org/software/gsl/manual/html_node/General-Polynomial-Equations.html

于 2012-09-30T10:32:06.207 回答