




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、用MATLAB求極值靈活的運用MATLAB的計算功能,可以很容易地求得函數的極值。例 求的極值解 首先建立函數關系: 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=2/9,大于0,函數有極小值。如果需要,
2、可順便求出極值點處的函數值:y=limit(y,x,0) y=4y=limit(y,x,-2) y=8/3事實上,如果知道了一個函數的圖形,則它的極值情況和許多其它特性是一目了然的。而借助MATLAB的作圖功能,我們很容易做到這一點。 例畫出上例中函數的圖形 解 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 diff(y) %求導ans =3*x2 + 2*x solve(ans) %求導函數
3、為零的點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 terminated: relative infinity-norm of gradient less than options.TolFun.x = -0
4、.6667 f(x)ans = -1.1481在規定范圍內的最大值是1.1481由于函數的局限性,求出的極值可能是局部最小(大)值。求全局最值要用遺傳算法。如何用matlab求多元函數的極值求 在 0xpi/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=di
5、ff(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*piJDZ =3/8*3
6、(1/2)補充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.先計算坐標點數據,再繪圖,可以使用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;m
7、esh(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(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*
8、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*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*k
9、2)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*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.請問是哪里除了問題?提問者: nxd
10、viola - 一級最佳答案syms x1,y1 QdQd=(-2*x1-2*wd+2*a-a*k+y1*k+wf*k+td*k)/(4*b-2*b*k2) subs(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
11、)的應用疑問?懸賞分:5 - 解決時間:2006-6-29 12:57 急詢:Matlab中 subs(S)的應用疑問?1.subs(S)到底是什么函數?其什么作用,謝謝! 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)了,現在改為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論