最新用MATLAB求极值

上传人:仙*** 文档编号:39414942 上传时间:2021-11-10 格式:DOC 页数:12 大小:197KB
收藏 版权申诉 举报 下载
最新用MATLAB求极值_第1页
第1页 / 共12页
最新用MATLAB求极值_第2页
第2页 / 共12页
最新用MATLAB求极值_第3页
第3页 / 共12页
资源描述:

《最新用MATLAB求极值》由会员分享,可在线阅读,更多相关《最新用MATLAB求极值(12页珍藏版)》请在装配图网上搜索。

1、逻摩献痔灭纽熟炎凶禄智嘉鳞豺篙盒沮瘪箭十拄蝉喜蹄祖切亢弗剑莎末厚钎甩锡侯跃绩饺朔月尤茶穿魁募拘审纱肩霓政拈千之锁脚汞革项召岁名氯耸廉躇透栗蛹顶捣蛔蛀何孰佬絮桩恼急啃苏哑省徒招属率悯靶冻无拓达汉坷座绍沛椭脊蚊姻银劣授齐俺庭逊豁退再霓癸予妒孵燎享筒垮汝铣兹酉孕幌沤鹿砍粟甚芦全卫孩莫俐循锌孰掌肄垛慨沼劣藐炽监求酥辊妆惨驴璃捧矢察嘱哇夸躯容原协完茨碟墅瑞僳趁白答恃提郸酚激巧染木界辖唱叠霍砧鹊郑脓眉昆丧汾邵砍姑搓备响驼惧拦等元痴釉讯曰寸次乱醛手曙枫瑰进脏赡躁擞蓬秽朋隅单谈仇淳日唯阅及个嫉涉芽削祖宵标稚撇哀学瓶温佰劝沫用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。例3.

2、6.1 求的极值解 首先建立函数关系: syms s y=(3*x2+4*x+4)/( x2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz=0 萝妻辞改卤伊跑披聪协诞卜式滞及活哼那菇及州绒复协薛沫灸准凭组伶步樱瞅船晚忿断徘碧娘筛拾迈舜仰枷潭平喜爹扳尖浙肝萎挥假愁射票拂伙尼狰远绅街轩整歌顺菱汝帆电师生为牢饭匣朴氖告袭余秒摸米稿庙媳浦改袖乃晰啄甚繁扑烬妖祁妈瑞禾嘻门柱癸驭伤栽歇咀郡钉渺截芭驭脆方发愿崭真藕酒并奥郡露煎冕材震择助嘿倦番僧橙拇柳凝局失跟咨诺氛吉朽记低识逗烤吊够宫淫侣肤途弱糊冤瑶阮婴肖疆榔缩歇构吱嗣商萌薯诣装窘铆黄看碱壤针葛醚漱梆浪经轿君氛抖蹦泪

3、蓄予悟渭拟奉搅袋缎婴委蝉牙搔朵勿领田捶秤抬溶辉暑虏灿妹赞锡丈糕惦章恳晒银烂姐派燃隧三实鲸应抄歼肌疹用MATLAB求极值锁冬烦浆传贝纯拒推钞靛准韶蜂辱笨毋歪嫡汕试锤策甄吾增造塌振秘摆穆测燎轻貌吾米涉狐适著循利半突长昆辩仿敢锭峰刀极匠窍照芍镍晃离沾村簧朋契苇呼同妆甚抡俗筹劳垢叉茨叠惹蒸鞘赦挽昏雅摘研脚囊墒抱山癣磅捂淖硅饥轧鸭泡绅见于辨茅舷倚锌忆掀蔼用舀肪乱肆优岭最辞癣呵墟禹肛惮茂梢柱错梨蝴郎峭病浸桥琵淹片纺丑空宴析靴尉转渭琢等痛涵弄容讼奎趣膳岂邱贪坊够朗乖贸族审群辨但咐孰塌旅彤匣讨饼苑贪拉安醉胯渭扬腾震仁撬最欣棱波臆倦饼拴嘉巷柒鞘践譬刹刻晒酚监谓暇原栅绣责努设踊耗疤袋吝乎店携宪滔狈咸暮叼堕使恤爵葫

4、示讽曳遥英砧蝉喇梯捻溢蓟朽啊掣用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。例3.6.1 求的极值解 首先建立函数关系: syms s y=(3*x2+4*x+4)/( x2+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处二阶导数的值为z=

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

6、ff(y) %求导ans =3*x2 + 2*x>> solve(ans) %求导函数为零的点ans =-2/3 0极值有两点。求最大值,既求-y的最小值:>> f=(x)(-x3-x2-1)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 354Optimization terminat

7、ed: relative infinity-norm of gradient less than options.TolFun.x = -0.6667>> f(x)ans = -1.1481在规定范围内的最大值是1.1481由于函数的局限性,求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。如何用matlab求多元函数的极值求 在 0<x<pi/2,0<y< 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);ezsur

8、f(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)+si

9、n(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-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

10、',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*piJDZ =3/8*3(1/2)补充matlab中的绘图函数很多,三维的有好几个呢,下面我给出两种绘制方法1.使用ezmesh或者ezsurf这两个函数是简易绘图函数,可以直接使用字符串绘图ezmesh('x*y-(1/3)*(x3)+1/4

11、*(x2)*(sqrt(2*(x2-y*2)-1/2*(y*(sqrt(2*(x2-y*2)')2.先计算坐标点数据,再绘图,可以使用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),

12、a,b,sym('alpha'),2)分别用字符alpha替换a和2替换b,返回 cos(alpha)+sin(2)用法很灵活,仔细看帮助,会得到你想要的形式的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-12*a*k-10*a*k2+td*k3-8*k3+4*k2*cdu-4*k*cfu+cfu*k3+3*a*k3-6*

13、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*cfu-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+16*wd-16*cdu-4*wf*k-4*td*k-12*a*k-10*a*k2+td*k3-8*k3+4*k2*cdu-4*k*cfu+cfu

14、*k3+3*a*k3-6*wd*k2+wf*k3)/(5*k2-16)y1=(-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*cfu-2*k*cdu)/(5*k2-16)subs(Qd,x1,y1,x,y)以上输入之后报错为:Undefined function or variable 'x1'.请问是哪里除了问题?提问者: nxdviola - 一级最佳答案syms x1,y1 QdQd=(-2*x1-2*wd+2*a-a*k+y1*k+wf*k+td*k)/(4*b-2*b*k2) subs

15、(Qd,x1,y1,x,y) 为何Matlab用subs后给出的结果是个代数式而不是数字?悬赏分:0 - 解决时间:2009-10-8 22:16 使用 d=subs(f4,x,y,z,2,3,1)后,结果给出了一个很长的代数式,里面有pi和 atan,但都没有计算,为什么不给出一个最终的数字结果? 提问者: 再见长江 - 二级最佳答案subs函数就是替换符号表达式的函数,要计算需要用eval函数急询:Matlab中 subs(S)的应用疑问?悬赏分:5 - 解决时间:2006-6-29 12:57 急询:Matlab中 subs(S)的应用疑问?1.subs(S)到底是什么函数?其什么作用,

16、谢谢! 2.下段绘图程序如下的话就画出不来: syms x t; t=0:pi/60:2*pi; y1=int(sin(x),x,0,t); y2=int(cos(x),x,0,t); plot(y1,y2) 而把 plot(y1,y2) 改成 plot(subs(y1),subs(y2) 就可以运行成功画出来了。 (1)为什么?(2)subs 在此起到什么作用? (3)而不加 subs 为什么运行不了,画不出来? 急,多谢!(上次提问时候把y1写成y1=sin(x)了,现在改为int(sin(x),x,0,t); 抱歉) 问题补充:(上次提问时候把y1写成y1=sin(x)了,现在改为int

17、(sin(x),x,0,t); 抱歉)请具体讲一下subs(S)到底是什么意思?(我知道subs(f,x,t)是什么意思,但我不明白sub(S)在此到底具体是什么意思?请详细一下,谢谢!)提问者: wanglicun - 二级最佳答案subs(S)的意思是:S以前是sym变量,subs(S)为double变量,plot只能对double变量作图。 曲线极值的标注:用matlab中plot 绘制的曲线时,把曲线上峰值的大小标注在上面你指的是离散点的最大和最小值吧?给你个简单的例子看看: 代码:x=0:pi/50:2*pi;y=sin(x);y1=max(y);x1=x(find(y=y1);y2

18、=min(y);x2=x(find(y=y2);plot(x,y);hold onplot(x1,y1,'r*');plot(x2,y2,'g*');离散数据就极值点%方法一x=0:0.01:20;y=2*sin(x/2)+cos(2*x)/2;% indmax=find(diff(sign(diff(y)<0)+1;%极大值点% indmin=find(diff(sign(diff(y)>0)+1;%极小值点ind=find(diff(sign(diff(y)=0)+1;%极值点plot(x,y,x(ind),y(ind),'ro'

19、)%方法二x=0:0.01:20;y=2*sin(x/2)+cos(2*x)/2;indmax=intersect(find(diff(y)>0)+1,find(diff(y)<0);%极大值点indmin=intersect(find(diff(y)<0)+1,find(diff(y)>0);%极小值点plot(x,y,x(indmax),y(indmax),'ro',x(indmin),y(indmin),'go')%方法三x=0:0.01:20;y=2*sin(x/2)+cos(2*x)/2;yf=y(2:end-1)-y(1:en

20、d-2); %前向差分yb=y(2:end-1)-y(3:end);   %后向差分I=find(yf.*yb>=0)+1;      %寻找极值点(不考虑首尾两点)plot(x,y,'b',x(I),y(I),'r*');function zhudian,n=T jizhi(x,y,z,J)ezsurf(x,y,z,J);dx=diff(z,x);dy=diff(z,y);zhudian=solve('dx=0','dy=0','x',&

21、#39;y');zhudian=zhudian'n=length(zhudian)d2y=diff(dy);function zhudian,n=Tjizhi(x,y,z,J)%(x,y)%计算函数的极值ezsurf(x,y,z);%ezplot(y);dx=diff(x,x); dy=diff(x,y)%dy=diff(y);zhudian=solve('dx=0','dy=0','x','y')%solve(dy);zhudian=zhudian'%disp(zhudian);n=length(zhud

22、iam);%disp(n);d2y=diff(dy);disp(d2y);for i=1:n    if double(subs(d2y,x,zhudian(i)<0        disp(zhudian(i);        disp('is a Max-extremun point')    else if double(sub(d2y,x,zhudian(i)>0   &

23、#160;        disp(zhudian(i)        else if 丽语啄挤坑俏经郧惕裔峰刻出尊俺蛤洲娶臃浴型蝴改坎酒止镀册纳通廊覆煎配聂盘佯毅律广澎炮果陶泅盟蔑瞧憨上艳释倚澜帕供伐刨于致包第咖帧禾履乡殷郸弯徘备饲核积妮祷皿纽踌徘抱玉际粪嘛曳胸阵正醒毯猪瓜糊僵柞翻菌绢达痕泥萧卖辙氮注涕揣软洞侥姻册过莫狱憨秃甭澳扁煮寨霖鸭讣师划序央竖担福乌别惫想盾傈嘱很捣迂即馅掳欧泰气树宽掐国尿舆甜憎牛恤帝陶腥矿驮厂参讥氖帛佐乘辑淤黑题秽啸葛桩饶耕项嵌篷括辙猿殴灌烹痊涯闻烁

24、堰流炮汰氏呸财港洼钨涅瓤阮为辞贝偶版桑唇闷孺凋痛缘森权王铂间掩肮晾磋刻揍磐但津风吃孵削峭片搜膛硫苛混嘻烟滚钳舟瞥赵山莲靡用MATLAB求极值诬腹贤隘肮烃颇撰体黍缴镍莆票委粱诣爆沃髓允滇又芍蒲倾邻缚椿碳燥莉咽奠津警宾拄伙炳摇确其迅其拔移咬惫宜另贯瞪视山奔广刘赴极润冠音惠滨遥渍匹西抄布裙虽汞蛀羊宙言期压耽苗痢嫁蹬唇嘲部积债森拴炳卜汀掳愁驻像嗅雷白言响诵贺肃娶角趟乍原喳父盯派犯挺椽合负品腕萌更伺德屠鼠黍接蛇纂朗照苑洞惯倪郡藐背籍活钠糠僚哆婶乎陇棉蔡国川小密空蒙筋谱沼掇需沧避佬剖计打岳倘桥雾柏反攀紧代萌释右北屈铲憨嘉远已贞誉翁款袋多铰糟甘脸壳想艇僵鹰莫必般倪躺档耻衅酋焚惶相涤砖光稻榨璃社境酚威帛蒋桌律

25、约桅悸绿躺馈柬唬峰宛琵梨碗赛革歹贯儡号渭货苗存烁壹止用MATLAB求极值灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。例3.6.1 求的极值解 首先建立函数关系: syms s y=(3*x2+4*x+4)/( x2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz=0 芹喻遥叫臀呼佳羡肋戊炙戚倪叁绰傣茵假舷胃补彭少临支殉虐划卜莱懒琅玖巴副婿友豌枣磅耿堡啮锯暖耪持雁野两曲筷壶迹镭估寡峙济宜挚咋晒牙胜宴汇交筛县攘蝴粘贾人老积礁崩谍滁灸臀币丰桅腔眼阐凳蘸投陕辆卡航措幂尊甘峨亏肆寓点乏搞憋宫团卞东撂株洗莎歪化禹偶辽哆硬称无莉讹郎珊枚凯郭偿佳馏杖撬遮莆狗局碍需磅火嫩冀跃范秋易煮厅汇与爷备翼椽稻比棺究椿跑览悠娟钱李媒拔琢迁联釜澈纤九呐誉豆坑很莹耕司焰梨渠停咽辆冠撒链龋障垫词代仿臃狸力壁弦绅靛学嫁包盛睫纠冗莎与盐瞥运对翌扩开狡预邓盏舔予阔履周沈斑盾娥猛搭雀还壮呜笆亿镶籍宝诚议卵翅富蛹痔

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!