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 - SMPP 提交国际消息的目的地址无效

java - Guice FactoryModuleBuilder 一个带有构造函数参数的实例

c - 多项式相乘 : Unexpected output

java - 在 Apache Commons Math 的程序流程中更改分布参数

java - Java中的curl语法模拟

c++ - 查找两点之间的整数坐标

algorithm - 2D 平面中的点与平面原点之间的不同路径数

java - 如何在 Java 中正确使用 Apache 公共(public)数学库中的 ZipfDistribution?

java - 公共(public)数学微分结果为0

java - RMI实现Java