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

📄 aitken.cpp

📁 这是计算方法上的所有算法
💻 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 + -