2009-05-08 38 views
23

.NET/C#用の優れた(十分にテストされた、完全に機能し、理想的には素敵なインターフェイスを備えた)マトリックスライブラリを探しています。ここでの私の主な要件は、無料でなければならないということだけです(この場合はオープンソースかどうか特に気にしません)。好ましくはsparse matrixの操作をサポートします。義務的な要件はすべて、基本的な演算(例えば、乗算、転置、反転)であり、固有値を見つけることである。&固有ベクトル。固有値の発見のための数値解析法よりもむしろ数値解析法の実装、特に疎行列の場合のLanczos algorithmは、私が扱う予定の行列が非常に大きい(10,000以上の長さ)正方形であり、また適度に疎である。それでは、私はそこに少しだけ質問するかもしれないので、合理的に完全なマトリックスライブラリの提案はすばらしいでしょう。.NET用Matrixライブラリ

私は、Pythonにこのようなタスク(つまりNumPy/SciPy)の1つまたは2つの有用なライブラリがあることを知っていますが、残念ながらこの領域には.NETが不足しているようです。

私は潜在的に使用でき、.NETのための以下のライブラリ上がって検索するビット:

しかし、私はこれらのライブラリや他のものを使用していた経験が全くなかったので、私は、さまざまな図書館、彼らの賛否両論、特に私の用途への適合性、そして彼らとの一般的な経験について、彼らの勧告について話し合うことができれば、非常に感謝しています。

MatLabへのアクセスは常に選択肢ですが、マトリクス演算を自分のプログラムに直接組み込むことができれば便利です。

答えて

8

編集:

は、かなりあり、私はそれを評価した最後の時間はありませんでしたが、かなり活性があったので、あなたも(フリーでオープンソース)Math.NET Numericsを検討すべきです。

今見ていると、彼らは新しいバージョンを完成し、疎な行列サポートを追加したようです。


もっと堅牢なサポートが必要な場合は、残念ながら.NETのatm用の商用パッケージに入る必要があります。

非常に豊富な機能を備えたパッケージが2つあり、両方とも非常によく行列をサポートしています。 Extreme Numericsはうまく動作し、とても素敵な機能がいくつかあります。私はまた、IMSL Visual Numerics数学ライブラリについて非常に良いことを聞いてきました。

+1

ええ、私はあなたが正しいと思うようになってきました。商用パッケージは本当に私が恐れているオプションではありません、私は大学生です。それでも、お勧めしていただきありがとうございます。 – Noldorin

+0

@ Noldorin:私はJeremyに極度の数値で書いて、あなたが学生であり、商業的に使用されていないので、彼にあなたが研究ライセンスを提供できるかどうか尋ねるでしょう。それは小さな会社であり、オーナーはかなりフレンドリーで反応が良いようです。 (彼はサポート、プリセールスなどのために素晴らしいです)それは傷つけることはできません。 ;) –

+0

@Noldorin:dnAnalyticsを覚えておきました。おそらく、非商業的な選択肢としては最高のものです。 –

0

現在廃止されているManaged DirectXライブラリには、いくつかの行列サポートがありました。

これはMicrosoft XNAにラップされていますが、これはおそらくあなたには適していませんが、MDX Wikipedia articleSlimDXという名前のmight be okayを推奨しています。

+0

残念ながら、サイズが4x4の行列のみをサポートしているということを考えると、残念ながら私の選択肢はありません。私は1000行/列の行列を扱うことができ、疎な行列を効率的に扱うのが理想的です(例えば乗算の場合)。 – Noldorin

2

私は過去にMapackを持っていて、とても良いと感じました。

しかし、私はそれがスパース行列を持っているとは思わないが、すべての基本線形代数関数をサポートしている。

+0

ええ、疎な行列のサポートはありません。それでも、推薦のおかげで。 – Noldorin

1

大学のニューラルネットワークプロジェクトでMapack(COM版ではない.Net版)を使用しました。私は、図書館の細部を正確に覚えているわけではありませんが、それは私が必要としたすべてを行いました。特に使用するのは厄介ではありませんでした。

+0

マクサックは、完璧ではないにしても、無料のlibsまで行く方法であるとコンセンサスは(少なくとも2つの答えと私が他で読んだビットで判断しているようです)私は大学のプロジェクトにも行列の機能を使っていますが、それは物理ベースのものですが、どういうわけか結果が得られれば、その方法についてはそれほど重要ではありません。とりあえずありがとう。 – Noldorin

2

もう1つの代替方法:IMSL for .NET。 CenterSpaceにはNMathのライブラリがあり、これを使用していません。

+0

これらはどちらも商業的に見えます。彼らはむしろ良いライブラリのように思えるので、残念です。 – Noldorin

+0

@Noldorin:.NETの空間でかなり徹底的な検索をしました。良い、頑強な行列ライブラリはすべて、かなり商業的です(少なくとも2008年初頭)。 –

+0

@Reed:ええ、それはまったく私を驚かさないでしょう...とにかくあなたの言葉を取ります。私は、Mapackライブラリを使用し、Lanczosアルゴリズムを実装すれば、その作業を行うかもしれないのだろうかと思っています。 – Noldorin

1

codeplexでホストされています)は、非対称行列の固有値と固有ベクトルを計算するフリーパッケージですが、現在は疎行列を特別に扱っていません。

+0

提案していただきありがとうございます。おそらくdnAnalyticsは、まばらな行列をうまく扱うことができるので、おそらくdnAnalyticsを使うでしょうが、それは便利な汎用ライブラリのように見えます。 – Noldorin

0

.NETとPythonに関しては、IronPythonを使用できます。ただし、SciPyとNumPyをIronPythonで使用できるようにするには、Ironcladも必要です。

3

ILNumericsを試してみてください。私たちは、RELを持っています。オープンソースプロジェクトとして長い歴史を持ち、最近ではより信頼性の高いサポートのために商用ライセンスに変更されました。私はバイアスされていますが、ここで短い機能リスト来る:

  • より良いメモリ管理、ひいては...
  • はるかに高速なアルゴリズム
  • は、同様の線形代数
  • のn次元の配列クラス、構文についてMKLを使用しますMatlabのに
  • 3Dプロットは、モノ用
  • サポートビット
  • 32/64のサポートを制御
  • Full feature list