资源描述:
《第4章--MATLAB-非线性方程(组)的求解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章非线性方程(组)的求解4.1二分法4.2简单迭代法4.3Newton法4.4抛物线法4.5非线性方程组的求解4.6实例解析本章目标:求f(x)=0的根4.1二分法原理:若fC[a,b],且f(a)·f(b)<0,则f在(a,b)上必有一根。abx1x2abx*bisect.m误差分析:第1步产生的有误差第k步产生的xk有误差对于给定的精度,可估计二分法所需的步数k:优点:①简单;②对f(x)要求不高(只要连续即可).缺点:①无法求复根及偶重根②收敛慢注:用二分法求根,最好先给出f(x)草图以确定根的大概位置。或用搜索
2、程序,将[a,b]分为若干小区间,对每一个满足f(ak)·f(bk)<0的区间调用二分法程序,可找出区间[a,b]内的多个根,且不必要求f(a)·f(b)<0。多用于为其它求根方法提供初始近似值。试位法为了加快二分法根的收敛速度,这里再介绍一种方法——试位法,试位法的一般执行过程见下面动画。ab(a+b)/2x*(a,f(a))(b,f(b))test_bit.mf(x)=0x=g(x)等价变换f(x)的根g(x)的不动点思路从一个初值x0出发,计算x1=g(x0),x2=g(x1),…,xk+1=g(xk),…若收敛,即存在
3、x*使得,且g连续,则由可知x*=g(x*),即x*是g的不动点,也就是f的根。逐次逼近:将隐式方程归结为显式计算4.2简单迭代法fixpt.mxyy=xxyy=xxyy=xxyy=xx*x*x*x*y=g(x)y=g(x)y=g(x)y=g(x)x0p0x1p1x0p0x1p1x0p0x1p1x0p0x1p1原理:将非线性方程线性化——Taylor展开取x0x*,将f(x)在x0做一阶Taylor展开:,在x0和x之间.将(x*x0)2看成高阶小量,则有:线性/*linear*/xyx*x0只要fC1,每一步
4、迭代都有f’(xk)0,而且,则x*就是f的根。切线法4.3Newton法newton.m牛顿下山法——Newton’sMethod局部微调:原理:若由xk得到的xk+1不能使
5、f
6、减小,则在xk和xk+1之间找一个更好的点,使得。xkxk+1注:=1时就是Newton’sMethod公式。当=1代入效果不好时,将减半计算。newton_down.m割线法Newton’sMethod一步要计算f和f’,相当于2个函数值,比较费时。现用差商(f的值)近似f’,可少算一个函数值。x0x1切线割线切线斜率割线斜率需要2个初
7、值x0和x1。收敛比Newton’sMethod慢,且对初值要求同样高。secant.m4.4抛物线法抛物线法是过曲线上的三点作一条抛物线,用抛物线与x轴的一个交点来作为f(x)=0与x轴交点。抛物线方法亦称为Muller方法。抛物线法的迭代公式为:其中,。parabola.m4.5非线性方程组的求解非线性方程组可以看作非线性方程的推广,而非线性方程就是非线性方程组的特例。非线性方程组的一般数学描述为:为叙述方便,记这样上述方程组即可写为:对于方程组的求解仍可以用牛顿法求解。newtong.m非线性方程的MATLAB函数求解1
8、、fzero()函数MATLAB优化工具箱提供的fzero()函数是专门用于求解单变量非线性方程根的函数,该函数的调用格式为:[x,fval,exitflag,output]=fzero(fun,x0,options,p1,p2,…)其中,fun表示函数表达式,x0是初始值,可以是标量或长度为2的向量,options是设置的过程参数,它主要包括Display和TolX两个选项,options选项可以通过函数optimset来设定,p1,p2,…是函数表达式中附加的参数,x是返回的根,fval是根x处的目标函数的值,exitfl
9、ag表明解存在的情况,正数表明解存在,负数表示解不存在(遇到复数、NaN或者无穷大等)。Output包含计算过程中的信息,它是一个结构体,output.algorithm是所选用的算法,output.funcCount是函数赋值次数,output.iterations是迭代次数。2、fsolve()函数MATLAB最优化工具箱提供的fsolve()函数是专门用来求解多元方程的实数根的函数。它的调用格式如下:[x,fval,exitflag,output,jacobian]=fsolve(fun,x0,options,p1,p2
10、,…)其中,大多数参数的意义同fzero()函数,返回的jacobian是函数在x处的Jacobi矩阵,