超松弛迭代法求导体槽点位 C语言版

直接上 代码

//电信1902班 胡彬
//2021.10.12

#include "stdio.h"
#include "math.h"

#define pi 3.1415
#define p 8      //正方形分割的一边点数

int main(void)
{
	int k = 0;//迭代次数
	double a = 2 / (sin(pi / (p - 1)) + 1), F1[p][p] = { 0 },F2_ = 0,error_1 = 0,error_2 = 0;//收敛因子
	
	for (int i = 0;i <= p-1;i++)//初始化赋值
		F1[p-1][i] = 100;

	while (1)//死循环直到达到精度要求
	{	
		for (int i = 1; i <= p-2; i++)
		{
			for (int j = 1; j <= p-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 = p-1; i >= 0; i--)//打印
	{
		for (int j = 0; j <= p-1; j++)
			printf("%-10lf ", F1[i][j]);
		printf("\n");
	}
	printf("%d\n",k);
	printf("%lf\n%lf\n",a,error_2);

	return 0;
}
上一篇:分类算法评价指标


下一篇:分类模型评估指标