用MATLAB求极值.doc

用MATLAB求极值.doc

ID:25746098

大小:190.50 KB

页数:12页

时间:2018-11-22

用MATLAB求极值.doc_第1页
用MATLAB求极值.doc_第2页
用MATLAB求极值.doc_第3页
用MATLAB求极值.doc_第4页
用MATLAB求极值.doc_第5页
资源描述:

《用MATLAB求极值.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。例3.6.1求的极值解首先建立函数关系:symssy=(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=-2z2=limit(d2y,x,-2)↙z2=2/9于是知在x=0处二阶导数的值为z=-2,小于0,函数有极大值;在x=-2处二阶导

2、数的值为z=2/9,大于0,函数有极小值。如果需要,可顺便求出极值点处的函数值:y=limit(y,x,0)↙y=4y=limit(y,x,-2)↙y=8/3事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。例3.6.2画出上例中函数的图形解symsx↙y=(3*x^2+4*x+4)/(x^2+x+1);↙得到如下图形ezplot(y)↙如何用MATLAB求函数的极值点和最大值比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值?求极值:symsxy>>

3、y=x^3+x^2+1>>diff(y)%求导ans=3*x^2+2*x>>solve(ans)%求导函数为零的点ans=-2/30极值有两点。求最大值,既求-y的最小值:>>f=@(x)(-x^3-x^2-1)f=@(x)(-x^3-x^2-1)>>x=fminunc(f,-3,3)%在-3;-3范围内找Warning:Gradientmustbeprovidedfortrust-regionmethod;usingline-searchmethodinstead.>Infminuncat354Optimizationterminated:re

4、lativeinfinity-normofgradientlessthanoptions.TolFun.x=-0.6667>>f(x)ans=-1.1481在规定范围内的最大值是1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。如何用matlab求多元函数的极值求在0

5、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)

6、=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))%%subs含义见补充部分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))%极大值点和极大值

7、[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这两个函数是简易绘图函数,可以直接使用字符串绘图ezmesh('x*y-(1/3)*(x^3)+1/4*((x^2)*(sqrt(2*(x^2-y*2))))-1/2*(y*(sqrt(2*(x^2-y*2))))')2.先计算坐标点数据,再绘图,可以使用mesh

8、和surf函数[x,y]=meshgrid(0:0.1:10);z=x.*y-(1/3)*(x.^3)+1/4*((x.^2).*(sq

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。