プログラムで一次方程式系を解く必要があります。C++ 用の単純な線形代数ライブラリはありますか? 私は1時間近く探していましたが、見つかったものはすべて、Linuxをいじったり、MinGWでDLLをコンパイルしたりする必要があります.. (私はVisual Studio 2008を使用しています.)
4 に答える
エイゲンはあなたが探しているものだと思います。
http://eigen.tuxfamily.org/index.php?title=Main_Page
これはヘッダーのみのライブラリであり、多くのコンパイラでコンパイルされます。それはより速い数学のためにエキゾチックなアセンブリさえ使用します。
これは、線形ソルバーAPIを紹介するページです。
http://eigen.tuxfamily.org/dox-2.0/TutorialAdvancedLinearAlgebra.html
単純なAPIを備えたソルバーがいくつかあります。
Boostには、いくつかの基本的な線形代数があります。
LAPACKのC++ バインディングを使用できます。簡単なグーグルは、このリンクをいくつかのLAPACK for Windowsライブラリに変えました。ただし、システムの規模によっては、これはやり過ぎかもしれません。
私はArmadilloの大ファンですが、ダウンロード ページの最後によると、ここでコンパイラに問題がある可能性があり ます。
ウィンドウズ
これまでのところ、Armadillo の開発とテストは主に UNIX ライクなプラットフォームで行われてきましたが、プラットフォーム固有のコードはほとんどまたはまったくないはずです。初歩的なテストは Windows マシンで行われましたが、開発者はより詳細なテストで Armadillo がどのように機能するかを知りたいと考えています。
「MS Visual C++ 2008 Express Edition」コンパイラで問題が発生した場合 (C++ 標準のサポートが不完全なため)、次の代替無料コンパイラを試してください。
- Intel の C++ コンパイラ
- GCC (MinGW の一部)
- GCC (CygWin の一部)
これは適切に指定された (そしてほとんどがテンプレート化された) ライブラリであるため、試してみる価値があります。
それ以外の場合は、コンパイラがサポートされているとリストされているEigen2を試してください。
編集:コメントに応えて、Armadillo はLapack を必要としませんが、 Lapack を使用するとより適切に機能します (調整された Blas を使用するとさらに改善されます):
Q: Armadillo をフルに活用するには、他にどのようなライブラリが必要ですか?
A: Armadillo は外部ライブラリがなくても動作します。ただし、機能を追加するには、LAPACK および ATLAS ライブラリをインストールすることをお勧めします。Armadillo は可能な限り LAPACK の代わりに ATLAS ルーチンを使用します。Q: LAPACK/ATLAS なしで Armadillo はどのくらいうまく動作しますか?
A: 基本的な機能 (行列の加算や乗算など) は利用できますが、固有分解などは利用できません。行列の乗算 (主に大きな行列の場合) はそれほど高速ではありません。