Math.NET Numerics
Math.NET Numericsは、.NETおよびMono環境で使用できるオープンソースの数値計算ライブラリです。C#およびF#言語で開発されており、科学技術計算を支える豊富な機能を提供しています。このライブラリは、BLAS(Basic Linear Algebra Subprograms)や
LAPACK(Linear Algebra Package)と呼ばれる数値計算のスタンダードと同等の能力を持っています。
沿革
このプロジェクトは
2009年にdnAnalyticsとMath.NET Iridiumという2つのプロジェクトが統合されることから始まりました。さらに、
ALGLIB、
JAMA、Boostといった他の数値計算ライブラリの影響を受けており、数多くの開発者からのコード貢献も活発に行われています。Math.NETは、
2002年以来、.NETプラットフォーム向けのオープンな数学ツールの構築と維持を目的としたMath.NETイニシアチブの一環として活動しています。
その結果、Math.NETのライブラリは、MyMediaLite、FermiSim、LightField Retrievalなど、多数のオープンソースプロジェクトや研究において利用されています。
特長
Math.NET Numericsは、さまざまな数値計算機能を提供しており、以下のような特長があります。
- - 確率分布: 離散、連続、多変量に対応した各種確率分布を扱えます。
- - 擬似乱数生成: Mersenne Twister MT19937を使用して、高品質な擬似乱数を生成します。
- - 線形代数: スパース行列およびベクトルを扱い、実数および複素数のための線形代数型とソルバーを提供します。また、LU分解、QR分解、特異値分解(SVD)、固有値分解(EVD)、コレスキー分解など、さまざまな行列分解手法にも対応しています。
- - 行列の入出力: MATLABや区切りファイル形式での行列の読み書きが可能なMatrix IOクラスを搭載しています。
- - 特殊関数の計算: Gamma、Beta関数や修正ベッセル関数など、数理的に重要な「スペシャル」ルーチンも含まれています。
- - 補間ルーチン: BarycentricやFloater-Hormannなど、さまざまな補間方法を実装しています。
- - 回帰分析: 線形回帰や曲線近似のための多様なルーチンが整備されています。
- - 数値積分: 数値的に積分を行うアルゴリズムが用意されています。
- - ルート検索: Brent法やロバストニュートン法、Broyden法などを使った数値的なルート検索が可能です。
- - 統計分析: 記述統計、順序統計、ヒストグラム、ピアソン相関係数の計算ができます。
- - マルコフ連鎖モンテカルロ法: 確率的サンプリング手法にも対応しています。
- - 財務統計: 基本的な財務データの統計処理が行えます。
- - フーリエ変換: 高速フーリエ変換(FFT)やハートレー変換の実装があります。
- - 数式簡素化: 複雑な数式を簡素化するためのオーバーロードされた数学演算子が用意されています。
このライブラリは
Microsoft WindowsとMonoの両方に対応しており、Intel Math Kernel Libraryによるオプションサポートも利用可能です。また、F#拡張が用意されており、より自然なインターフェースで利用することができます。
関連項目
外部リンク
このように、Math.NET Numericsは広範囲な機能を持ち、多彩な数値計算ニーズに応えることができる強力なライブラリです。