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

📄 埃特金.cpp

📁 这是计算方法上的所有算法
💻 CPP
字号:
#include<math.h>
#include<stdio.h>
#define MaxK 100
#define EPS 0.5e-3
double g(double x)
{
	return x*x*x-1;
}
int aitken(double &x,double eps)
{
	double y,z,x0;
	double x1=x;
	int flag=0;//标记迭代次数
	printf("x         xk         yk              zk               xk+1\n");
	printf("-------------------------------------------------------------\n");
	do{
		x0=x1;
	    y=g(x0);
		z=g(y);
		if(z-2*y+x==0)
		{flag=-2;break;//在break之后,以下的语句并不执行
		}
		else x1=x0-(y-x0)*(y-x0)/(z-2*y+x0);
		printf("%d      %f      %f      %f       %f\n",flag,x0,y,z,x1);
		flag++;
		if(flag>MaxK)
		{
			flag=-1;break;
		}
	}while (fabs(x0-x1)>=eps);//精度控制
	x=x1;
		return flag;//如果flag的值为负数时,迭代不成功
}
void main()
{
	double x=1.5;
	int k;
	k=aitken(x,EPS);
	if(k==-1)
		printf("迭代次数越界!\n");
	else if(k==-2)
		printf("除零错误!\n");
	else printf("\n经k=%d迭代,所得方程根为:x=%f\n",k,x);
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -