文章目录

安装索引和计算逐点计算静态方法

MathNet系列:矩阵生成

安装

MathNet.Numerics中提供了线性代数、微积分、特殊函数、概率论、随机函数、插值、最优化等一系列功能,是.net技术中首选的数值计算包。

其中,线性代数包LinearAlgebra包提供了向量、矩阵等数据结构,这些是数值计算的前提,故而相比于其他包更加基础。

下面用VS新建一个控制台项目,并启用顶级语句。点击工具->NuGet包管理器->管理解决方案的NuGet程序包,进入浏览选项卡,搜索MathNet.Numerics,选中安装。

索引和计算

MathNet并未重载索引运算符,而是通过At方法来索引。但矩阵重载了许多运算符,支持加减法以及矩阵乘法运算。需要注意,*是矩阵乘法,而非对应元素的乘法。

Matrix也封装了常见运算的方法,以加法为例,提供了两种方案,一是直接返回一个矩阵,二是实现一个void方法,通过传地址的方式,更改输入的另一个矩阵。示例如下

using MathNet.Numerics.LinearAlgebra;

Matrix m = Matrix.Build.Dense(3, 4, 0.5);

Matrix n = Matrix.Build.Dense(3, 4, 0.8);

Matrix p = Matrix.Build.Dense(3, 4);

Console.WriteLine(m.Add(n));

m.Add(n, p);

其中,m.Add(n)返回m+n;m.Add(n, p)则相当于p=m+n。

Matrix封装了一些乘除法,其调用逻辑与Add相似,列举如下

Multiply 矩阵乘法PointwiseMultiply 逐点相乘LeftMultiply 向量左乘,返回一个向量Divide 除以某个数DivideByThis 除某个数PointwiseDivide 逐点相除PointwiseRemainder 逐点求余PointwiseModulus 逐点取模Power 乘方PointwisePower 逐点乘方

逐点计算

Matrix中提供了一大批Pointwise开头的方法,用于点对点的计算

PointwiseAbsoluteMaximum返回绝较大的对值值PointwiseAbsoluteMinimum返回绝较小的对值值

三角函数PointwiseCos, PointwiseSin, PointwiseTan反三角函数PointwiseAcos, PointwiseAsin, PointwiseAtan双曲函数PointwiseCosh, PointwiseSinh, PointwiseTanh取整PointwiseCeiling, PointwiseFloor, PointwiseRound指数对数PointwiseExp, PointwiseLog, PointwiseLog10比大小PointwiseMaximum, PointwiseAbsoluteMaximumPointwiseMinimum, PointwiseAbsoluteMinimum开根号PointwiseSqrt

静态方法

Matrix类中封装了一些静态方法,除了绝对值Abs,开根号Sqrt之外,还有如下

类别函数三角函数Cos, Sin, Tan反三角函数Acos, Asin, Atan双曲函数Cosh, Sinh, Tanh指数对数Exp, Log, Log10,取整Ceiling, Floor, Round

以指数函数示例如下

using MathNet.Numerics.LinearAlgebra;

using System.Runtime.InteropServices;

Matrix m = Matrix.Build.Dense(3, 4, 0.5);

Console.WriteLine(m);

Console.WriteLine(Matrix.Exp(m));

/*

DenseMatrix 3x4-Double

0.5 0.5 0.5 0.5

0.5 0.5 0.5 0.5

0.5 0.5 0.5 0.5

DenseMatrix 3x4-Double

1.64872 1.64872 1.64872 1.64872

1.64872 1.64872 1.64872 1.64872

1.64872 1.64872 1.64872 1.64872

*/

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。