直接上 代码。
//电信1902班 胡彬
//2021.10.12
#include "stdio.h"
#include "math.h"
#define pi 3.1415
#define R 8 //行数
#define C 4 //列数
int main(void)
{
int k = 0;//迭代次数
double a = 2 / (sin(pi / (R - 1)) + 1), F1[R][R] = { 0 },F2_ = 0,error_1 = 0,error_2 = 0;//收敛因子
for (int i = 0;i <= C-1;i++)//初始化赋值
F1[R-1][i] = 100;
while (1)//死循环直到达到精度要求
{
for (int i = 1; i <= R-2; i++)
{
for (int j = 1; j <= C-2; j++)
{
F2_ = F1[i][j] + a * (((F1[i - 1][j] + F1[i][j - 1] + F1[i + 1][j] + F1[i][j + 1]) / 4) - F1[i][j]);
error_1 = fabs(F2_ - F1[i][j]);
F1[i][j] = F2_;
if (error_1 > error_2)
error_2 = error_1;
}
}
k++;
if (error_2 < 0.001)
break;
else
error_2 = 0;
}
for (int i = R-1; i >= 0; i--)//打印
{
for (int j = 0; j <= C-1; j++)
printf("%-10lf ", F1[i][j]);
printf("n");
}
printf("%dn",k);
printf("%lfn%lfn",a,error_2);
return 0;
}



