《非线性方程求根优秀PPT.ppt》由会员分享,可在线阅读,更多相关《非线性方程求根优秀PPT.ppt(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、非线性方程求根第一页,本课件共有27页MATLAB命令例例1:解方程:解方程解:在解:在MATLAB里输入命令:里输入命令:X=solve(8*x9+17*x3-3*x=-1)可解出可解出9个解。个解。例例2:解方程:解方程解:解:X=solve(sin(x)=0),很可惜运行后只输出一个很可惜运行后只输出一个 根根x=0.缺点:用缺点:用solve命令不能求出周期函数所对应的全命令不能求出周期函数所对应的全 部根。部根。第二页,本课件共有27页例例3:解非线性方程组:解非线性方程组解:在解:在MATLAB命令窗口输入命令:命令窗口输入命令:E1=sym(xx-4=0);E2=sym(2*x*
2、y+x=1);x,y=solve(E1,E2)x1=double(x),y1=double(y)出来的结果为:出来的结果为:x=log(4)/lambertw(log(4)y=-1/2*(log(4)-lambertw(log(4)/log(4)第三页,本课件共有27页 x1=2 y1=-0.2500注:注:MATLAB系统只能做数值运算,并没有符系统只能做数值运算,并没有符号运算功能,符号运算工具箱(号运算功能,符号运算工具箱(symbolic math toolbox)则扩充了则扩充了MATLAB这方面的功能,它是这方面的功能,它是由由Maple的核心来完成。的核心来完成。第四页,本课件共
3、有27页例例4:解方程:解方程解:将方程化为解:将方程化为 ,在,在matlab窗口窗口 输入命令输入命令 fa=8,0,0,0,0,0,17,0,-3,1;xk=roots(fa)运行后得所有根。运行后得所有根。缺点:命令缺点:命令roots只能求只能求 为多项式时方程为多项式时方程 的根。的根。第五页,本课件共有27页一、图解法一、图解法 求方程求方程 的正根,的正根,设设分别画出分别画出 的图形,两条曲线的图形,两条曲线的交点即为原方程的交点即为原方程的根,从图中观的根,从图中观察,根大约为察,根大约为0.38。第六页,本课件共有27页二、二分法二、二分法 对于求解给定区间的根,二分法是
4、一种既简单对于求解给定区间的根,二分法是一种既简单又稳健的方法,可以与图解法结合使用。又稳健的方法,可以与图解法结合使用。第七页,本课件共有27页最终解最终解经过经过 n 步迭代后,步迭代后,区间长度变为:区间长度变为:即为可能的最大误差即为可能的最大误差第八页,本课件共有27页当给定容许误差当给定容许误差 时,所需最小迭代步数为:时,所需最小迭代步数为:用于二分法计算的函数用于二分法计算的函数bisec_n.function bisec_n(f_name,a,c)tolerance=0.000001;it_limit=30;fprintf(It.a b c f(a);fprintf(f(b)
5、f(c)n);it=0;Ya=feval(f_name,a);Yc=feval(f_name,c);if(Ya*Yc 0)fprintf(nn Stopped because f(a)f(c)0 n);第九页,本课件共有27页else while 1 it=it+1;b=(a+c)/2;Yb=feval(f_name,b);fprintf(%3.0f%10.6f,%10.6f,it,a,b);fprintf(%10.6f,%10.6f,%10.6f,%10.6fn,c,Ya,Yb,Yc);if(abs(c-a)it_limit)fprintf(Iteration limit exceeded.
6、n);break end if(Ya*Yb 0.000001 x1=(x0+1).(1/3);fprintf(%f ,x1);err=x1-x0;x0=x1;end迭代收敛。迭代收敛。第十四页,本课件共有27页x0=1.5;err=1;fprintf(%f ,x0);for i=1:3 x1=x0.3+1;fprintf(%f ,x1);err=x1-x0;x0=x1;end第十五页,本课件共有27页 收敛充分性定理收敛充分性定理收敛充分性定理收敛充分性定理 第十六页,本课件共有27页第十七页,本课件共有27页自动生成自动生成 的一个方法为:的一个方法为:则迭代格式变为:则迭代格式变为:其中其
7、中 为常数,可由如下方式确定:为常数,可由如下方式确定:因因 时收敛,时收敛,则则也即当也即当 时,迭代收敛。其中时,迭代收敛。其中 必须与必须与 同号,当同号,当 时,收敛速度最快。若在每时,收敛速度最快。若在每一步迭代中,令一步迭代中,令 ,得到,得到Newton迭代公式迭代公式。第十八页,本课件共有27页例例3 求方程求方程 在在 内的根。内的根。解答:令解答:令的近似值为:的近似值为:取取则迭代公式为:则迭代公式为:第十九页,本课件共有27页给出迭代法的一个M文件:function k,piancha,xdpiancha,xk=diedai(x0,k)%输入量-x0是初始值,k是迭代次
8、数x(1)=x0;for i=1:k x(i+1)=fun(x(i);%程序中调用的fun.m文件 piancha=abs(x(i+1)-x(i);xdpiancha=piancha/abs(x(i+1)+eps);i=i+1;xk=x(i);(i-1)piancha xdpiancha xkendif(piancha1)&(xdpiancha0.5)&(k3)disp(请用户注意:此迭代序列发散,请重新输入新的迭代公式)return;end第二十页,本课件共有27页if(piancha0.001)&(xdpiancha3)disp(祝贺你!此迭代序列收敛,且收敛速度较快)return;end
9、p=(i-1)piancha xdpiancha xk例:求方程 的在区间 根。解:建立M文件fun.m function y1=fun(x)y1=(10-x2)/2;在窗口输入 第二十一页,本课件共有27页 k,piancha,xdpiancha,xk=diedai(2,5)结果为:请用户注意:此迭代序列发散,请重新输入新的迭代公式若重新建立M文件:function y1=fun(x)y1=x-(x2+2*x-10)/(2*x+2)在窗口输入:k,piancha,xdpiancha,xk=diedai(2,5)运行结果为:祝贺你!此迭代序列收敛,且收敛速度较快第二十二页,本课件共有27页四、
10、四、NewtonNewton迭代法迭代法 设求解方程设求解方程 的一个根,的一个根,关于初值关于初值 的一阶的一阶Taylor展开为:展开为:将其看做将其看做 的近似,并令为的近似,并令为0,得到近似解:,得到近似解:重复操作,一般地:重复操作,一般地:第二十三页,本课件共有27页几何解释:几何解释:第二十四页,本课件共有27页 计算给定函数的一阶导数可能会很繁,可用差分计算给定函数的一阶导数可能会很繁,可用差分近似代替,如:近似代替,如:或或其中其中 h 取得很小取得很小 上两式分别为向前和向后差分近似。差分近似上两式分别为向前和向后差分近似。差分近似中的误差很小,对于牛顿迭代法的收敛性没有
11、很明中的误差很小,对于牛顿迭代法的收敛性没有很明显的影响,然而当根的附近有奇点时使用差分近似显的影响,然而当根的附近有奇点时使用差分近似要小心。要小心。第二十五页,本课件共有27页例例4 推导立方根的牛顿迭代公式,并求推导立方根的牛顿迭代公式,并求 的立方根。的立方根。解:问题等价于求解:问题等价于求的零点。的零点。Newton迭代法:迭代法:令令 ,迭代,迭代3次达到精确解。次达到精确解。n x0 51 5.42 5.3718343 5.371686第二十六页,本课件共有27页Newton迭代公式可由函数迭代公式可由函数Newt_n实现。实现。function x=Newt_n(f_name,x0)x=x0;xb=x-999;n=0;del_x=0.01;while abs(x-xb)0.0001 n=n+1;xb=x;if n300 break;end y=feval(f_name,x);y_driv=(feval(f_name,x+del_x)-y)/del_x;x=xb-y/y_driv;fprintf(n=%3.0f,x=%12.5e,y=%12.5e,n,x,y)fprintf(yd=%12.5e n,y_driv)endfprintf(n Final answer=%12.6en,x);第二十七页,本课件共有27页
限制150内