C#使用mathnet学习笔记(一)
C#开发程序简单快捷,但对于科学运算支持不好,没有相应的科学计算库。
在C#中进行科学运算,我所知的方法有下面几个:
1. 在C#中调用matlab
matlab有强大的科学计算库,以及丰富的线性计算,积分插值等函数,C#中可以调用matlab的dll进行科学运算。
这种方法的最大问题在于计算效率很低。我这里仅利用简单的矩阵加减乘除测试过,其效率比利用C#代码编写的矩阵运算低100倍以上。
对于复杂的函数比如插值,滤波等我没测试过。
使用这种方法最大的好处就是不需要考虑科学计算算法的具体实现,只需关注自己要实现的部分即可,开发效率高。
关于C#调用matlab后面另说。
2. C#中调用python
python虽然本身没有科学计算库,但由于python自身的优势,目前已经有成熟的科学计算哭numerics,scipy等,已经基本可以实现matlab上常用的矩阵计算、符号计算、插值积分、绘图等大多数功能。且由于numerics库都是源于非常成熟的pascal科学计算库,因此计算效率非常高。
这种方法我还没研究过,好像需要使用Ironpython,其地址http://pytools.codeplex.com/
3. C#中使用mathnet库
Math.net计算库是专为.NET开发的开源科学计算库。包含了大部分矩阵运算、线性运算等功能。效率高,且可以在C#中直接使用。简单的矩阵运算,其效率可以达到C#代码的10倍以上。其开源代码地址:http://mathnetnumerics.codeplex.com/
vs2010扩展插件管理工具
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
在C#中使用mathnet库很简单,只需在工程引用中加入“MathNet.Numerics.dll”即可。