C#で数値計算(その8) - KrdLabの不定期日記で作っていたライブラリを,最近になって書き直しています.
※公開してみました→http://d.hatena.ne.jp/KrdLab/20080101/1199199036
そもそも,このライブラリは・・・
目的:
大学で頑張る研究者の方に,.NET Framework 上(C#とかVBとか)で使える数値計算・統計処理機能を提供したい
(え? .NET Framework 便利じゃないですか?)
実装方針:
既存の資産を最大限活用する(実際,内部ではCLAPACKとGSLを使っています)
実装済み項目:
実装予定項目:
- LU分解
- マハラノビス距離を用いた判別分析
- 分散分析
その他いろいろ(必要になったら適宜追加)
その他
サンプル:
// 固有値分解 { Matrix m = new Matrix( new RowVector( 0, 1, -1), new RowVector(-1, 1, 0), new RowVector( 2, 1, 0)); EigenvalueDecomposition evd = new EigenvalueDecomposition(m); evd.Sort(EigenvalueDecomposition.SortOrder.Descending); }
// 重回帰分析とgnuplotによる表示 ColumnVector Y = new ColumnVector(41.7, /* たくさんのデータ */, 48.6); RowVector[] Xs = new RowVector[]{ new RowVector( 7, 16), // たくさんのデータ new RowVector(15, 18) }; MultipleLinearRegressionAnalysis mra = new MultipleLinearRegressionAnalysis(Y, Xs); using (Wgnuplot plot = new Wgnuplot()) { XsvFormat format = new XsvFormat(); format.DataFormat = XsvDataFormatType.Table; format.Encoding = Encoding.GetEncoding("shift_jis"); format.HasHeader = false; format.HasIndexes = false; format.Separator = '\t'; using (XSV xsv = new XSV(new FileStream("tmp.dat", FileMode.Create), format)) { // gnuplotのデータフォーマットにする Matrix m = new Matrix(Xs.Length, 3); for (int r = 0; r < m.RowSize; ++r) { for (int c = 0; c < m.ColumnSize - 1; ++c) { m[r, c] = Xs[r][c]; } m[r, 2] = Y[r]; } xsv.Write(m); } // コマンドを送る IVector C = mra.CoefficientVector; plot.Send("splot " + C[0] + "+x*" + C[1] + "+y*" + C[2]); plot.Send("replot \"tmp.dat\""); System.Console.Read(); // 入力待ちにする }
NDocとNUnitを使っているのですが,SandCastleというのもあるみたい.
ふにゃるんさんが,かなり詳しく紹介してくれています.→Sandcastle Help File Builder を使って、ソースコードからドキュメントを自動作成しよう - ふにゃるん
の,乗り換えるか!?