隐式差分法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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