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”即可。