• C#矩阵运算类库


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

  • 相关阅读:
    CRC全套算法 CRC4,CRC5,CRC7,CRC8,CRC16,CRC32,CRC32 mpeg-2
    ubuntu18.04使用vscode报pylint is not install错误
    [转]C结构体之位域(位段/位域)
    获取gcc和clang的内置宏定义
    Win10下使用MinGW到指定路径编译C-C++文件
    【YM】ssh命令 远程登录Linux
    Linux环境下搭建Qt5.9开发环境
    WSL-Ubuntu-更换apt源为阿里源
    git常用命令
    Lucene的基本使用
  • 原文地址:https://www.cnblogs.com/HeYanjie/p/5707283.html
Copyright © 2020-2023  润新知