《matlab函數(shù)的極值與優(yōu)化.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《matlab函數(shù)的極值與優(yōu)化.ppt(30頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 高等數(shù)學(xué) 上機(jī)教學(xué)(四) 函數(shù)的極值與優(yōu)化 上機(jī)目的 上機(jī)內(nèi)容 MATLAB 2、會(huì)使用 Matlab解決無(wú)約束最優(yōu)化問(wèn)題 . 上機(jī)軟件 1、會(huì)使用 Matlab求函數(shù)的極值; 1、 Matlab中函數(shù)的輸入與調(diào)用; 2、函數(shù)極值的求法; 3、無(wú)約束最優(yōu)化問(wèn)題 . 在 Matlab中,函數(shù)是采用 M文件的方式存儲(chǔ)的。 具體步驟如下: 1、新建一個(gè) M文件: 通過(guò)點(diǎn)擊主窗口左上的新建按鈕。 2、輸入函數(shù)內(nèi)容: 例:函數(shù) f(x1,x2)=exp(X12+X2) 應(yīng)在 M文件 中輸入如下: 一、自變量為數(shù)量形式的函數(shù)的輸入
2、 第一節(jié) Matlab中函數(shù)的輸入與調(diào)用 注意: ( 1)、函數(shù)標(biāo)識(shí)關(guān)鍵字: function ( 2)、函數(shù)名: f1=f1 自變量 : (x1,x2) ( 3)、函數(shù)表達(dá)式: a=exp(x12+x2) 函數(shù)表達(dá)式可以由多個(gè)式子組成。 ( 4)、給函數(shù)結(jié)果賦值: f1=a 3、存儲(chǔ)函數(shù): 點(diǎn)擊編輯窗口的保存按鈕。 注意 :不要改變保存路徑,文件名稱(chēng)必須和函數(shù)名稱(chēng)一致。 4、函數(shù)的調(diào)用: 函數(shù)保存后,在命令窗口中即可調(diào)用該函數(shù)。 如求上述函數(shù)在 x1=1,x2=2處的函數(shù)值,即可在命令 窗口中輸入: f1(1,2) 其中 f1 為
3、剛才所輸入的函數(shù)名。 二、自變量為向量形式函數(shù)的輸入 例:函數(shù) f(x)=exp(x(1)2+x(2)).其中 x=(x(1),x(2)), 即 x為一個(gè)二維向量。 此時(shí)的輸入與調(diào)用方式與數(shù)量時(shí)不同 。 1、輸入: 2、調(diào)用: 此時(shí)自變量為向量,調(diào)用格式為: f2(1,2) 或 x=1 2; f2(x) 即,自變量需采用向量形式輸入。 3、實(shí)際運(yùn)行結(jié)果如下: f2(1,2) ans = 20.0855 x=1,2; f2(x) ans = 20.0855 Matlab中,求一元函數(shù)極值的函數(shù)為 fminbnd 1、此函數(shù)最簡(jiǎn)輸入格式為: x=fmin
4、bnd(f,a,b) 含義為: 求函數(shù) f在區(qū)間 a,b上的最小值點(diǎn) (自變量值 ). 2、對(duì)于最大值問(wèn)題,需轉(zhuǎn)化為最小值問(wèn)題來(lái)處理。 ( -f(x)在區(qū)間 a,b上的最小值就是 f(x)在 a,b的最大值) 第二節(jié) 函數(shù)極值的求法 一、一元函數(shù)極值的求法 3、常用格式 x,fval=fminbnd(f,a,b). 結(jié)果中, fval為最小值, x為取到最小值的點(diǎn)。 例: Matlab命令: x,fval=fminbnd(x.2+3*x+1,-2,3) 含義是: 求函數(shù) f(x)=x2+3*x+1在 -2,3內(nèi)的最小值。 結(jié)果為 x = -1.5000 fval
5、= -1.2500 注 :此時(shí)函數(shù)很簡(jiǎn)單,故沒(méi)有使用 M文件。 多元函數(shù)的最小值問(wèn)題,在 Matlab中有 2個(gè)經(jīng)常 使用的函數(shù): 1、 fminsearch 2、 fminunc 注意 : ( 1)、在使用這兩個(gè)函數(shù)時(shí),必須首先用 M文 件的形式存儲(chǔ)待求最值的函數(shù),并且需以向量函數(shù) 的形式表達(dá); ( 2)、最大值問(wèn)題需轉(zhuǎn)化為最小值問(wèn)題。 二、多元函數(shù)極值的求法 ( 1)、此函數(shù)使用單純型法搜索最值; ( 2)、使用格式: x,fval= fminsearch(f,x0) 其中 f為待求最值的向量函數(shù), x0為搜索過(guò)
6、程 開(kāi)始時(shí)自變量的初始值。 例: fminsearch(f,1,2) 含義為:在 x=1,2附近搜 尋函數(shù) f的最小值。 1、 fminsearch 例: 求函數(shù) f(x,y)= -(x+y)+(x2+y2+1)在 x=1,y=2 附近的最小值點(diǎn)。 解決步驟: 1、建立 M文件,保存函數(shù) f; M文件內(nèi)容為: function f1=f1(x) a=-(x(1)+x(2)); b=(x(1)2+x(2)2+1); f1=a+b; 2、調(diào)用 fminsearch函數(shù)求最值 .
7、 在命令窗口中,輸入: x0=1,2; x,fval=fminsearch(f1,x0) 3、輸出結(jié)果為: X = 0.5000 0.5000 fval =0.5000 ( 1)、此函數(shù)與 fminsearch不同的地方在于使用的 搜索方法不同,它使用牛頓法搜索最值,在效率上 有所提高; ( 2)、使用格式與 fminsearch類(lèi)似: x,fval= fminunc(f,x0) 其中 f為待求最值的向量函數(shù), x0為搜索過(guò)程開(kāi) 始時(shí)自變量的初始值。 例 : fmin
8、unc(f,1,2) 含義為:在 x=1,2附近搜尋 函數(shù) f的最小值。 2、 fminunc 第三節(jié) 無(wú)約束最優(yōu)化問(wèn)題 求解無(wú)約束最優(yōu)化問(wèn)題的的基本思想 * Matlab優(yōu)化工具箱簡(jiǎn)介 Xf n EX m i n 其中 1 : EEf n 標(biāo)準(zhǔn)形式: 一、求解無(wú)約束最優(yōu)化問(wèn)題的基本思想 求解的基本思想 ( 以二元函數(shù)為例 ) 1x 2x )( 21 xxf 0 1x 2x 0 5 3 1 0X 1X 2X )( 0Xf )( 1Xf )( 2Xf 連 續(xù) 可 微 XfnEX m a x = m i n XfnEX 多局部極小 298.0f
9、0f 298.0f 唯一極小 (全局極小 ) 2122212121 322)( xxxxxxxxf 搜索過(guò)程 2 1221221 )1()(1 0 0)(m i n xxxxxf 最優(yōu)點(diǎn) (1 1) 初始點(diǎn) (-1 1) 1x 2x f -1 1 4.00 -0.79 0.58 3.39 -0.53 0.23 2.60 -0.18 0.00 1.50 0.09 -0.03 0.98 0.37 0.11 0.47 0.59 0.33 0.20 0.80 0.63 0.05 0.95 0.90 0.003 0.99 0.99 1E-4 0.999 0.998 1E-5 0.9997 0
10、.9998 1E-8 二、用 Matlab解無(wú)約束優(yōu)化問(wèn)題(舉例說(shuō)明) 1. 一元函數(shù)無(wú)約束優(yōu)化問(wèn)題 : m in f ( x ) 21 xxx 其中( 3)、( 4)、( 5)的等式右邊可選用( 1)或( 2) 的等式右邊。 函數(shù) fminbnd的算法基于黃金分割法和二次插值法,它要 求目標(biāo)函數(shù)必須是連續(xù)函數(shù),并可能只給出局部最優(yōu)解。 常用格式如下: ( 1) x= fminbnd (fun,x1,x2) ( 2) x= fminbnd (fun,x1,x2 , options) ( 3) x, fval= fminbnd( ...) ( 4) x, fval, ex
11、itflag= fminbnd( ...) ( 5) x, fval, exitflag, output= fminbnd( ...) 運(yùn)行結(jié)果: x min = 3. 927 0 ym in = -0. 02 79 x max = 0 .78 54 ym ax = 0. 64 48 例 1 求 f = 2 xe x s i n 在 0
12、in=fminbnd (f, 0,8) f1=-2*exp(-x).*sin(x); xmax,ymax=fminbnd (f1, 0,8) 例 2 對(duì)邊長(zhǎng)為 3米的正方形鐵板,在四個(gè)角剪去相等的正方形以 制成方形無(wú)蓋水槽,問(wèn)如何剪法使水槽的容積最大? 設(shè)剪去的正方形的邊長(zhǎng)為 x ,則水槽的容積為: 2( 3 2 )xx 建立無(wú)約束優(yōu)化模型為: min y= - 2( 3 2 )xx , 0
13、1 . ( 2)成本與產(chǎn)量成負(fù)指數(shù)關(guān)系 甲的成本隨其產(chǎn)量的增長(zhǎng)而降低 , 且有一個(gè)漸進(jìn)值 , 可以假設(shè)為 負(fù)指數(shù)關(guān)系 , 即 : 0,,, 111111 11 crcerq x 同理, 0,,, 222222 22 crcerq x 3、模型建立 若根據(jù)大量的統(tǒng)計(jì)數(shù)據(jù) ,求出系數(shù) b1=100,a11=1,a12=0.1,b2=280, a21=0.2,a22=2,r1=30,1=0.015,c1=20, r2=100,2=0.02,c2=30,則 問(wèn)題轉(zhuǎn)化為無(wú)約束優(yōu)化問(wèn)題:求甲 ,乙兩個(gè)牌號(hào)的產(chǎn)量 x1, x2,使 總利潤(rùn) z最大 . 為簡(jiǎn)化模型
14、 ,先忽略成本 ,并令 a12=0,a21=0,問(wèn)題轉(zhuǎn)化為求 : z1 = ( b1 - a11x1 ) x1 + ( b2 - a22x2 ) x2 的極值 . 顯然其解為 x1 = b1/2a11 = 50, x2 = b2/2a22 = 70, 我們把它作為原問(wèn)題的初始值 . 總利潤(rùn)為: z(x1,x2)=(p1-q1)x1+(p2-q2)x2 4、模型求解 ( 1) . 建立 M-文件 fun.m: function f = fun(x) y1=((100-x(1)- 0.1*x(2))-(30*exp(-0.015*x(1))+20))*x(1);
15、 y2=((280-0.2*x(1)- 2*x(2))-(100*exp(-0.02*x(2))+30))*x(2); f=-y1-y2; ( 2) . 輸入命令 : x0=50,70; x=fminunc(fun,x0), z=fun(x) ( 3) . 計(jì)算結(jié)果 : x=23.9025 62.4977 z=-6.4135e+003 即甲的產(chǎn)量為 23.9025,乙的產(chǎn)量為 62.4977,最大利潤(rùn)為 6413.5. 1、求函數(shù) 在區(qū)間 -10,10內(nèi)的最值? 2、求函數(shù) 在區(qū)
16、間 -1,3內(nèi)的最值? 3、某工廠(chǎng)要制作一個(gè)容積為 100立方米的無(wú)蓋長(zhǎng)方體 容器,問(wèn):怎樣制作材料最省? 4、要制作一表面積為 108平米的水池,問(wèn):怎樣選擇 長(zhǎng)寬高,能使得容積最大? 上機(jī)作業(yè)(四) 2( ) 3 2f x x x 2 2 2 3 4() 22 xxfx xx 5、 梯子長(zhǎng)度問(wèn)題 ( 選作 ) 一樓房的后面是一個(gè)很大的花園 . 在花園中緊靠著 樓房有一個(gè)溫室 ,溫室伸入花園 2m,高 3m,溫室正上 方是樓房的窗臺(tái) . 清潔工打掃窗臺(tái)周?chē)?,他得用梯 子越過(guò)溫室 ,一頭放在花 園中 ,一頭靠在樓房的墻 上 . 因?yàn)闇厥沂遣荒艹? 受梯子壓力的 ,所以梯子 太短是不行的 .現(xiàn)清潔工 只有一架 7m長(zhǎng)的梯子 ,你 認(rèn)為它能達(dá)到要求嗎 ? 能滿(mǎn)足要求的梯子的 最小長(zhǎng)度為多少 ? 2009 年 6 月