java - Apache 公共(public)数学 PolynomialSolver : how to get all roots?

标签 java polynomial-math apache-commons-math

您好,尝试使用 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 个根,我如何获得所有根?

根求解器返回一个 double 值有什么好处?

我在这个帖子中注意到Finding roots of polynomial in Java解决方案中提供的方法返回一个复杂的数组。这是我所期望的,所以有人可以解释一下为什么公共(public)数学多项式求解器返回一个双根吗?

最佳答案

大多数数值算法都对通用函数(即不一定是多项式)进行操作,并且对它们做出很少的假设。如果我们不知道给定函数的本质到底是什么,我们甚至无法期望推断它可能有多少个根。

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

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

关于java - Apache 公共(public)数学 PolynomialSolver : how to get all roots?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601880/

相关文章:

java - 将动态值作为请求正文发布

graph-theory - 确定图形的色多项式的问题

创建一个迭代程序来估计多项式的根

java - 如何使用表格格式打印实数矩阵

java - 在 Scala 中构造 EnumeratedDistribution 的实例

java - 如何将 RealVector 与 RealMatrix 相乘?

父类(super class)的 Java 泛型上下文类型

Java:为什么程序会跳过字符输入?

java Swing监听器: components listening at each others

无法正确解码多项式