C#数学计算包 Math.NET
2017-12-18

1.Math.NET基本介绍

Math.NET官方网站:http://www.mathdotnet.com/

Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂微分,解方程等等功能。这个项目大部分采用的是MIT/X11开源软件协议。目前该组件主要分为以下几个子项目,该组件同时也支持Mono,最新版本通过.NET标准库支持的平台也非常广泛。 


2.Math.NET Numerics

  Math.NET Numerics是核心功能是数值计算。主要是提供日常科学工程计算相关的算法,包括一些特殊函数,线性代数,概率论,随机函数,微积分,插值,最优化等相关计算功能。它是在 Math.NET Iridium和dnAnalytics 的基础上合并而来。该组件里面包括了一个读取Matlab数据格式的功能,我们将在后几篇博客中加以介绍。其主要特征有:http://en.wikipedia.org/wiki/Math.NET_Numerics

   支持概率分布:离散型、连续型和多元

  伪随机数生成器 

  支持稀疏矩阵和向量的复杂的线性代数解决方法 

  LU, QR, SVD, EVD,Cholesky分解 

  矩阵读写功能,支持Matlab和一些分开的文件 

  复数计算 

  特殊函数: Gamma, Beta, Erf,Bessel,Struve 等等 

  插值,线性回归,曲线拟合 

  数值积分,方程求解 

  描述性统计、统计直方图,皮尔森相关系数 

  马尔可夫链蒙特卡罗抽样 

  基本的财务统计数据 

  傅里叶变换(FFT) 

  重载的数学操作符来简化复杂的表达式 

  Mono平台支持,可选支持英特尔数学内核库(Microsoft Windows和Linux) 

  可选更多的的F#扩展用法 

  该子项目的主页:https://github.com/mathnet/mathnet-numerics

3.Math.NET Symbolics

  Math.NET Symbolics是一个Math.NET下一个基础的代数计算项目,该项目的最终目的并不是要成为如Maple,Mathematica那样一个完善的计算机代数计算系统。以前在做Matlab.NET混合编程的时候,经常就有人问为什么混合编程的符号计算用不了,其实就是用不了,官方不支持,那怎么办,其实简单的功能,就可以使用这个项目来完成。详细的使用可以参考项目主页的帮助文档,接下来的文章也会加以介绍。

  项目主页:https://github.com/mathnet/mathnet-symbolics

4.Math.NET Filtering

  Math.NET Filtering是一个数字信号处理工具箱,提供了数字滤波器的基础功能,以及滤波器应用到数字信号处理和数据流转换的相关功能。

  项目主页:https://github.com/mathnet/mathnet-filtering

5.Math.NET Spatial

  是Math.NET下的一个几何处理工具箱。

  项目主页:https://github.com/mathnet/mathnet-spatial

6.其他

  Math.NET在发展过程中的一些其他项目如Math.NET Iridium ,Math.NET Classic, Math.NET Linq Algebra, Math.NET Yttrium等都是历史(有一些是实验性的),现在都已经合并到上述几个子项目中。

  1.开源Math.NET基础数学类库使用(01)综合介绍

  2.开源Math.NET基础数学类库使用(02)矩阵向量计算

  3.开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式

  4.开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式

  5.开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式

  6.开源Math.NET基础数学类库使用(06)直接求解线性方程组

  7.开源Math.NET基础数学类库使用(07)常用的数学物理常数

  8.开源Math.NET基础数学类库使用(08)C#进行数值积分

  9.开源Math.NET基础数学类库使用(09)相关数论函数使用

10.开源Math.NET基础数学类库使用(10)C#进行基本数据统计

11.开源Math.NET基础数学类库使用(11)C#计算相关系数

12.开源Math.NET基础数学类库使用(12)C#随机数扩展方法

13.开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

14.开源Math.NET基础数学类库使用(14)C#生成安全的随机数

15.开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

16.开源Math.NET基础数学类库使用(16)C#计算矩阵秩

17.开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

18. Linear Regression with Math.NET Numerics