1

您好尝试使用 commons-math 的 PolynomialSolver 类的基本问题。

根据此处的文档http://commons.apache.org/math/userguide/analysis.html以及 API,求解方法通常采用以下形式

double c = solver.solve(100, function, 1.0, 5.0, AllowedSolution.LEFT_SIDE);

我显然遗漏了一些东西,但鉴于代数的基本定理是 n 次多项式有 n 个根,我如何得到所有根?

根求解器返回一个双精度有什么好处?

我在此线程中注意到在Java 中查找多项式的根,解决方案中提供的方法返回一个复数数组。这是我所期望的,所以有人可以解释为什么公共数学多项式求解器返回一个双根吗?

4

1 回答 1

0

这些数值算法中的大多数都在通用函数(即不一定是多项式)上运行,并且很少对它们做出假设。如果我们不知道给定函数的确切性质是什么,我们甚至不能指望推断它可能有多少根。

那里的一些算法做出了额外的假设,即给定的函数是可微的。这使它们更快,但需要您提供一些额外的信息,例如派生值,因此您不能再将它们用于任何功能。

LaguerreSolver 额外假设给定函数是多项式。在这种情况下,是否可以找到所有根,因此可以使用 solveAllComplex() 方法。但它是唯一专门研究多项式的算法。所有其他算法都更加通用。

于 2013-01-30T13:26:42.907 回答