10

In a C++ application I'm coding, I need to solve a system of non-linear equations (N equations, N unknowns).

The systems I'm solving will be rather small (up to 10 equations/unknowns), so performance is not going to be a real issue. I've searched the web a bit for a non-linear solver library, and I couldn't get to something which looks easy to use (got to NOX and C/C++ Minpack, but both seem to be an overkill for my need).

Any thoughts and ideas of easy-to-use libraries for this purpose?

4

8 に答える 8

3

明確にする必要があるのは、非線形方程式の解法は簡単ではないということです。一次方程式を解くことと同じではありません。常に解決策が得られるとは限りません。また、初期条件と増分戦略の選択は、得られるソリューションに大きな影響を与える可能性があります。

そうは言っても、特定のライブラリをお勧めすることはできませんが、選択肢のメニューにニュートン-ラフソン反復を含む線形代数パッケージに注意する必要があります。

于 2010-11-20T17:24:02.567 に答える
2

2 つのオプションがあります。CI で書かれた非線形ソルバーを含む日時計パッケージを使用できます。私が見つけた唯一の問題は、適切な初期見積もりを与える必要があることです。2 番目のオプションは、私が優れていると思う NLEQ または NLEQ2 を使用することです (FORTRAN で書かれていますが、C のような言語に簡単にリンクできます。ただし、今のところ見つけるのにいくつか問題がありました。可能なオプションのリストが掲載された優れた Web サイトがあります)。で: http://plato.asu.edu/sub/zero.html

于 2010-11-21T02:03:45.087 に答える
1

GSLは常に存在しますが、他の回答で行われたすべてのコメントはこれにも当てはまります。

http://www.gnu.org/software/gsl/manual/html_node/Multireflection-Root_002dFinding.html#index-nonlinear-systems-of-equations_002c-solution-of-2426

于 2010-11-20T19:08:46.817 に答える
1

数値レシピには、あなたのために仕事をするルーチンがあります。

于 2010-11-20T17:28:44.293 に答える
1

方程式がどの程度非線形であるかによって異なります。それらがいくつかの「優れた」特性を持っている場合...最も明白なのは半正定行列または凸性であり、利用可能な特殊なアルゴリズムがあるかもしれません。私は、線形計画法のニーズのほとんどに IBM/ILOG CPLEX を使用しています。C++ アプリケーションに組み込むことができるライブラリが提供されています。私は彼らの二次計画法モジュールを使用したことはありませんが、これは高馬力の線形計画法および (行儀の良い) 非線形計画法における最先端技術です。

于 2010-11-20T17:41:37.527 に答える
0

COIN-ORを見たことがありますか?OR-Exchangeに質問を送信すると役立つ場合があります。

于 2010-11-20T17:22:14.997 に答える
0

決して無料ではありませんが、Solverはここで機能します。

于 2010-11-20T17:42:37.303 に答える