有限差分法 C++ 文件操作
有限差分法求解偏微分方程的一种数值解法,理论基础从略。
这里利用《计算机常用数值算法与程序》一书中给出的包含文件和算法,在求解大型稀疏矩阵的线性方程组AX=B;输出结果存储在dd[i]中,最后输出到result.txt中。目的在于应用,具体如何求解AX=B的C++算法过程没有给出。
利用有限差分法求解:
解:取步长h=0.1,节点x[n]=0.1n。n=(0,1,...,10);
则AX=B;
解得y即可。程序如下:
#include<iostream> #include<fstream> #include"LinearEquation.h" using namespace std; void main(void) { int i; double b[31]= { 0.1,0, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 2,-4.02,2, 0,0.1 }; double d[11]={0,0.1*0.02,0.2*0.02,0.3*0.02,0.4*0.02,0.5*0.02, 0.6*0.02,0.7*0.02,0.8*0.02,0.9*0.02,0.1}; valarray<double> bb(b,31); valarray<double> dd(d,11); if(LE_TridiagonalEquationGauss(bb,dd) > 0) { for(i=0;i<11;i++) cout<<"x("<<i<<")= "<<dd[i]<<endl; } cout<<endl; /*将线性方程的求解结果dd[i]输出到result.txt文件中*/ ofstream f; f.open("result.txt"); for(i=0;i<11;i++) f<<dd[i]<<"\n"; f.close(); }
输出结果:
生成得result.txt中内容如下: