科学计算C++
用C++实现科学计算算法,得出所要的结果,有点类似刷OJ算法题的过程。一般OJ算法题主要是侧重逻辑。而科学计算则是根据数学公式出发,使用合适的科学计算算法,解决问题得到答案。
1) 具体的程序框架,通常是将问题的输入直接定义好(也可以从输入文件读取),然后执行C++程序进行计算,将计算好的结果用文件的形式输出,然后使用其他画图工具进行画图。
2) 在文件输入输出部分,会使用C++的文件处理模块。
3) C++ 缺少一些科学计算模块,需要自己造轮子,或者自己去找。
4) C++ 科学计算中最常用的数据结构是数组,但C++本身没有矩阵运算模块,要用到矩阵运算时,建议使用现代化的第三方库Eigen3( 这个上手会有些难度)
5) 当然,并行计算的编程技巧也需要学习。除此之外,掌握一些简单使用的科学计算算法。
C++科学计算的配置情况:
1.库的配置
Eigen:做线性代数相关的操作,由于Eigen调用MKL、BLAS等高性能线性代数库做底层,性能已经得到了足够的优化,而且又不用去学MKL、BLAS这些接口复杂的库,使用起来方便快捷。
GSL:这是一个大而全的数学库,GSL性能一般,线性代数方面的计算用更快的Eigen就好了,不必用GSL里面的。使用GSL主要是用来调用它的一些别人已经写好的数值积分、微分等方面的函数,就不用自己去写了。
注意的是,对于科研中经常碰到的逐元素操作,直接用C++写几层for循环就好了,不用调用gsl,eigen等第三方库。
fftw3:最快的傅里叶变换库,而且里面的傅里叶变换还有并行模式,速度非常快!

