1、 为给定精度,此时x k x* 即为满足要求的近似根。2) 二分法算法1 计算a,b区间的中点存放在变量x0中:x0 (a+b)/22 如果函数值f(x0)=0,则x0是f(x)=0的实根 x* ,输出根x0,终止3 如果函数值f(a)f(x0)eps, x=(a+b)/2; n=n+1; w=fx; IfAbswe1,Print“n=”,n,“ x=”,x,“ fx=”,w;Break; p=fa*w/N; Ifp0,b=x,a=x; Print“n=”,n, “ x=”,x/N, “ eps=”,b-a/N 注:本程序用于求非线性方程f(x)=0在区间a,b内的根,这里要求f(x)在区间a
2、,b连续,且f(a)f(b)0。程序执行后,先通过键盘输入函数f(x)和区间左端点a和右端点b及根的精度要求e,程序即可给出每次二分的次数和对应的点列x k,其中最后输出的结果即为所求的根。4)程序中变量说明x:存放初值x0和二分法中的x ka: 存放含根区间的左端点akb: 存放含根区间的右端点bke1:描述f(xk)=0的微小值,这里用|f(xk)|e1表示f(xk)=0n: 存放二分次数语句Ifp0,b=x,a=x中p的一定要是算出的数值,否则会出现错误。本程序中用“p=fa*w/N”而不用“p=fa*w”就是这个原因。补充Mathematica程序为:二、用Newton法求方程的根 N
3、ewton迭代法也称切线法,是非线性方程求根方法中收敛的最快的方法,其涉及的近似处理方法很有代表性。1) Newton 迭代法构造过程 将方程f(x)=0 线性化处理为近似方程,然后用近似方程获得求根的迭代计算公式。具体为:设xk是f(x) = 0的一个近似根,把f(x)在 xk 处作泰勒展开,得:取前两项来近似代替f(x)(称为f(x)的线性化),则得近似线性方程:设 f(xk ) 0 ,令其解为 xk+1 ,得:上式称为求f(x)=0根的Newton(牛顿)迭代格式。2) Newton迭代法算法1.输入初值x0、迭代精度eps、函数f(x) 和迭代最大次数Nmax2.For k=1,2,N
4、max1.1 如果|f(x0)|eps1,则输出“迭代失败”提示并终止1.2 x x0-f (x0)/f (x0)1.3 如果|x-x0|eps ,则输出根x ,终止1.4 x0 x2.输出迭代失败,终止。3) Newton迭代法程序Clearx,f,g;fx_=Inputfx=;gx_=Dfx,x;x0=Input输入迭代初值eps1=0.00000000001;nmax=500;eps=Input输入精度控制eps=Dou1=gx0; IfAbsu1/Neps1,Print迭代法失效 x=x0-fx0/u1; u1=Absx-x0/N; Printx=,x, n=,n, eps=,u1;
5、Ifu1eps,Print迭代失败 说明:本程序用于求非线性方程f(x)=0在x0附近的根。程序执行后,先通过键盘输入迭代函数f(x)和迭代初值x0及根的精度要求eps,程序即可给出每次迭代的次数和对应的点列x k,其中最后输出的结果即为所求的根。如果迭代超出500次还没有求出满足精度的根则输出迭代失败提示。4)程序中变量说明:x0:存放初值和迭代过程中的x kx: 存放迭代过程中的x k+1 nmax:存放迭代允许的最大次数u1:临时变量迭代最大次数可以修改为其他数字。三、题目解答(Absx(k)-x(k-1)0.001)题1。(x-2)*Expx=1,取x0=2.5.解:用Mathemat
6、ica程序直接迭代结果为:用牛顿不动点迭代法得到的结果为:题2。2*Cosx-3*x+12=0,取x0=4.题3。3*x2-Expx=0,取x0=-1. 用牛顿不动点迭代法得到的结果为:题4. 用Newton迭代法求方程xex 1=0的根,取x0=0.5,要求误差不超过10-3。用二分法求方程xex -1=0 在0,1内的根,要求误差不超过10-3。令f(x)= xex 1,因为f(0)=-10,所以可以用二分法。 执行二分法程序后,在输入的四个窗口中按提示分别输入x*Expx-1、0、1、0.001每次输入后用鼠标点击窗口的“OK”按扭,输出计算结果:a=0 b=1 f(x)=-1 + ex
7、xn=1 x=0.5 e=0.5n=2 x=0.75 e=0.25n=3 x=0.625 e=0.125n=4 x=0.5625 e=0.0625n=5 x=0.59375 e=0.03125n=6 x=0.578125 e=0.015625n=7 x=0.570312 e=0.0078125n=8 x=0.566406 e=0.00390625n=9 x=0.568359 e=0.00195312n=10 x=0.567383 e=0.000976562此结果说明共二分10次,求得的近似根为x=0.567383,其误差为e=0.000976562。执行Newton迭代法程序后在输入的三个窗口
8、中按提示分别输入x*Expx-1、0.5、0.001x=0.57102 n=1 eps=0.0710204x=0.567156 n=2 eps=0.00386487x=0.567143 n=3 eps=0.0000122782x=0.567143 n=4 eps=1.23477 10-10此结果说明迭代4次,求得误差为e=1.2347710-10的近似根,最后显示的近似根结果为x=0.567143,它只是部分表示,要看该近似根更详细的表示(如看其中前10位数)可以再键入命令 Nx,10后有近似根的为0.5671432904。题5。x3-x2-1=0,取x0=1.5.题6。Expx+10*x-2=0,取x0=0.实验小结与分析:观察几道题的计算结果,二分法的迭代次数比牛顿迭代法的多,收敛速度较慢。牛顿法一个主要优点:当初始点充分靠近x*时,牛顿法收敛很快。但是从程序中我们可以发现,牛顿迭代法要求导数,牛顿迭代法的计算量比二分法大。最后,我们发现牛顿法是一个局部方法,仅当初始点x0充分靠近x*时,方法才是有效的,如果初始点x0远离x*,牛顿法将收敛很慢,甚至不收敛。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1