最新教学PPTMATLAB程序设计.ppt

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最新教学PPTMATLAB程序设计

程序分析:humps函数是MATLAB提供的M文件,保存为humps.m文件;@humps表示humps函数的句柄,humps的函数最小值曲线如图5.10所示,最小值为图中的圆点(0.6370,11.2528),误差小于10?4。 2.fminsearch函数 fminsearch函数用于求多变量无束缚非线性最小值,采用Nelder-Mead单纯形算法求解多变量函数的最小值。 语法: x=fminsearch(h_fun,x0) x=fminsearch('funname',x0) 【例5.23】 求著名的Banana测试函数f(x,y)=100(y?x2)2+(1?x)2的最小值,它的理论最小值是x=1,y=1。该测试函数有一片浅谷,很多算法都难以逾越。 >>fn=inline('100*(x(2) ?x(1)^2)^2+(1?x(1))^2','x') %用inline产生内联函数,x和y用二元数组表示 fn= Inline function: fn(x)=100*(x(2) ?x(1)^2)^2+(1?x(1))^2 >>y=fminsearch(fn,[0.5, ?1]) %从(0.5,?1)为初始值开始搜索求最小值 y= 1.0000 1.0000 fzero函数可以寻找一维函数的零点,即求f(x)=0的根。 语法: x=fzero(h_fun,x0,tol,trace) x=fzero('funname',x0,tol,trace) 【例5.24】 求解humps函数的过零点,humps函数的过零点用圆点表示,如图5.11所示。 >>xzero=fzero(@humps,1) %求在1附近的零点 xzero= 1.2995 >>xzero=fzero(@humps,[0.5,1.5]) %求在0.5~1.5范围内的零点 xzero= 1.2995 >>xzero=fzero(@humps,[0.5,1]) %求在0.5~1范围内的零点 ???Errorusing==>fzero The function valuesat the interval end points must differin sign. humps函数的过零点 语法: s=quad(h_fun,x1,x2,tol,trace,p1,p2, …) s=quad('funname',x1,x2,tol,trace,p1,p2, …) s=quad8(h_fun,x1,x2,tol,trace,p1,p2, …) s=quad8('funname',x1,x2,tol,trace,p1,p2, …) 【例5.25】 计算y=humps(x)曲线下面的面积。 >>x=0:0.01:1; >>y=humps(x); >>area=trapz(x,y) %用梯形计算积分 area= 29.8571 >>area1=quad(@humps,0,1) %用quad计算积分 area1= 29.8583 >>area2=quad8(@humps,0,1) %用quad8计算积分 area2= 29.8583 MATLAB提供了ode23、ode45和ode113等多个函数求解微分方程的数值解。以下介绍低维方法、高维方法和变维方法解一阶常微方程组。 语法: [t,y]=ode45(h_fun,tspan,y0,options,p1,p2…) [t,y]=ode45('funname',tspan,y0,options,p1,p2…) 【例5.26】 解经典的范德波尔(Van derPol)微分方程: (1)必须把高阶微分方程式变换成为一阶微分方程组。 令y1=x,y2=dx/dt,则将二阶微分方程变为一阶微分方程组: (2)编写1个函数vdpol.m文件,设定?=2,该函数返回上述导数值。输出结果由1个列向量yprime给出。y1和y2合并写成列向量y。 函数M文件vdpol.m: %范德波尔方程 functiony prime=vdpol(t,y) yprime=[y(2);2*(1?y(1)^2)*y(2) ?y(1)] (3)给定当前时间及y1和y2的初始值,解微分方程。 >>tspan=[0,30]; %起始值0和终止值30 >>y0=[1;0]; %初始值 >>[t,y]=ode45(@vdpol,tspan,y0); %解微分方程 >>y1=y(:,1); >>y2=y(:,2); >>figure(1) >>plot(t,y1,':b',t,y2,'?r') %画微分方程解 >>figure(2) >>plot(y1,y2) %画相平面图 设y1为横坐标

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档