【C#】 数値演算ライブラリ Math.Net Numerics

■ はじめに

行列計算をC#で行いたいので調べていたら、
「Math.Net Numerics」というライブラリが見つかったので試してみた

補足(2019/05/19追記)

 * .NET環境用の科学技術・統計計算ライブラリ「NAG Library for .NET」っていうのもあるらしい
http://www.nag-j.co.jp/naglib/dt/index.htm


■ 環境構築

 * NuGet でインストールするだけ(簡単!)

構築環境

 * OS : Windows10
 * VS : Microsoft Visual Studio Community 2017 (Version 15.9.1)
 * Math.NET Numerics : v4.7.0

構築手順

[1] ソリューションエクスプローラーからソリューション名を右クリックし、[NuGetパッケージの管理]-[参照]を選択
[2] 検索欄に「Numerics」と入力して検索すると「Math.NET Numerics」が検索結果から現れるので
    「インストール」ボタン押下
[3] 確認のために、以下のサンプルを参考に画像を表示するコードを実行してみる

■ サンプル

using MathNet.Numerics.LinearAlgebra.Double;
using System;
using System.Windows.Forms;

namespace SampleForm
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      // こんな風に行列を初期化できる
      var matrix = DenseMatrix.OfArray(new double[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 9, 8 } });
      // 逆行列
      var inverseMatrix = matrix.Inverse();

      this.label1.Text = string.Format("{0}\n{1}\n{2}\n{3}\n\n{4}\n{5}\n{6}\n{7}",
        matrix, inverseMatrix,
        matrix.RowCount, matrix.ColumnCount,
        matrix[0, 0], matrix[0, 2], matrix[1, 2], matrix[2, 1]);
    }
  }
}

出力結果

DenseMatrix 3x3-Double
1  2  3
4  5  6
7  9  8

DenseMatrix 3x3-Double
-1.55556   1.22222  -0.333333
 1.11111  -1.44444   0.666667
0.111111  0.555556  -0.333333

3
3

1
3
6
9