⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d16r2.cpp

📁 用C语言编写的有限差分法程序
💻 CPP
字号:
#include<math.h>
#include<iomanip.h>
#include<iostream.h>
#include<process.h>

void main()
{
    //program d16r2
    //driver for routine ADI
	int jmax,i,j,mid1,k;
	double pi,aaa,alpha,beta,alim,eps;
    double a[12][12],b[12][12],c[12][12],d[12][12];
    double e[12][12],f[12][12],u[12][12],g[12][12];
	jmax = 11;
    pi = 3.1415926;

    for (i=1; i<=jmax; i++)
	{
        for (j = 1; j<=jmax; j++)
		{
            a[i][j] = -1.0;
            b[i][j] = 2.0;
            c[i][j] = -1.0;
            d[i][j] = -1.0;
            e[i][j] = 2.0;
            f[i][j] = -1.0;
            g[i][j] = 0.0;
            u[i][j] = 0.0;
        }
    }
    mid1 = jmax / 2 + 1;
    g[mid1][mid1] = 2.0;
    alpha = 2.0 * (1.0 - cos(pi / jmax));
    beta = 2.0 * (1.0 - cos((jmax - 1) * pi / jmax));
    alim = log(4.0 * jmax / pi);
    k = 0;
    do
        k = k + 1;
    while (pow(2 , k) < alim);
    eps = 0.0001;
    adi(a,b,c,d,e,f,g,u,jmax,k,alpha,beta,eps);
    cout<<endl;
    cout<<"adi Solution:"<<endl;
	cout<<endl;
    cout<<setprecision(2)<<setiosflags(ios::fixed);
    for (i = 1; i<=jmax; i++)
	{
        for (j = 1; j<=jmax; j++)
            cout<<setw(7)<<u[i][j];
        cout<<endl;
	}
    cout<<endl;
    cout <<"Test that sulotion satisfies Difference Eqns:"<<endl;
    cout<<endl;
    for (i = 2; i<=jmax - 1; i++)
	{
		for (j = 2; j<=jmax-1 ; j++)
		{
			aaa =  -4.0 * u[i][j] + u[i + 1][j];
			g[i][j] = aaa + u[i-1][j] + u[i][j-1] + u[i][j + 1];
		}
		for (j = 2; j<=jmax-1 ; j++)
			cout<<setw(8)<<g[i][j];
		cout<<endl;
    }
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -