5次関数(5次多項式)があり、C++で解きたいです。続行するために使用できる実装または数学ライブラリはありますか?
3 に答える
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の代わりにブースト多項式をプラグインできるはずです。
5次関数(5次ポリオニミアル)があり、C++で解きたいです。
ここに問題があります、かなり有名なものです。二次方程式には簡単な解決策があります。三次方程式は少し難しいです。それらを分析的に解決する1つの方法は、Cardanoの方法を使用することです。四次方程式はまだ難しいですが、それでも解析的に解くことができます。
そして、それで終わりです。多項式の係数で記述でき、標準の代数演算のみを使用する5次多項式(またはそれ以上)の根の公式はありません。数学の全分野であるガロア理論は、五分位数の汎用解析解が存在しないという証明の1つから生じました。
つまり、数値の求根手法に頼らなければならないということです。
多分これはあなたの問題を解決することができます:http ://www.gnu.org/software/gsl/manual/html_node/General-Polynomial-Equations.html