调用C# MathNet.Numerics进行矩阵运算

By jerryxjr1220 at 2022-07-07 • 0人收藏 • 758人看过

原来自己写过一个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
2022-07-08   #1

对比了一下,发现好像还是调用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);


2022-07-08   #2

C#的计算会不会快一些,毕竟科学计算很看重速度

2022-07-08   #3

回复#2 @wangming :

我没有刻意去测试速度,至少我是没感觉出来C#更快

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...