这个类库是本人参考许多相关资料之后做出的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#数值计算算法编程/周长发 著/电子工业出版社