设计经典网站,wordpress多域名配置,上海公布最新情况,seo网络推广方法文章目录 安装索引和计算逐点计算静态方法 MathNet系列#xff1a;矩阵生成
安装
MathNet.Numerics中提供了线性代数、微积分、特殊函数、概率论、随机函数、插值、最优化等一系列功能#xff0c;是.net技术中首选的数值计算包。
其中#xff0c;线性代数包LinearAlgebra… 文章目录 安装索引和计算逐点计算静态方法 MathNet系列矩阵生成
安装
MathNet.Numerics中提供了线性代数、微积分、特殊函数、概率论、随机函数、插值、最优化等一系列功能是.net技术中首选的数值计算包。
其中线性代数包LinearAlgebra包提供了向量、矩阵等数据结构这些是数值计算的前提故而相比于其他包更加基础。
下面用VS新建一个控制台项目并启用顶级语句。点击工具-NuGet包管理器-管理解决方案的NuGet程序包进入浏览选项卡搜索MathNet.Numerics选中安装。
索引和计算
MathNet并未重载索引运算符而是通过At方法来索引。但矩阵重载了许多运算符支持加减法以及矩阵乘法运算。需要注意*是矩阵乘法而非对应元素的乘法。
Matrix也封装了常见运算的方法以加法为例提供了两种方案一是直接返回一个矩阵二是实现一个void方法通过传地址的方式更改输入的另一个矩阵。示例如下
using MathNet.Numerics.LinearAlgebra;Matrixdouble m Matrixdouble.Build.Dense(3, 4, 0.5);
Matrixdouble n Matrixdouble.Build.Dense(3, 4, 0.8);
Matrixdouble p Matrixdouble.Build.Dense(3, 4);Console.WriteLine(m.Add(n));
m.Add(n, p);其中m.Add(n)返回mnm.Add(n, p)则相当于pmn。
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;Matrixdouble m Matrixdouble.Build.Dense(3, 4, 0.5);
Console.WriteLine(m);
Console.WriteLine(Matrixdouble.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.5DenseMatrix 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
*/