隐式差分法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

隐式差分法程序及结果#include

int Fun(float T);

void main()

{

int a=1;

float t;

for (a;a==1;)

{

printf("输入时间步长:");

scanf("%f",&t);

a=Fun(t);

}

}

int Fun(float T)

{

int flag;

float a,b,c,h[11][11],f[10]={0},A[10]={0},B[10]={0},W[10]={0},Z[10]={0};

int i,k;

a=c=1000;

b=-(2000+1000/T);

for(k=0;k<11;k++)

{

h[0][k]=10;

h[10][k]=0;

}

for(i=1;i<11;i++)

{

h[i][0]=0;

}

for(k=0;k<10;k++)

{

for(i=1;i<9;i++)

{

f[i]=-(1000*h[i][k]/T);

}

f[1]=f[1]-a*h[0][k+1];

f[9]=f[9]-c*h[10][k+1];

W[1]=b;

A[1]=c/W[1];

for(i=2;i<10;i++)

{

B[i]=a;

W[i]=b-A[i-1]*B[i];

A[i]=c/W[i];

}

Z[1]=f[1]/W[1];

for(i=2;i<10;i++)

{

Z[i]=((f[i]-a*Z[i-1])/W[i]);

}

h[9][k+1]=Z[9];

for(i=1;i<9;i++)

{

h[9-i][k+1]=(Z[9-i]-A[9-i]*h[10-i][k+1]);

}

}

printf("当时间步长%.2f时:\n",T);

printf(" i,k \t i=0 \t i=1 \t i=2 \t i=3 \t i=4 \t i=5 \t i=6 \t i=7 \t i=8 \t i=9 \t i=10 \t");

k=0;

for(k=0;k<11;k++)

{

printf("k=%d\t",k);

for(i=0;i<11;i++)

{

printf("%.2f\t",h[i][k]);

}

}

printf("继续?(1/0)");

scanf ("%d",&flag);

return flag;

}

输入时间步长:0.1

当时间步长为0.10时:

i,k i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 k=0 10.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

k=2 10.00 1.55 0.19 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 k=3 10.00 2.15 0.34 0.05 0.01 0.00 0.00 0.00 0.00 0.00 0.00 k=4 10.00 2.67 0.51 0.08 0.01 0.00 0.00 0.00 0.00 0.00 0.00 k=5 10.00 3.12 0.70 0.13 0.02 0.00 0.00 0.00 0.00 0.00 0.00 k=6 10.00 3.50 0.89 0.18 0.03 0.01 0.00 0.00 0.00 0.00 0.00 k=7 10.00 3.84 1.08 0.25 0.05 0.01 0.00 0.00 0.00 0.00 0.00 k=8 10.00 4.14 1.27 0.32 0.07 0.01 0.00 0.00 0.00 0.00 0.00 k=9 10.00 4.41 1.46 0.39 0.09 0.02 0.00 0.00 0.00 0.00 0.00 k=10 10.00 4.64 1.64 0.48 0.12 0.03 0.01 0.00 0.00 0.00 0.00 继续?(1/0)1

输入时间步长:0.2

当时间步长为0.20时:

i,k i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 k=0 10.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 k=1 10.00 1.46 0.21 0.03 0.00 0.00 0.00 0.00 0.00 0.00 0.00 k=2 10.00 2.55 0.53 0.10 0.02 0.00 0.00 0.00 0.00 0.00 0.00 k=3 10.00 3.37 0.89 0.21 0.04 0.01 0.00 0.00 0.00 0.00 0.00 k=4 10.00 4.02 1.26 0.34 0.08 0.02 0.00 0.00 0.00 0.00 0.00 k=5 10.00 4.53 1.62 0.49 0.13 0.03 0.01 0.00 0.00 0.00 0.00 k=6 10.00 4.94 1.95 0.66 0.20 0.05 0.01 0.00 0.00 0.00 0.00 k=7 10.00 5.28 2.27 0.83 0.27 0.08 0.02 0.01 0.00 0.00 0.00 k=8 10.00 5.57 2.56 1.01 0.35 0.11 0.03 0.01 0.00 0.00 0.00 k=9 10.00 5.81 2.83 1.19 0.44 0.15 0.05 0.01 0.00 0.00 0.00 k=10 10.00 6.02 3.08 1.37 0.54 0.19 0.06 0.02 0.01 0.00 0.00 继续?(1/0)1

输入时间步长:0.5

当时间步长为0.50时:

i,k i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10 k=0 10.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 k=1 10.00 2.68 0.72 0.19 0.05 0.01 0.00 0.00 0.00 0.00 0.00 k=2 10.00 4.23 1.55 0.53 0.17 0.05 0.02 0.00 0.00 0.00 0.00 k=3 10.00 5.19 2.30 0.93 0.35 0.12 0.04 0.01 0.00 0.00 0.00 k=4 10.00 5.83 2.94 1.34 0.57 0.22 0.09 0.03 0.01 0.00 0.00 k=5 10.00 6.28 3.48 1.74 0.81 0.35 0.14 0.06 0.02 0.01 0.00 k=6 10.00 6.62 3.92 2.11 1.05 0.49 0.22 0.09 0.04 0.01 0.00 k=7 10.00 6.89 4.30 2.46 1.30 0.65 0.31 0.14 0.06 0.01 0.00 k=8 10.00 7.10 4.62 2.77 1.55 0.81 0.40 0.19 0.08 0.02 0.00 k=9 10.00 7.27 4.89 3.05 1.78 0.98 0.51 0.25 0.11 0.03 0.00 k=10 10.00 7.42 5.13 3.31 2.00 1.15 0.62 0.31 0.14 0.04 0.00 继续?(1/0)1

请输入时间步长:0.52

当时间步长为0.52时:

i,k i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 i=10

相关文档
最新文档