2022年用MATLAB求极值 .pdf
《2022年用MATLAB求极值 .pdf》由会员分享,可在线阅读,更多相关《2022年用MATLAB求极值 .pdf(12页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、页脚用 MATLAB 求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。例 3.6.1 求223441xxyxx的极值解 首先建立函数关系: syms s y=(3*x2+4*x+4)/( x2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz= 0 -2 知道函数有两个驻点x1=0 和 x2=-2,考察函数在驻点处二阶导数的正负情况:d2y=diff(y,2); z1=limit(d2y,x,0) z1= -2 z2=limit(d2y,x,-2) z2= 2/9 于是知在x1=0 处二阶导数的值为z1=-2, 小于 0,函数有极大值;
2、 在 x2=-2 处二阶导数的值为 z2=2/9 ,大于 0,函数有极小值。如果需要,可顺便求出极值点处的函数值:y1=limit(y,x,0) y1= 4 y2=limit(y,x,-2) y2= 8/3 事实上, 如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助 MATLAB 的作图功能,我们很容易做到这一点。例 3.6.2画出上例中函数的图形解 syms x y=(3*x2+4*x+4)/( x2+x+1); 得到如下图形ezplot(y) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
3、整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 页脚如何用 MATLAB 求函数的极值点和最大值比如说 y=x3+x2+1 ,怎样用matlab 来算它的极值和最大值?求极值:syms x y y=x3+x2+1 diff(y) %求导ans = 3*x2 + 2*x solve(ans) %求导函数为零的点ans = -2/3 0 极值有两点。求最大值,既求-y 的最小值: f=(x)(-x3-x2-1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
4、- - - - 第 2 页,共 12 页 - - - - - - - - - 页脚f = (x)(-x3-x2-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
5、f(x) ans = -1.1481 在规定范围内的最大值是1.1481 由于函数的局限性,求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。如何用 matlab 求多元函数的极值求在 0 xpi/2, 0y 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
6、=diff(z,x,2); %对于定义域内的驻点求解二阶偏导函数B=diff(diff(z,x),y); C=diff(z,y,2); D=A*C-B2; % 判别极大值点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) % 极大值点和极大值xx(2) yy(2) JDZ=subs(subs(z,x,xx(2),y,yy(2) 程序运行结果ans = 1/3*pi, 1/3
7、*pi JDZ = 3/8*3(1/2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 页脚补充matlab 中的绘图函数很多,三维的有好几个呢,下面我给出两种绘制方法1. 使用 ezmesh或者 ezsurf这两个函数是简易绘图函数,可以直接使用字符串绘图ezmesh(x*y-(1/3)*(x3)+1/4*(x2)*(sqrt(2*(x2-y*2)-1/2*(y*(sqrt(2*(x2-y*2) 2. 先计算坐标点数据,再
8、绘图,可以使用mesh和 surf函数x,y=meshgrid(0:0.1:10); z=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); z(imag(z)=0)=nan; mesh(x,y,z) subs 是赋值函数,用数值替代符号变量替换函数例如 : 输入 subs(a+b,a,4) 意思就是把a 用 4 替换掉,返回 4+b 也可以替换多个变量,例如:subs(cos(a)+sin(b),a,b,sym(alpha),2) 分别用字符alpha 替换 a 和 2 替换 b,返回 cos(al
9、pha)+sin(2) 用法很灵活,仔细看帮助,会得到你想要的形式的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 页脚matlab subs如何用悬赏分: 0 - 解决时间: 2008-12-3 17:36在解一个模型,其中:Qd=(-2*x-2*wd+2*a-a*k+y*k+wf*k+td*k)/(4*b-2*b*k2) 现在求出来x = 1/2*(48*a+32*k+16*wd-16*cdu-4*wf*k-4*td*k-
10、12*a*k-10*a*k2+td*k3-8*k3+4*k 2*cdu-4*k*cfu+cfu*k3+3*a*k3-6*wd*k2+wf*k3)/(5*k2-16) y = (-8*a+a*k2-2*wd*k+10*a*k+8*wf-3*wf*k2-3*td*k2+2*cfu*k2+4*k2+8*td-8*cf u-2*k*cdu)/(5*k2-16) 要把 x 和 y 代回 Qd ,请教达人,用matlab 的 subs 怎么写啊?万分感谢!问题补充:Qd=(-2*x1-2*wd+2*a-a*k+y1*k+wf*k+td*k)/(4*b-2*b*k2) x1=1/2*(48*a+32*k+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年用MATLAB求极值 2022 年用 MATLAB 极值
限制150内