Math.Net DotNet阵营中的开源Math库,官网为www.mathdotnet.com。
高数、线代等知识已经忘得差不多了,MathNet的相关中文资料好像也不多,真有点费力气。
VS中使用Math.Net 可以直接用Nuget添加MathNet.Numerics。
下面测试一个最简单的线性方程组:
1.建立左侧的系数矩阵
1 1
1 -1
var ma = DenseMatrix.OfArray(new double[,] {{1, 1}, {1, -1}});
2.建立右侧的矩阵或向量
var va = Vector<double>.Build.DenseOfArray(new double[] {3,1});//向量
var mb = DenseMatrix.OfArray(new double[,] {{3}, {1}});//矩阵
3.求解
//var mx = ma.Solve(va);
var mx = ma.Solve(mb);
源代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
namespace ConsoleDemo
{
class Program
{
static void Main(string[] args)
{
/*
var ma = DenseMatrix.OfArray(new double[,] {{1, 1}, {1, -1}});
var va = Vector<double>.Build.DenseOfArray(new double[] {3,1});
var mx = ma.Solve(va);
Console.WriteLine(mx.ToString());
Console.ReadLine();
*/
var ma = DenseMatrix.OfArray(new double[,] { { 1, 1 }, { 1, -1 } });
var mb = DenseMatrix.OfArray(new double[,] {{3}, {1}});
var mx = ma.Solve(mb);
Console.WriteLine(mx.ToString());
Console.ReadLine();
}
}
}