调用C# MathNet.Numerics进行矩阵运算
By
jerryxjr1220
at 2022-07-07 • 0人收藏 • 960人看过
原来自己写过一个3x3矩阵的运算程序,但是仅限于3阶矩阵,要是其他矩阵就不行了。
C# 的MathNet.Numerics是一个非常强大的数学运算库,可以进行各种计算,矩阵计算只是其中很小一部分功能。
import dotNet;
dll = dotNet.loadFile("\res\MathNet.Numerics.dll");
MathNet = dll.import("MathNet.Numerics.LinearAlgebra.Double");
//创建矩阵
matrix1 = MathNet.DenseMatrix.Create(3, 3, 0.0);
matrix2 = MathNet.DenseMatrix.Create(3, 3, 0.0);
//设置矩阵
matrix1.SetRow(0, { 1.0, 2.0, 3.0 } );
matrix1.SetRow(1, { 4.0, 5.0, 6.0 } );
matrix1.SetRow(2, { 7.0, 8.0, 9.0 } );
matrix2.SetRow(0, { 3.0, 2.0, 1.0 } );
matrix2.SetRow(1, { 6.0, 5.0, 4.0 } );
matrix2.SetRow(2, { 9.0, 8.0, 7.0 } );
//转置
t = matrix2.Transpose();
//加减
matrix3 = matrix1.Add(matrix2.Multiply(-1));
//乘除
matrix3 = matrix1.Multiply(t);
//按行读取,在MathNet.Numerics中的矩阵下标都是从0开始
row0 = matrix3.Row(0).AsArray();
//按列读取,在MathNet.Numerics中的矩阵下标都是从0开始
col1 = matrix3.Column(1).AsArray();
3 个回复 | 最后更新于 2022-07-08
登录后方可回帖
对比了一下,发现好像还是调用python的numpy库更方便,aardio已经封装了numpy库
import console; import py3; import py3.lib.numpy; np = py3.lib.numpy; //创建矩阵 matrix1 = np.matrix({ {69.96782609, 114.5065934, 154.6747253, 199.1703297, 232.666875}, { -60.63565217, -99.43406593, -133.8362637, -171.2516484, -201.15125 }, { -49.87043478, -83.5967033, -112.5802198, -144.2593407, -169.301875 } }); matrix2 = np.matrix({ { 3.5, 6.3, 8.7, 10.9, 12.9}, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 } }); res = matrix2.dot(matrix1.I).tolist().parseValue(); console.dump(res);