C#矩阵运算类库

Posted Thomas会写字

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#矩阵运算类库相关的知识,希望对你有一定的参考价值。

这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。

源码github网址:https://github.com/JoshuaHe2015/MatrixLibrary

功能介绍:(持续更新中)

1、矩阵的基本运算:

  矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。

using System;
using LinearAlgebra;
namespace MatrixLibraryTest

    class Program
    
        static void Main(string[] args)
        
            Matrix A = Matrix.Create(2, 2, new double[]  1, 2, 3, 4 );
            Matrix B = new double[,] 
                 5, 6 ,
                 7, 8  ;
            Matrix C = A + B;
            Matrix D = A * 2;
            Matrix E = A * B;
            Matrix F = E.Inverse();
            Console.WriteLine(C);
            Console.WriteLine(D);
            Console.WriteLine(E);
            Console.WriteLine(F);
            Console.ReadKey();
        
    

2、矩阵分解:

  LU分解、QR分解

using System;
using LinearAlgebra;
namespace MatrixLibraryTest

    class Program
    
        static void Main(string[] args)
        
            Matrix A = new double[,]
            
              1,2,3 ,
              2,5,2 ,
              3,1,5 
            ;
            var lu = A.LU();
            Console.WriteLine(lu.L);
            Console.WriteLine(lu.U);
            Matrix B = new double[,]
            
                1,1,-1 ,
                2,1,0 ,
                1,-1,0 ,
                -1,2,1 
            ;
            var qr = B.QR();
            Console.WriteLine(qr.Q);
            Console.WriteLine(qr.R);
            Console.ReadKey();
        
    

3、IO操作:

  支持从文本文件中读取矩阵、将矩阵写入文本文件

using System;
using LinearAlgebra;
namespace MatrixLibraryTest

    class Program
    
        static void Main(string[] args)
        
            Matrix A = Matrix.Load("D:\\\\mat_A.txt");
            Console.WriteLine(A);
            Matrix B = Matrix.Random(3, 3);
            B.Save("D:\\\\mat_B");
            Console.ReadKey();
        
    

4、特殊运算:

  求Hessen Berg矩阵,求解矩阵特征值

5、线性方程组的求解:

  高斯消元法求解线性方程组、QR分解求最小二乘解、共轭梯度法求对称正定方程组6、特殊矩阵:

  生成零矩阵、一矩阵、单位矩阵

7、提取矩阵子集:

  可以提取矩阵的行、列或对角

8、其他:

  支持复数运算与向量运算

参考文献:

  1、数值分析(第5版)/李庆扬 著/清华大学出版社

  2、C#数值计算算法编程/周长发 著/电子工业出版社

以上是关于C#矩阵运算类库的主要内容,如果未能解决你的问题,请参考以下文章

C#矩阵运算类库 -- 一些补充

C#矩阵运算类库 -- 一些补充

本征向量本征值正定矩阵的定性理解

矩阵简单导数运算

矩阵简单导数运算

标量向量矩阵张量之间的区别和联系