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(, , new double[] { , , , });
Matrix B = new double[,] {
{ , },
{ , } };
Matrix C = A + B;
Matrix D = A * ;
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[,]
{
{,, },
{,, },
{,, }
};
var lu = A.LU();
Console.WriteLine(lu.L);
Console.WriteLine(lu.U);
Matrix B = new double[,]
{
{,,- },
{,, },
{,-, },
{-,, }
};
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(, );
B.Save("D:\\mat_B");
Console.ReadKey();
}
}
}
4、特殊运算:
求Hessen Berg矩阵,求解矩阵特征值
5、线性方程组的求解:
高斯消元法求解线性方程组、QR分解求最小二乘解、共轭梯度法求对称正定方程组6、特殊矩阵:
生成零矩阵、一矩阵、单位矩阵
7、提取矩阵子集:
可以提取矩阵的行、列或对角
8、其他:
支持复数运算与向量运算
参考文献:
1、数值分析(第5版)/李庆扬 著/清华大学出版社
2、C#数值计算算法编程/周长发 著/电子工业出版社
C#矩阵运算类库的更多相关文章
- 【原创】开源Math.NET基础数学类库使用(02)矩阵向量计算
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 开源Math.NET基础数学类库使用(02)矩阵向量计算
原文:[原创]开源Math.NET基础数学类库使用(02)矩阵向量计算 开源Math.NET基础数学类库使用系列文章总目录: 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 ...
- Eigen库矩阵运算使用方法
Eigen库矩阵运算使用方法 Eigen这个类库,存的东西好多的,来看一下主要的几个头文件吧: ——Core 有关矩阵和数组的类,有基本的线性代数(包含 三角形 和 自伴乘积 相关),还有相应对数组的 ...
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- .NET Core 系列5 :使用 Nuget打包类库
NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...
- Xamarin+Prism开发详解一:PCL跨平台类库与Profile的关系
在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]中提到过以下错误,不知道大伙还记得不: 无法安装程序包"Microsoft.Identity.Client 1.0. ...
- C#创建dll类库
类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪 ...
- .Net Core上用于代替System.Drawing的类库
目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各 ...
- 拥抱.NET Core,如何开发一个跨平台类库 (1)
在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解“拥抱.NET Core,学习.NET Core的基础知识补遗”,以便接下来的阅读. 在本文将介绍如何配置类库项目支 ...
随机推荐
- 使用注解配置Spring框架自动代理通知
话不多说上代码 项目架构图及Lib包如下: 第二步创建业务类接口 package cn.happy.day01.entity; /** * 1.业务接口 * @author Happy * */ pu ...
- Redis中struct运用
c#操作缓存例如redis比较推荐ServiceStack 在redis中运用key-value存储数据,但是遇到结构体该如何处理,是类可通过get<type>(key)获得,那struc ...
- MySQL, 创建一个只读用户和一个所有权限用户
安装pasa需要配置mysql.基本知识学习一下 http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html MySQL 为关系型数据库 ...
- tornado中self.write() 写list
tornado源码中不支持在self.write()中直接传入list对象,源代码如下 def write(self, chunk): if self._finished: raise Runtime ...
- ie8的兼容
1.IE8以下不支持getElementsByClassName方法//解决IE8之类不支持getElementsByClassNameif (!document.getElementsByClass ...
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- mysql 操作用户权限
使用可以对mysql数据库用户表有操作权限的用户名登陆mysqlinsert into user(Host,User,Password) values('%','name','password');如 ...
- 记录并分享一下安卓通讯录导入到IPhone
仅仅记录一下我自己的步骤: 前提:我开始用的是诺基亚1202,黑白屏的功能机: 1.将卡放到安卓手机里面,用应用宝导出全部联系人为VCF后缀文件: 2.下载ITools,用它连接IPhone,导入到I ...
- MySQL中函数CONCAT及GROUP_CONCAT
一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+ ...
- Android开发环境建立
一.For windows 7(注:XP会有问题) 1.JDK-Java SE download: http://www.oracle.com/technetwork/java/javase/down ...