埃特金迭代法求解方程的根
1.原理:
埃特金迭代法是利用兩次迭代結(jié)果通過計算得到下一個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);
利用這種方法求解方程的根會更快地得到結(jié)果。
2.C++語言實現(xiàn)方式:
設置一個x變量,通過循環(huán)得到每次迭代后的結(jié)果存入x作為下次迭代的值,實現(xiàn)若干次的迭代。當?shù)鷿M足輸入要求的精度或者達到迭代次數(shù)時退出循環(huán)并輸出迭代次數(shù)。
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<<\"輸入最大迭代次數(shù)\"< cout<<\"輸入誤差限\"< cout<<\"埃特金迭代次數(shù)為:\"< 4.程序運行結(jié)果: 預先在主程序中輸入迭代變換好的式子,根據(jù)提示依次輸入迭代初值,最大迭代次數(shù),誤差限。得到如下結(jié)果。 實驗小結(jié): 通過本次實驗,我學會了通過埃特金迭代法更快地得到方程的根的方法。實驗缺點在于本次程序中的迭代式要預先輸入并且滿足收斂的條件。還有迭代初值也必須經(jīng)過預先計算輸入。本程序只能實現(xiàn)簡單的功能,還有需要改進的方面。 因篇幅問題不能全部顯示,請點此查看更多更全內(nèi)容
Copyright ? 2019- 91gzw.com 版權(quán)所有 湘ICP備2023023988號-2
違法及侵權(quán)請聯(lián)系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市萬商天勤律師事務所王興未律師提供法律服務