第8章 非线性方程和迭代

上传人:飞*** 文档编号:6447441 上传时间:2017-09-11 格式:DOC 页数:12 大小:163.50KB
返回 下载 相关 举报
第8章  非线性方程和迭代_第1页
第1页 / 共12页
第8章  非线性方程和迭代_第2页
第2页 / 共12页
第8章  非线性方程和迭代_第3页
第3页 / 共12页
第8章  非线性方程和迭代_第4页
第4页 / 共12页
第8章  非线性方程和迭代_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《第8章 非线性方程和迭代》由会员分享,可在线阅读,更多相关《第8章 非线性方程和迭代(12页珍藏版)》请在金锄头文库上搜索。

1、1第 8 章 非线性方程和迭代本章涉及非线性方程的求解、函数的迭代以及有关作图。通过对MATLAB 关于非线性方程(组 )求解的命令的学习及应用,进而说明计算机与数学结合的重要性。补充知 识,以 Logistic 模型为例介绍由非线性方程迭代所产生的混沌现象。8.1 引例 贷款的利率现实生活中,许多人会向银行贷款, (比如为了买房或者买车) ,然后,在若干年内分期还款。这必须按一定的贷款利率付给银行利息。假如,某人向银行贷款 25 万,30 年内每月按 1435 元还款。那么,这例贷款的年利率是多少?有人可能会这样计算年利率=(30120.1435-25)/30/25=3.55%但这是错误的,

2、因为你并不是等到 30 年后一次还款。数学模型 设 xk 为第 k 个月的欠款数,a 为月还款数,r 为月利率,R=12r 为年利率。我们得到如下迭代关系式xk+1=(1+r)xk a (8.1)那么xk=(1+r)xk-1-a=(1+r)2xk-2-(1+r)a-a=(1+r)kx0-a1+(1+r)+(1+r)k-1=(1+r)kx0-a(1+r)k-1/r根据 a=0 .1435, x0=25, x360=0 得到25(1+r)360 0.1435(1+r)360-1/r (8.2)这是一个关于 r 的高次代数方程。从中解出 r,年利率 R=12r。8.2 非线性方程(组)简介若方程是未

3、知量 x 的多项式,称为高次代数方程;若方程包含 x 的超越函数,称为超越方程。一元非线性方程的一般形式为f(x)=0 (8.3)若对于数 a 有 f(a)=0,则称 a 为方程(8.3)的解或根,也称为函数 f(x)的零点。方程的根可能是实数也可能是复数。相应地称为实根和复根。如果对于数 a 有 f(a)=0,f (a)0,则 a 称为单根,如果有 k1,f(a)=f (a)=f(k-1)(a)=0 但 f(k)(a)0,称为 k 重根,对于高次代数方程,其根的个数与其次数相同(包括重数) ,至于超越方程,其解可能是一个或几个甚至无穷多,也可能无解。常见的求解问题有如下两重要求:一种是要求定

4、出在给定范围内的某个解,而解的粗略位置事先从问题的物理背景或应用(作图等)其他方法得知;另一种是定出方程的全部解,或者给定区域内的所有解,而解的个数未知。除少数特殊的方程可以利用公式直接求解(如 4 次以下代数方程) ,2一般都没有解析求解方法,只能靠数值方法求得近似解。n 元非线性方程组的一般形式为fi(x1,x2,xn)=0, i=1,m (8.4)非线性方程组的解极少能用解析法求得。常用的数值方法是 Newton法、拟 Newton 法和最优化方法等。8.3 解方程和方程组的 MATLAB 命令roots 求多项式的根 fsolve 方程(组)数值解fzero 求一元函数实根solve

5、符号方程(组)求解8.3.1 多项式的根roots(p) 多项式 p 的所有复根。例 1: 求 x3+2x2-5 的根 解 roots(1 2 0 -5)ans = -1.6209 + 1.1826i-1.6209 - 1.1826i1.2419 8.3.2 一元函数零点fzero(f,x,tol)f 为字符串表示的函数或 M 函数名; x 为标量时,作为迭代初值;x为向量a,b时,返回 f 在a,b 中的一个零点,这时要求 x 在 a,b 两点异号;tol 为精度(缺损值 1e-4) 。例 2:求 y=sin(x)-0.1x 的零点。 解:由于-1 fzero(sin(x)-0.1*x,6)

6、ans =7.0682 fzero(sin(x)-0.1*x,2,6)ans =3.8523注:fzero 只能求零点附近变号的根,试用 fzero 求解(x-1) 2=0,看看发生了什么?8.3.3 非线性方程组求解fsolve 用法与 fzero 类似。例 3:解方程组30814212xxex解 写 M 函数 eg8_1fun.m:function y=fun(x)y(1)=4*x(1)-x(2)+exp(x(1)/10-1;y(2)=-x(1)+4*x(2)+x(1)2/8;然后在命令窗口用 x,y,f=fsolve(eg8_1fun,0,0)x =0.2326 0.0565y =1.0

7、e-006 *0.0908 0.1798f =1注:x 返回解向量,y 返回误差向量,f0 则解收敛。或直接用 x,y,f=fsolve(4*x(1)-x(2)+exp(x(1)/10-1,-x(1)+4*x(2)+x(1).2/8,0,0)x =0.2326 0.0565y =1.0e-006 *0.0908 0.1798f =1注意:fsolve 采用最小二乘优化法,稳定性比 fzero 好,但 fsolve 可能陷入局部极小。试用 fsolve 解 x2+x+1=0,看会发生什么?不要完全相信计算机。8.3.4 解析求解 solve例 4:解 ax2+bx+c=0解 solve(a*x2

8、+b*x+c,x)ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) x,y=solve(4*x-y+exp(x)/10=1,-x+4*y+y2/8=0,x,y) x =.23297580773115396971569236570313y =.58138324907069742242891748561961e-14注意所得的解与 fsolve 的不同。注意:虽然 solve 可用于求数值解,但速度很慢,且有很大的局限性,不提倡使用。8.4 数值解法:图解法和迭代法8.4.1 图解法利用作图的方法可以求一元或二元方程(组)的低精度解

9、,或者寻找迭代初值。例 5:解方程sinx=0.1x (8.5)解 显然,解在-10,10 内,函数 y=sinx-0.1x 的零点就是(8.5) 的解,出 y=sinx-0.1x 在-10,10范围内的图象(图 8.1),可看出根的大致位置。作图可使用如下 MATLAB 语句:close;fplot(sin(x)-0.1*x,-10,10);grid;可知8.5,7,3,0 附近各有一解。(在 figure 窗口用 matlab 的 zoom 命令演示)例 6:利用作图法解例 3 的方程组。解 clear;close; x1a=-1:0.01:1;x2a=-1:0.01:1;x1,x2=me

10、shgrid(x1a,x2a); f=4*x1-x2+exp(x1)/10-1;g=-x1+4*x2+x1.2/8; contour(x1,x2,f,0,0);%曲面与平面 x2=0 的交线5 hold on;contour(x1,x2,g,0,0);hold off; grid on可见在(0.25,0.05)附近有一个解。8.4.2 迭代法(牛顿法,切线法)求 f(x)=0 的解,从几何上说 xk+1 为用 f(x)在 xk 处的切线代替 f(x)求得的解,故也称为切线法。当初值 x0 与真解足够靠近,Newton 迭代法敛。单根快,重根慢。迭代格式:例 6: 求如下方程的正根(要求精度

11、e=10-6)x2-3x+ex=2解 令 f(x)=x2-3x+ex-2, f(0)=-12, f(x)0 , f(x)0, 即 f(x)单调上升,根在0,2内,先用图解法找初值。 fplot(x2-3*x+exp(x)-2,0,2);grid on;)6.8()(1kkf6再使用 zoom 按纽使得图像可用鼠标点击放大,以提高局部观察精度。唯一正根在 1 附近,取 x0=1,迭代格式:M 脚本 eg2_2.m2132kkkxeclear,e=1e-6;format long;x1=1x0=x1+2*2;%使 while 成立while(abs(x0-x1)e)x0=x1,x1=x0-(x02

12、-3*x0+exp(x0)-2)/(2*x0-3+exp(x0)end;format得 x1 = 1.446238685966438.5 贷款利率问题求解考虑方程(8.2). 常识上,r 应比当时活期存款月利率略高。用活期存款月利率 0.0198/12 作为迭代初值,用 fzero 求解。(使用 Matlab) r=fzero(25.2*(1+x)360-(1+x)360-1)/x*0.1436,0.0198/12), R=12*rr =0.0046R =0.05538.6 养老保险7某保险公司的一份材料指出:在每月交费 200 元至 60 岁开始领取养老金的约定下,男子若从 25 岁起投保,

13、届时月领养老金 2282 元;若 35 岁起投保,届时月领养老金 1056 元;若 45 岁起投保,届时月领养老金 420 元。我们来考察这三种情况所交保险非获得的利率。设投保人在投保后第 k 个月所交保险费急利息的累计总额为 Fk, 易得数学模型: MNqrFpk ,2,1,)1(0其中 p, q 分别为 60 岁前所交月保险费和 60 岁起所领月养老金的数目(单位:元) ,r 是所交保险金获得的月利率,N, M 分别是自投保起至停交保险费和停领养老金的时间(单位:月) 。显然 M 依赖于投保人的寿命,我们取为该公司养老计划所在地男性寿命的统计平均值 75 岁。以 25 岁起投保为例,则有p

14、=200, q=2282, N=420, M=600而初值 F0=0, 易得 MNkqprrNkNkk kkk ,2,1,)1()1( ,0, 在前一式中取 k=N 而在后一式中取 k=M 并注意到 FM=0, 这样只要消去 FN, 就导出关于 r 的方程:011pqrpqNMM记 x=1+r, 且将已知数据代入,则只须求解方程 4.218060x显然,1 是上述方程的的解,但我们要求的根显然略大于 1。利用 Newton法借助计算机编程或用数学软件能很方便的求出方程的实根,只是要注意选择合理的初始值,例如在 MATLAB 中,应用图解法求解:close;fplot(x600-12.41*x1

15、80+11.41,0.8,1.2) ;axis(0.95,1.01,-0.5,0.5);grid on;zoom on易得略大于 1 的根x=1.00485, 所以8r=0.00485对于 35 岁起和 45 岁起投保的情况,同样可得保险金所获得的月利率分别为 0.00461 和 0.00413。由于银行利率和投保人寿命等随机因素,保险费的计算是比较复杂的,但通过分析,我们对总体的利率还是可以得到大致的估计。8.7 习题1、作出 f(x)=xsin(1/x)在-0.1,0.1 内的图象,可见在 x=0 附近 f(x)=0 有无穷多个解,并设法求出它的解。2、 (月还款额)作为房产公司的代理人,你要迅速准确回答用户各方面的问题。现在有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号