数学实验第四章_第1页
数学实验第四章_第2页
数学实验第四章_第3页
数学实验第四章_第4页
数学实验第四章_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB数学实验第四章 函数和方程第四章 函数和方程4.1 预备知识:零点、极值和最小二乘法4.2 函数零点、极值和最小二乘拟合的MATLAB指令4.3 计算实验:迭代法4.4 建模实验:购房贷款的利率和最佳订货量 4.1 预备知识:零点非线性方程 f (x) = 0若对于数有f () = 0, 则称为方程的解或根,也称为函数f (x)的零点若f () = 0, f ()0 则称为单根。若有k 1, f () = f () = = f (k-1)() = 0,但f (k)()0 , 称为k重根非线性方程求解通常用数值方法求近似解,常见的有二分法、牛顿法等非线性方程(组)f (x) = 0,

2、 x=(x1, x2, , xn), f=(f1, f2, , fm) 4.1 预备知识:极值如果对于包含x=a的某个邻域 ,有 f(a)f(x) (f(a)f(x)对任意x成立, 则称a为f(x)的一个局部极小(大)值点。如果对任意xD,有f(a)f(x)(f(a)f(x))成立,则称a为f(x)在区域D上的一个全局极小(大)值点。设x为标量或向量,y=f(x)是xD上的标量值函数。4.1 预备知识:极值4.2 函数零点MATLAB指令多项式y=polyval(p,x) 求得多项式p在x处的值y,x可以是一个或多个点p3=conv(p1,p2) 返回多项式p1和p2的乘积p3,r=decon

3、v(p1,p2) p3返回多项式p1除以p2的商,r返回余项x=roots(p) 求得多项式p的所有复根.p=polyfit(x,y,k)用k次多项式拟合向量数据(x, y),返回多项式的降幂系数MATLAB中一个多项式用系数降幂排列向量来表示。例如:多项式x3+2x2-5,在MATLAB指令中表示为1 2 0 5。计算( x3+2x2-5) (x3+2x2-5),并验算。 p1=1 2 0 -5; p2=1 -1 2; p,r=deconv(p1,p2)p = 1 3r = 0 0 1 -11验算 conv(p,p2)+r例1.求多项式x3 + 2 x2 - 5的根 p=1 2 0 -5;

4、x=roots(p) , polyval(p,x) x = -1.6209 + 1.1826i -1.6209 - 1.1826i 1.2419 ans = 1.0e-014 * 0.1776 - 0.5773i 0.1776 + 0.5773i -0.4441 例2.用2次多项式拟合下列数据. x 0.1 0.2 0.15 0 -0.2 0.3 y 0.95 0.84 0.86 1.06 1.50 0.72 解:clear; x=0.1,0.2,0.15,0,-0.2,0.3;y=0.95,0.84,0.86,1.06,1.50,0.72;p=polyfit(x,y,2) % 得到二次拟合多

5、项式% 画拟合效果图xi=-0.2:0.01:0.3;yi=polyval(p,xi);plot(x,y,o,xi,yi); Fun=inline(funstr,var) 定义一个Inline 函数,其中funstr是函数的表达式, var是变量名Fun=Mfun 定义一个函数句柄,这里Mfun是函数的M文件表达方式Fun=(var)funstr 定义匿名函数,其中var是变量名, funstr是函数的表达式 4.2 非线性函数的MATLAB表达 x=fzero(Fun, x0) 返回一元函数Fun的一 个零点,其中Fun为函数句柄、 内嵌函数或字符串表达方式。 x0为标量时, 返回函数在x0

6、附近的零点; x0为向量a, b时, 返回在a,b中的零点(要求在a, b的 函数值异号) 4.2 函数零点MATLAB指令 x,f,h=fsolve(Fun, x0) x返回一元或 多元函数Fun在x0附近的一个零点, 其中x0为迭代初值; f返回Fun在x的函数值, 应该接近0; h返回值如果大于0, 说明计算结果可靠, 否则计算结果不可靠。 例3 求函数y=xsin(x2-x-1)在(-2, -0.1)内的 零点 fun=inline(x*sin(x2-x-1),x) fun=inline(x*sin(x2-x-1),x) fzero(fun,-2 -0.1) %由于对参数x0用区间情形

7、,fzero要求区间两端的函数值异号, 所以出现不能直接求解. %先作图观察一下fplot(fun,-2 0.1);grid on;%可见在x=-1.6和-0.6附近各有一个零点。我们分两个小区间分别求解.fzero(fun,-2,-1.2), fzero(fun,-1.2,-0.1) %可以正确求解fzero(fun,-1.6), fzero(fun,-0.6) %参数x0也可以用一个点x,f,h=fsolve(fun,-1.6)x,f,h=fsolve(fun,-0.6) %也可以用fsolve求解例4 求方程组在原点附近的解xx(1)y x(2)解:若用函数句柄方式,先写一个M函数%M函

8、数eg4_4fun.mfunction f=fun(x)f(1)=4*x(1)-x(2)+exp(x(1)/10-1;f(2)=-x(1)+4*x(2)+x(1)2/8;注意:x, y要合写成向量变量xx,f,h=fsolve(eg4_4fun,0 0) % 0,0为初始值, 需m函数eg4_4fun.m%得到解为x=0.2326, y=0.0565, 两个方程误差分别为0.0908*10-6和0.1798*10-6,h0说明结果是可靠的。%也可以用下列更便捷的Inline函数或匿名函数方式求解。fun=inline(4*x(1)-x(2)+exp(x(1)/10-1,-x(1)+4*x(2)

9、+x(1)2/8,x); %Inline函数x,f,h=fsolve(fun,0 0) fun=(x)4*x(1)-x(2)+exp(x(1)/10-1,-x(1)+4*x(2)+x(1)2/8; %匿名函数 x,f,h=fsolve(fun,0 0)注1 fzero只能求零点附近变号的根,试以x=1.1为初值,用fzero 和fsolve 求解 (x-1)2=0,看看发生了什么?注2 fzero 和 fsolve 只能求实根,试用它们解x2+x+1=0,看看发生了什么?min(y) 返回向量y的最小值max(y) 返回向量y的最大值x,f=fminbnd(fun,a,b) x返回一元函数y=

10、f(x)在a,b内的 局部极小值点,f返回局部极小值 fun为函数句柄或inline。x,f=fminsearch(fun,x0) x返回多元函数y=f(x)在初始值x0 附近的局部极小值点,f返回局部极小值. x, x0均为向量。4.2 函数极值MATLAB指令例 5 .求二元函数f(x,y)= 5-x4-y4+4xy在原点附近的极大值。解:问题等价于求 f(x,y)的极小值 max fmin(-f) x x(1), y x(2)注:在使用fsolve, fminsearch等指令时, 多变量必须合写成一个向量变量,如用x(1), x(2),。 fun=inline(x(1)4+x(2)4-

11、4*x(1)*x(2)-5); x,g=fminsearch(fun,0,0)4.2 最小二乘拟合MATLAB指令假设已知经验公式y=f(c,x)(c和x均可为向量), 要求根据一批有误差的数据(xi,yi), i=0,1,n, 确定参数c.这样的问题称为数据拟合。最小二乘法就是求c使得均方误差最小化 Q(c)=当f关于c是线性函数,问题转化为一个线性方程组求解,且其解存在唯一。 如果f关于c是非线性函数,问题转化为函数极值问题c= lsqnonlin (Fun,c0) 使用迭代法搜索最 优参数c. 其中Fun是以参数c(可以是向量) 为自变量的函数,表示误差向量 y-f(c,x)(x, y为

12、数据), c0为参数c的近似值,作为迭代初值c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x) 非线性最小二乘拟合考虑例4.2,若用lsqnonlin,先写fitf.mfunction e=fitf(c)x=0.1 0.2 0.15 0 -0.2 0.3;y=0.95 0.84 0.86 1.06 1.50 0.72;e=y-(c(1)*x.2+c(2)*x+c(3);然后执行:c=lsqnonlin(fitf,0,0,0)用lsqcurvefit更方便:fun2=inline(c(1)*x.2+c(2)*x+c(3),

13、c,x)x=0.1 0.2 0.15 0 -0.2 0.3;y=0.95 0.84 0.86 1.06 1.50 0.72;c=lsqcurvefit(fun2,0,0,0,x,y) 迭代法是从解的初始近似值x0(简称初值)开始,利用某种迭代格式x k+1 = g (x k ),求得一近似值序列x1, x2, , xk, xk+1, 逐步逼近于所求的解(称为不动点)。最常用的迭代法是牛顿迭代法,其迭代格式为1 迭代法4.3 计算实验:迭代法例6 求方程 x 2 - 3 x + e x = 2 的正根 (要求精度 = 10 -6)解 令f (x) = x 2 - 3 x + e x - 2, f

14、(0)=-1,当x 2, f (x) 0, f (x) 0即f (x)单调上升,所以根在0,2内。先用图解法找初值,再用牛顿法程序newton.m求解。M函数newton.mfunction x=newton(fname,dfname,x0,e)%用途:牛顿迭代法解非线性方程f(x)=0%格式:x=nanewton(fname,dfname,x0,e) x返回数值解,% fname和dfname分别表示f(x)及其导函数f(x),% x0为迭代初值,e为精度要求(默认1e-4)。 if nargine&kclear; fun=inline(25.2*(1+r)360-(1+r)360- 1)/

15、r*0.1436 ,r)r=fzero(fun,0.0198/12);R=12*r得年利率为5.53%. (你知道最新利率吗?)每次订货需要收取一定量的生产准备费。没用完的配件,要在仓库里储存一段时间,为此要付出储存费。若订货量很小,则需频繁定货,造成生产准备费的增加;反之,若订货量很大,定货周期延长而使生产准备费减少但会造成储存费的增加。如何确定合适的订货量?4.4 建模实验:最佳订货量解 先作一些必要的假设将问题简化1)汽车工厂对配件的日需求量是恒定的, 每日为r件;2)所订配件按时一次性交货, 生产准备费每次k1元;3)储存费按当日实际储存量计算, 储存费每日每件k2元;4)你的工厂不允

16、许缺货。设一次订货x件,则订货周期为 T= x/r, 第t天的储存量为 q(t)= x-r t, 0tT第t天的储存费为 k2q(t)一个周期的总储存费为一个周期总费用 C(x) = k1+k2x2/(2r)优化目标是使单位产品费用 f(x)=C(x)/x=k1/x+k2x/(2r) 达到最小由f(x)=0 ,即 -k1/x2+k2/(2r)=0 得(经济批量订货公式)线性迭代要么收敛于它的不动点,要么趋于无穷大。不收敛的非线性迭代可能会趋于无穷大,也可能趋于一个周期解,但也有可能在一个有限区域内杂乱无章地游荡,这类由确定性运动导致的貌似随机的现象称为混沌现象4.4 建模实验:混沌*昆虫数量的Logistic模型xk+1 = a x k (1 - x k), 0a4 xk表示第k代昆虫数量(1表示理想资源环境最大可能昆虫数量)。 a为资源系数0a4保证了xk在区间(0,1)上封闭。*平衡与稳定若g () = ,称为映射g(x)的不动点若对于不动点附近的初始值x0,迭代收敛于此不动点,称此不动点是稳定的当0a1, 在0,1内有一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论