📄 aitken.cpp
字号:
#include "math.h"
#include "stdio.h"
#include "conio.h"
#define MaxK 100 //最大迭代次数
#define EPS 0.5e-3//精度控制
double g(double x){ return x*x*x-1;}//迭代函数
//g传入迭代函数指针,x引用方式传入参数
//xk(n)=xk-(xk+1-xk)**2/(xk+2)-2xk+1+xk)(k=0,1,2,)
int aitken(double (*g)(double),double &x,double eps)
{ int k(0);
double m,n,lz;
m=g(x);n=g(m);
lz=x-(m-x)*(m-x)/(n-2*m+x);
printf("k xk yk zk xk+1\n");
printf("--------------------------------------------------------------------\n");
printf("%d \t%f \t%f \t%f \t%f\n",k++,x,m,n,lz);
while(1)
{ if(fabs(lz-x)<EPS)
{ x=lz;return k;}
else
{x=lz;
m=g(x);n=g(m);
lz=x-(m-x)*(m-x)/(n-2*m+x);
printf("%d \t%f \t%f \t%f \t%f\n",k++,x,m,n,lz);
}
}
}
void main()
{
double x=1.5;
int k;
k=aitken(g,x,EPS);
if(k==-1)
printf("迭代次数越界!\n");
else if(k==-2)
printf("除零错误!\n");
else
printf("\nk=%d,x=%f\n",k,x);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -