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

📄 误差.cpp

📁 二维稳态导热问题。设材料物性均为常数
💻 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 + -