《非线性方程的简单迭代法和Steffensen迭代法(共8页).doc》由会员分享,可在线阅读,更多相关《非线性方程的简单迭代法和Steffensen迭代法(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上数值计算方法实验报告实验名称:实验1 非线性方程的简单迭代法和Steffensen迭代法实验题目:分别用简单迭代法和Steffensen迭代法求方程 在 1, 2 内的一个实根. 实验目的:理解并掌握简单迭代法和Steffensen迭代法基础理论:简单迭代法和Steffensen迭代法1) .简单迭代法的原理:将一元非线性方程: 改写成等价方程: ,对此,从某个初始值x0开始,对应式 构成迭代公式 ,这样就可以确定序列 (k=0,1,2)。如果 有极限 ,由式 两边取极限可得 ,可知 为方程的近似解。2) Steffensen迭代法的原理: 通过把改进的Aitken方
2、法应用于根据不动点迭代所得到的线性收敛序列,将收敛速度加速到二阶。 实验环境:操作系统:Windows 7; 实验平台:Turbo C+ 实验过程:写出算法编写程序调试运行程序计算结果1) 简单迭代法的算法:Input:初始近似值x0,精度要求del,最大迭代次数NOutput:近似解x或失败信息1. n12. While nN do;3. xf(x0);4. if | x-x0|del then5. | return x;6. end7. nn+1;8. X0x;9. End10. return False;/ 超出最大迭代次数2) Steffensen迭代法的算法:Input : 区间端点
3、a,b;精度要求del;最大迭代次数NOutput:近似解或失败信息1. n12. while n N do;3. yf(x0);4. zf(y);5. xx0;6. If |x-x0|del then;7. | return x;8. end9. nn+1;10. x0x;11. end12. return False;实验结果 a,用简单迭代法计算的结果 结果约为1. b.用Steffensen迭代法计算的结果: 近似解为:1. 给出程序:1,简单迭代法的程序(C+)#include stdio.h#include math.h#define phi(x) 0.5*sqrt(10-x*x*
4、x)void main()int n=1,N; float x,x0,del; printf(x0=); scanf(%f,&x0); printf(ndel=:); scanf(%f,&del); printf(nN=); scanf(%d,&N); printf(nk x(k); printf(n %2d %f ,0,x0); while (nN) x=phi(x0); if(fabs(x-x0)del) printf(n n=近似解 = %f n,x); return; printf(n %2d %f ,n,x0); n=n+1; x0=x; printf(n n%d次迭代后未达到精度要
5、求.n,N);2,Steffensen迭代法的程序(C+)#include stdio.h#include math.h#define phi(x) 0.5*sqrt(10-x*x*x);void main()int n=1,N; float x,x0,del,y,z,a,b; printf(x0=); scanf(%f,&x0); printf(ndel=:); scanf(%f,&del); printf(na=); scanf(%f,&a); printf(nb=); scanf(%f,&b); printf(nN=); scanf(%d,&N); printf(nk x(k); pri
6、ntf(n %2d %f ,0,x0); while (nN) y=phi(x0); z=phi(y); x=x0-(y-x0)*(y-x0)/(z-2*y+x0); if(fabs(x-x0)del) printf(n n=近似解 = %f n,x); return; printf(n %2d %f ,n,x0); n=n+1; x0=x; printf(n n%d次迭代后未达到精度要求.n,N);结果分析:1.用简单迭代法和Steffensen迭代法都能求出非线性方程的近似解,且用简单迭代法和Steffensen迭代法求出的近似解基本一样。 2.用Steffensen迭代法来求解时迭代的次数少很多,可见Steffensen迭代法加速了收敛速度。专心-专注-专业