📄 gaosisaideer.cpp
字号:
#include <stdio.h>
#include <math.h>
#define M 9
#define N 19
#define K 500 //最大迭代次数
#define E 1e-5 //最大误差范围
double max(double f,double g)
{
if (f>g) return f;
else return g;
}
void main()
{
double t[M][N];
double err=0, temp;//t表示节点温度,err表示最大误差
int i,j,k;
//赋初值
for (j=0; j<N; j++)
{
t[0][j]=200.0; t[M-1][j]=50.0;
for (i=1; i<M-1; i++)
t[i][j]=50.0;
}
//处理
for (k=0; k<K; k++)
{
err = 0;
for (i=1; i<M-1; i++)
{
temp = (2*t[i][1] + t[i-1][0] + t[i+1][0])/4.0;
err = max(err ,fabs(t[i][0] - temp));
t[i][0] = temp;
for (j=1 ; j<N-M+i ; j++)
{
temp = (t[i-1][j] + t[i+1][j] + t[i][j-1] + t[i][j+1])/4.0;
err = max(err ,fabs(t[i][j] - temp));
t[i][j] = temp;
}
temp = (t[i][N-M+i-1]+t[i+1][N-M+i])/2;
err = max(err ,fabs(t[i][N-M+i] - temp));
t[i][N-M+i] = temp;
}
if ( err > E) continue;
else break;
}
for (i=0 ; i<M ; i++)
{
for (j=0 ; j<N-M+i ; j++)
{
printf("%f ",t[i][j]);
}
printf("\n");
}
printf("k = %d,err = %e\n", k,err);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -