用MATLAB求极值.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用MATLAB求极值 灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。 例3.6.1 求的极值 解 首先建立函数关系: syms s y=(3*x^2+4*x+4)/( x^2+x+1); ↙ 然后求函数的驻点: dy=diff(y); ↙ xz=solve(dy) ↙ xz= [0] [-2] 知道函数有两个驻点x=0和x=-2,考察函数在驻点处二阶导数的正负情况: d2y=diff(y,2); ↙ z1=limit(d2y,x,0) ↙ z1= -2 z2=limit(d2y,x,-2) ↙ z2= 2/9 于是知在x=0处二阶导数的值为z=-2,小于0,函数有极大值;在x=-2处二阶导数的值为z=2/9,大于0,函数有极小值。如果需要,可顺便求出极值点处的函数值: y=limit(y,x,0) ↙ y= 4 y=limit(y,x,-2) ↙ y= 8/3 事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。 例3.6.2画出上例中函数的图形 解 syms x ↙ y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形 ezplot(y) ↙ 如何用MATLAB求函数的极值点和最大值 比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值? 求极值: syms x y y=x^3+x^2+1 diff(y) %求导 ans = 3*x^2 + 2*x solve(ans) %求导函数为零的点 ans = -2/3 0 极值有两点。 求最大值,既求-y的最小值: f=@(x)(-x^3-x^2-1) f = @(x)(-x^3-x^2-1) x=fminunc(f,-3,3)% 在-3;-3范围内找 Warning: Gradient must be provided for trust-region method; using line-search method instead. In fminunc at 354 Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x = -0.6667 f(x) ans = -1.1481 在规定范围内的最大值是1.1481 由于函数的局限性,求出的极值可能是局部最小(大)值。 求全局最值要用遗传算法。 如何用matlab求多元函数的极值 求 在 0xpi/2, 0y pi/2内的极大值当X=pi/3 y=pi/3 z有极大值 3/8*3^(1/2) %定义二元函数 clc;clear; syms x y; z=sin(x)*sin(y)*sin(x+y); ezsurf(x,y,z,[0,pi/2,0,pi/2]); dzx=diff(z,x) %求解驻点 dzy=diff(z,y)dzx = cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y) dzy=diff(z,y) dzy = sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y) [xx,yy]=solve(cos(x)*sin(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0,... sin(x)*cos(y)*sin(x+y)+sin(x)*sin(y)*cos(x+y)=0,x,y) %%%x,y可以不用? A=diff(z,x,2); %对于定义域内的驻点求解二阶偏导函数 B=diff(diff(z,x),y); C=diff(z,y,2); D=A*C-B^2; %判别极大值点 D1=subs(subs(D,x,xx(1)),y,yy(1)) A1=subs(subs(A,x,xx(1)),y,yy(1)) D2=subs(subs(D,x,xx(2)),y,yy(2)) A2=subs(subs(A,x,xx(2)),y,yy(2)) %极大值点和极大值 [xx(2) yy(2)] JDZ=subs(subs(z,x,xx(2)),y,yy(2)) 程序运行结果 ans = [ 1/3*pi, 1/3*pi] JDZ = 3/8*3^(1/2)matlab中的绘图函数很多,三维的有好几个呢,下面我给出两种绘制方法 1.使用ezmesh或者ezsurf这两个函数是

文档评论(0)

71z7it87 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档