有限差分法 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中内容如下:

posted @ 2014-12-08 22:05  mt.luo  阅读(1339)  评论(0)    收藏  举报