您好,欢迎来到九壹网。
搜索
您的当前位置:首页数值分析与算法 埃特金迭代法求解方程的根

数值分析与算法 埃特金迭代法求解方程的根

来源:九壹网


埃特金迭代法求解方程的根

1.原理:

埃特金迭代法是利用两次迭代结果通过计算得到下一个x的值,这样加快了迭代式的收敛速度。

x’n+1=ψ(xn);

x’’n+1=ψ(x’n+1);

x n+1=x’’n+1-(x’’n+1-x’n+1)2/(x’’n+1-2x’n+1+xn);

利用这种方法求解方程的根会更快地得到结果。

2.C++语言实现方式:

设置一个x变量,通过循环得到每次迭代后的结果存入x作为下次迭代的值,实现若干次的迭代。当迭代满足输入要求的精度或者达到迭代次数时退出循环并输出迭代次数。

3.源程序如下:

#include\"math.h\"

#include

int js,n;

double eps,*x;

double f(double x);

int atkn(double* x,double eps,int js)

{

int flag,l;

double u,v,x0;

l=0;

x0=*x;

flag=0;

while((flag==0)&&(l!=js))

{

l=l+1;

u=f(x0);

v=f(u);

if(fabs(u-v){

x0=v;

flag=1;

}

else

x0=v-(v-u)*(v-u)/(v-2*u+x0);

cout<<\"迭代第\"<}

*x=x0;

l=js-l;

return(l);

}

double f(double x)//预先输入的迭代式方程

{

double s;

s=6-x*x;

return(s);

}

void main()

{

double x;

cout<<\"迭代式为:x(n+1)=6-x(n)^2\"<cout<<\"输入迭代初值\"<cin>>x;

cout<<\"输入最大迭代次数\"<cin>>js;

cout<<\"输入误差限\"<cin>>eps;

cout<<\"埃特金迭代次数为:\"<cout<cout<<\"迭代结果为:\"<<'\'<}

4.程序运行结果:

预先在主程序中输入迭代变换好的式子,根据提示依次输入迭代初值,最大迭代次数,误差限。得到如下结果。

实验小结:

通过本次实验,我学会了通过埃特金迭代法更快地得到方程的根的方法。实验缺点在于本次程序中的迭代式要预先输入并且满足收敛的条件。还有迭代初值也必须经过预先计算输入。本程序只能实现简单的功能,还有需要改进的方面。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务