C#開發(fā)程序簡單快捷,,但對于科學運算支持不好,沒有相應的科學計算庫,。
在C#中進行科學運算,,我所知的方法有下面幾個:
1. 在C#中調用matlab
matlab有強大的科學計算庫,以及豐富的線性計算,,積分插值等函數(shù),,C#中可以調用matlab的dll進行科學運算。
這種方法的最大問題在于計算效率很低,。我這里僅利用簡單的矩陣加減乘除測試過,,其效率比利用C#代碼編寫的矩陣運算低100倍以上。
對于復雜的函數(shù)比如插值,,濾波等我沒測試過,。
使用這種方法最大的好處就是不需要考慮科學計算算法的具體實現(xiàn),只需關注自己要實現(xiàn)的部分即可,,開發(fā)效率高,。
關于C#調用matlab后面另說。
2. C#中調用python
python雖然本身沒有科學計算庫,,但由于python自身的優(yōu)勢,,目前已經(jīng)有成熟的科學計算哭numerics,scipy等,,已經(jīng)基本可以實現(xiàn)matlab上常用的矩陣計算,、符號計算、插值積分,、繪圖等大多數(shù)功能,。且由于numerics庫都是源于非常成熟的pascal科學計算庫,,因此計算效率非常高。
這種方法我還沒研究過,,好像需要使用Ironpython,,其地址http://pytools.codeplex.com/
3. C#中使用mathnet庫
Math.net計算庫是專為.NET開發(fā)的開源科學計算庫。包含了大部分矩陣運算,、線性運算等功能,。效率高,且可以在C#中直接使用,。簡單的矩陣運算,,其效率可以達到C#代碼的10倍以上。其開源代碼地址:http://mathnetnumerics.codeplex.com/
vs2010擴展插件管理工具
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
在C#中使用mathnet庫很簡單,,只需在工程引用中加入“MathNet.Numerics.dll”即可,。