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個の根があるということを考えると、どうすればすべての根を得ることができますか?

1 つの double を返すルート ソルバーは何の役に立つでしょうか?

このスレッドFinding roots of polynomial in Javaで、ソリューションで提供されているメソッドが複雑な配列を返すことに気付きました。これは私が期待していることなので、コモンズ数学多項式ソルバーが1つの二重根を返す理由を誰かが親切に説明できますか?

4

1 に答える 1

0

これらの数値アルゴリズムのほとんどは、一般的な関数 (つまり、必ずしも多項式ではない) で動作し、それらについてほとんど仮定を行いません。与えられた関数の性質が正確に何であるかを知らなければ、それがいくつの根を持っているかを推測することさえ期待できません.

一部のアルゴリズムでは、特定の関数が微分可能であるという追加の仮定が行われます。これにより高速になりますが、派生値などの追加情報を提供する必要があるため、どの関数にも使用できなくなります。

LaguerreSolver は、与えられた関数が多項式であるという追加の仮定を行います。この場合、すべてのルートを見つけることができるため、solveAllComplex() メソッドを使用します。しかし、多項式に特化した唯一のアルゴリズムです。他のすべてのアルゴリズムは、はるかに一般的です。

于 2013-01-30T13:26:42.907 に答える