📄 误差.cpp
字号:
#include <stdio.h>
#include <iostream>
#include <math.h>
#define NM 500
void main()
{
FILE *outfile1,*outfile2,*outfile3,*outfile4;
int i=0,j=0,k=0,I=0,J=0,K=0,N;
float t1[NM],t2[NM],t4[NM];
float e,e1=0.0,e2=0.0,dx;
outfile1=fopen("分析解.txt","r");
if(outfile1==NULL)
{
printf("打不开数据文件:分析解.txt!");
exit(1);
}
outfile2=fopen("逐线迭代.txt","r");
if(outfile2==NULL)
{
printf("打不开数据文件:逐线迭代.txt!");
exit(1);
}
outfile4=fopen("Seidel迭代.txt","r");
if(outfile4==NULL)
{
printf("打不开数据文件:Seidel迭代.txt!");
exit(1);
}
outfile3=fopen("误差.txt","w");
if(outfile3==NULL)
{
printf("打不开数据文件:误差.txt!");
exit(1);
}
fseek(outfile1,15L,0);
fseek(outfile2,28L,0);
fseek(outfile4,28L,0);
while(!feof(outfile1))
{
fscanf(outfile1,"%f ",&t1[j++]);
J=j;
}
while(!feof(outfile2))
{
fscanf(outfile2,"%f ",&t2[i++]);
I=i;
}
while(!feof(outfile4))
{
fscanf(outfile4,"%f ",&t4[k++]);
K=k;
}
for(i=0;i<I;i++)
{
e=fabs(t1[i]-t2[i]);
if(e>e1) e1=e;
}
for(i=0;i<K;i++)
{
e=fabs(t1[i]-t4[i]);
if(e>e2) e2=e;
}
N=sqrt(I);
dx=1.0/(N-1);
for(i=0;i<N;i++)
fprintf(outfile3,"%f ",i*dx);
fprintf(outfile3,"\n步长=%f\ny=0.5处温度分布为:\n(1)逐线迭代\n",dx);
for(i=N*(N-1)/2;i<(N+1)*N/2;i++)
fprintf(outfile3,"%f ",t2[i]);
fprintf(outfile3,"\n(2)Seidel迭代\n");
for(i=N*(N-1)/2;i<(N+1)*N/2;i++)
fprintf(outfile3,"%f ",t4[i]);
fprintf(outfile3,"\n(3)分析解\n");
for(i=N*(N-1)/2;i<(N+1)*N/2;i++)
fprintf(outfile3,"%f ",t1[i]);
fprintf(outfile3,"\nx=0.3处温度分布为:\n(1)逐线迭代\n");
for(i=0.3*(N-1);i<=N*(N-1)+0.3*(N-1);i=i+N)
fprintf(outfile3,"%f ",t2[i]);
fprintf(outfile3,"\n(2)Seidel迭代\n");
for(i=0.3*(N-1);i<=N*(N-1)+0.3*(N-1);i=i+N)
fprintf(outfile3,"%f ",t4[i]);
fprintf(outfile3,"\n(3)分析解\n");
for(i=0.3*(N-1);i<=N*(N-1)+0.3*(N-1);i=i+N)
fprintf(outfile3,"%f ",t1[i]);
fprintf(outfile3,"\nx=0.7处温度分布为:\n(1)逐线迭代\n");
for(i=0.7*(N-1);i<=N*(N-1)+0.7*(N-1);i=i+N)
fprintf(outfile3,"%f ",t2[i]);
fprintf(outfile3,"\n(2)Seidel迭代\n");
for(i=0.7*(N-1);i<=N*(N-1)+0.7*(N-1);i=i+N)
fprintf(outfile3,"%f ",t4[i]);
fprintf(outfile3,"\n(3)分析解\n");
for(i=0.7*(N-1);i<=N*(N-1)+0.7*(N-1);i=i+N)
fprintf(outfile3,"%f ",t1[i]);
fprintf(outfile3,"\n逐线迭代误差=%f\nSeidel迭代误差=%f",e1,e2);
fclose(outfile1);
fclose(outfile2);
fclose(outfile3);
fclose(outfile4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -