这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。
源码github网址:https://github.com/JoshuaHe2015/MatrixLibrary
功能介绍:(持续更新中)
1、矩阵的基本运算:
矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。
1 using System;
2 using LinearAlgebra;
3 namespace MatrixLibraryTest
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Matrix A = Matrix.Create(2, 2, new double[] { 1, 2, 3, 4 });
10 Matrix B = new double[,] {
11 { 5, 6 },
12 { 7, 8 } };
13 Matrix C = A + B;
14 Matrix D = A * 2;
15 Matrix E = A * B;
16 Matrix F = E.Inverse();
17 Console.WriteLine(C);
18 Console.WriteLine(D);
19 Console.WriteLine(E);
20 Console.WriteLine(F);
21 Console.ReadKey();
22 }
23 }
24 }
2、矩阵分解:
LU分解、QR分解
1 using System;
2 using LinearAlgebra;
3 namespace MatrixLibraryTest
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Matrix A = new double[,]
10 {
11 {1,2,3 },
12 {2,5,2 },
13 {3,1,5 }
14 };
15 var lu = A.LU();
16 Console.WriteLine(lu.L);
17 Console.WriteLine(lu.U);
18 Matrix B = new double[,]
19 {
20 {1,1,-1 },
21 {2,1,0 },
22 {1,-1,0 },
23 {-1,2,1 }
24 };
25 var qr = B.QR();
26 Console.WriteLine(qr.Q);
27 Console.WriteLine(qr.R);
28 Console.ReadKey();
29 }
30 }
31 }
3、IO操作:
支持从文本文件中读取矩阵、将矩阵写入文本文件
1 using System;
2 using LinearAlgebra;
3 namespace MatrixLibraryTest
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Matrix A = Matrix.Load("D:\\mat_A.txt");
10 Console.WriteLine(A);
11 Matrix B = Matrix.Random(3, 3);
12 B.Save("D:\\mat_B");
13 Console.ReadKey();
14 }
15 }
16 }
4、特殊运算:
求Hessen Berg矩阵,求解矩阵特征值
5、线性方程组的求解:
高斯消元法求解线性方程组、QR分解求最小二乘解、共轭梯度法求对称正定方程组6、特殊矩阵:
生成零矩阵、一矩阵、单位矩阵
7、提取矩阵子集:
可以提取矩阵的行、列或对角
8、其他:
支持复数运算与向量运算
参考文献:
1、数值分析(第5版)/李庆扬 著/清华大学出版社
2、C#数值计算算法编程/周长发 著/电子工业出版社
来源:https://www.cnblogs.com/HeYanjie/p/5707283.html