Matlab優(yōu)化工具箱簡介
《Matlab優(yōu)化工具箱簡介》由會員分享,可在線閱讀,更多相關《Matlab優(yōu)化工具箱簡介(61頁珍藏版)》請在裝配圖網上搜索。
1、第 五 講 Matlab優(yōu) 化 工 具 箱 簡 介 -optimization toobox1. 線 性 優(yōu) 化2. 非 線 性 優(yōu) 化3. 極 小 化 極 大 ( Minmax) 問 題4. 曲 線 擬 合 與 插 值 線 性 規(guī) 劃 問 題 是 目 標 函 數 和 約 束 條 件 均 為 線 性 函 數 的 問 題 ,MATLAB7.0解 決 的 線 性 規(guī) 劃 問 題 的 標 準 形 式 為 min sub. to: 其 中 f、 x、 b、 beq、 lb、 ub為 向 量 , A、 Aeq為 矩 陣 .其 它 形 式 的 線 性 規(guī) 劃 問 題 都 可 經 過 適 當 變 換 化 為
2、 此 標 準 形 式 . 在 MATLAB5.x以 上 版 中 , 線 性 規(guī) 劃 問 題 Linear Programming已 用 函 數 linprog取 代 了 MATLAB5.x版 中 的 lp函 數 .當 然 , 由 于 版本 的 向 下 兼 容 性 , 一 般 說 來 , 低 版 本 中 的 函 數 在 7.0版 中 仍 可 使用 . nRxxf bxA beqxAeq ubxlb 5.1 線 性 優(yōu) 化 函 數 linprog格 式 x = linprog(f,A,b) %求 min f *x sub.to 線 性 規(guī) 劃 的 最 優(yōu) 解 .x = linprog(f,A,b,
3、Aeq,beq) %等 式 約 束 , 若 沒 有 不 等 式 約 束 , 則 A= , b= .x = linprog(f,A,b,Aeq,beq,lb,ub) . %指 定 x的 范 圍 , 若 沒 有 等 式 約 束 , 則 Aeq= , beq= .x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %設 置 初 值 x0.x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options為 指 定 的 優(yōu) 化 參 數 .bxA x,fval = linprog() % 返 回 目 標 函 數 最 優(yōu) 值 , 即 fval=
4、f *x.x,lambda,exitflag = linprog() % lambda為 解 x的 Lagrange乘 子 .x, lambda,fval,exitflag = linprog() % exitflag為 終 止 迭 代 的 錯 誤 條 件 .x,fval, lambda,exitflag,output = linprog() % output為 關 于 優(yōu) 化 的 一 些 信 息 .說 明 : 若 exitflag0表 示 函 數 收 斂 于 解 x, exitflag=0表 示 超 過函 數 估 值 或 迭 代 的 最 大 次 數 , exitflagf = -5; -4;
5、 -6; % 寫 成 行 向 量 亦 可 !A = 1 -1 1;3 2 4;3 2 0;b = 20; 42; 30;lb = zeros(3,1);x,fval,exitflag,output,lambda = linprog(f,A,b,lb)結 果 為 :x = %最 優(yōu) 解 0.0000 15.0000 3.0000fval = %最 優(yōu) 值 -78.0000exitflag = %收 斂 1 output = iterations: 6 %迭 代 次 數 cgiterations: 0 algorithm: lipsol %所 使 用 規(guī) 則lambda = ineqlin: 3x
6、1 double eqlin: 0 x1 double upper: 3x1 double lower: 3x1 double lambda.ineqlinans = 0.0000 1.5000 0.5000 lambda.lower ans = 1.0000 0.0000 0.0000表 明 : 不 等 約 束 條 件 2和 3以 及 第 1個 下 界 是 有 效 的 . 請 寫 出 下 面 線 性 規(guī) 劃 的 Matlab程 序 . c=-0.4 -0.28 -0.32 -0.72 -0.64 -0.6; A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0
7、.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0 0.08; b=850;700;100;900; Aeq=; beq=; vlb=0;0;0;0;0;0; vub=;x,fval=linprog(c,A,b,Aeq,beq,vlb,vub) MATLAB求 解 優(yōu) 化 問 題 的 主 要 函 數 優(yōu) 化 函 數 的 輸 入 變 量 優(yōu) 化 函 數 的 輸 出 變 量 5.2非 線 性 優(yōu) 化5.2.1 有 約 束 的 一 元 函 數 的 最 小 值單 變 量 函 數 求 最 小 值 的 標 準 形 式 為 sub.to 函 數 fminbnd格 式 x = fmi
8、nbnd(fun,x1,x2) %返 回 自 變 量 x在 區(qū) 間 上 函 數 fun取 最 小 值 時 x值 , fun為 目 標 函 數 的 表 達 式 字 符 串 或 MATLAB自定 義 函 數 的 函 數 柄 .x = fminbnd(fun,x1,x2,options) x,fval = fminbnd() x,fval,exitflag = fminbnd()x,fval,exitflag,output = fminbnd()x(fminx 21 xxx 例 5-2 計 算 下 面 函 數 在 區(qū) 間 (0, 1)內 的 最 小 值 . x3 e xlogxxcosx)x(f 解
9、 : x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223fval = 0.3974exitflag = 1 output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation 1)3x()x(f 3 例 5-3 在 0, 5上 求 下 面 函 數 的 最 小 值 解 :先 自 定 義 函 數 : 在 MATLAB編 輯 器 中 建 立 M文 件 為 :function f = myfu
10、n(x)f = (x-3).2 - 1;保 存 為 myfun.m, 然 后 在 命 令 窗 口 鍵 入 命 令 : x=fminbnd(myfun,0,5)則 結 果 顯 示 為 :x = 3 5.2.2 無 約 束 多 元 函 數 最 小 值多 元 函 數 最 小 值 的 標 準 形 式 為其 中 : x為 向 量 .命 令 利 用 函 數 fminsearch求 無 約 束 多 元 函 數 最 小 值 .函 數 fminsearch格 式 x = fminsearch(fun,x0) %x0為 初 始 點 , fun為 目 標 函 數 的表 達 式 字 符 串 或 MATLAB自 定 義
11、 函 數 的 函 數 柄 .x = fminsearch(fun,x0,options) % options查 optimset.x,fval = fminsearch() %最 優(yōu) 點 的 函 數 值 .x,fval,exitflag = fminsearch() % exitflag與 單 變 量 情 形 一 致 .x,fval,exitflag,output = fminsearch() %output與 單 變 量 情 形一 致 . )x(fminx x,x,xx n21 222132131 xxx10 xx4x2y 例 5-4 求 的 最 小 值 點 .解 : X=fminsearc
12、h(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2, 0,0)結 果 為 X = 1.0016 0.8335或 在 MATLAB編 輯 器 中 建 立 函 數 文 件 .function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保 存 為 myfun.m, 在 命 令 窗 口 鍵 入 X=fminsearch (myfun, 0,0) 或 X=fminsearch(myfun, 0,0)結 果 為 : X = 1.0016 0.8335 5.2.3 有 約 束 的 多 元 函 數 最 小 值非 線
13、性 有 約 束 的 多 元 函 數 的 標 準 形 式 為 :sub.to 其 中 : x、 b、 beq、 lb、 ub是 向 量 , A、 Aeq為 矩 陣 , C(x)、Ceq(x)是 返 回 向 量 的 函 數 , f(x)為 目 標 函 數 , f(x)、 C(x)、Ceq(x)可 以 是 非 線 性 函 數 .在 MATLAB5.x中 , 它 的 求 解 由 函 數 constr實 現(xiàn) .)x(fminx 0)x(C 0)x(Ceq bxA beqxAeq ubxlb 函 數 fmincon格 式 x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,
14、A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fmincon()x,fval,exitflag = fmincon()x,fval,exitflag,output = fmincon()x,fval,exitflag,output,lambda = fmincon()x,fval,exitflag,output,lambda,gra
15、d = fmincon()x,fval,exitflag,output,lambda,grad,hessian = fmincon() 參 數 說 明 :fun為 目 標 函 數 , 它 可 用 前 面 的 方 法 定 義 ;nonlcon的 作 用 是 通 過 接 受 的 向 量 x來 計 算 非 線 性 不 等 約 束 和 等式 約 束 分 別 在 x處 的 估 計 C和 Ceq, 通 過 指 定 函 數 柄 來 使 用 , 如 :x = fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon), 先建 立 非 線 性 約 束 函 數 , 并 保 存 為 myco
16、n.m: function C,Ceq = mycon(x)C = % 計 算 x處 的 非 線 性 不 等 約 束 的 函 數 值 .Ceq = % 計 算 x處 的 非 線 性 等 式 約 束 的 函 數 值 .lambda是 Lagrange乘 子 , 它 體 現(xiàn) 哪 一 個 約 束 有 效 .output輸 出 優(yōu) 化 信 息 ;grad表 示 目 標 函 數 在 x處 的 梯 度 ;hessian表 示 目 標 函 數 在 x處 的 Hessian值 . 例 5-5 求 下 面 問 題 在 初 始 點 ( 0, 1) 處 的 最 優(yōu) 解21212221 x5x2xxxx 0 x)1x
17、( 221 06x3x2 21 min sub.to 解 : 約 束 條 件 的 標 準 形 式 為 :sub.to 先 在 MATLAB編 輯 器 中 建 立 非 線 性 約 束 函 數 文 件 : function c, ceq=mycon (x) c=(x(1)-1)2-x(2); ceq= ; %無 等 式 約 束 .0 x)1x( 221 6x3x2 21 然 后 , 在 命 令 窗 口 鍵 入 如 下 命 令 或 建 立 M文 件 :fun=x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2); %目 標 函 數 .x0=0 1;A=-2 3; % 線 性 不 等
18、 式 約 束 .b=6;Aeq= ; % 無 線 性 等 式 約 束 .beq= ;lb= ; % x沒 有 下 、 上 界 .ub= ;x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon) 則 結 果 為 x = 3 4fval = -13exitflag = 1 % 解 收 斂 . output = iterations: 2 funcCount: 9 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-sea
19、rch firstorderopt: cgiterations: lambda = lower: 2x1 double % x下 界 有 效 情 況 , 通 過 lambda.lower可 查 看 . upper: 2x1 double % x上 界 有 效 情 況 , 為 0表 示 約 束 無 效 . eqlin: 0 x1 double %線 性 等 式 約 束 有 效 情 況 , 不 為 0表 示 約 束 有 效 . eqnonlin: 0 x1 double %非 線 性 等 式 約 束 有 效 情 況 . ineqlin: 2.5081e-008 %線 性 不 等 式 約 束 有 效
20、 情 況 . neqnonlin: 6.1938e-008 %非 線 性 不 等 式 約 束 有 效 情 況 . grad = %目 標 函 數 在 最 小 值 點 的 梯 度 . 1.0e-006 * -0.1776 hessian = %目 標 函 數 在 最 小 值 點 的 Hessian值 . 1.0000 -0.0000 -0.0000 1.0000 5.2.4 二 次 規(guī) 劃 問 題二 次 規(guī) 劃 問 題 ( quadratic programming) 的 標 準 形 式 為 : sub.to 其 中 , H、 A、 Aeq為 矩 陣 , f、 b、 beq、 lb、 ub、 x
21、為 向 量其 它 形 式 的 二 次 規(guī) 劃 問 題 都 可 轉 化 為 標 準 形 式 . MATLAB5.x版 中 的 qp函 數 已 被 6.0版 中 的 函 數 quadprog取 代 。xfxHx21min bxA beqxAeq buxbl 函 數 quadprog格 式 x = quadprog(H,f,A,b) %其 中 H,f,A,b為 標 準 形 中 的 參數 , x為 目 標 函 數 的 最 小 值 .x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq滿 足 等 約 束 條 件 .x = quadprog(H,f,A,b,Aeq,beq,lb,u
22、b) % lb,ub分 別 為 解 x的下 界 與 上 界 .x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0為 設 置 的 初 值x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options為 指 定 的 優(yōu) 化 參 數 .x,fval = quadprog() %fval為 目 標 函 數 最 優(yōu) 值 .x,fval,exitflag = quadprog() % exitflag與 線 性 規(guī) 劃 中 參數 意 義 相 同 .x,fval,exitflag,output = quadprog() %
23、output與 線 性 規(guī) 劃中 參 數 意 義 相 同 .x,fval,exitflag,output,lambda = quadprog() % lambda與線 性 規(guī) 劃 中 參 數 意 義 相 同 . 3xx)0,0(xx01 10)xx(213xx)xx(fmin 2121212121 例 5-6 求 二 次 規(guī) 劃 的 最 優(yōu) 解 max f (x1, x2)=x1x2+3 sub. to x1+x2-2=0解 : 化 成 標 準 形 式 : sub.to x1+x2=2 在 Matlab中 實 現(xiàn) 如 下 :H=0,-1;-1,0;f=0;0;Aeq=1 1;b=2;x,fva
24、l,exitflag,output,lambda = quadprog(H,f, , ,Aeq,b)結 果 為 :x = 1.0000 1.0000 fval =-1.0000exitflag =4output = iterations: 1 algorithm: large-scale: projective preconditioned conjugate gradients f irstorderopt: 0 cgiterations: 1 message: Optimization terminated: local minimum found; the solution is sin
25、gular. lambda = eqlin: 1.0000 ineqlin: lower: upper: 5.3 極 小 化 極 大 ( Minmax) 問 題)x(Fmaxmin iFx i 0)x(C 0)x(Ceq bxA beqxAeq ubxlb sub.to 其 中 : x、 b、 beq、 lb、 ub是 向 量 , A、 Aeq為 矩 陣 ,C(x)、 Ceq(x)和 F(x)是 返 回 向 量 的 函 數 , F(x)、 C(x)、 Ceq(x) 可 以 是 非 線 性 函 數 . 函 數 fminimax格 式 x = fminimax(fun,x0)x = fminima
26、x(fun,x0,A,b)x = fminimax(fun,x0,A,b,Aeq,beq)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval,maxfval = fminimax()x,fval,maxfval,exitflag = fminimax()x,fval,maxfval,exitflag,output = fminimax()x,fval,maxf
27、val,exitflag,output,lambda = fminimax() 例 5-7 求 下 列 函 數 最 大 值 的 最 小 化 問 題其 中 : )x(f ,)x(f ,)x(f ,)x(f ,)x(f 54321 304x40 x48xx2)x(f 2122211 22222 x3x)x(f 18x3x)x(f 213 214 xx)x(f 8xx)x(f 215 解 : 先 建 立 目 標 函 數 文 件 , 并 保 存 為 myfun.m: function f = myfun(x)f(1)= 2*x(1)2+x(2)2-48*x(1)-40*x(2)+304; f(2)=
28、-x(1)2 - 3*x(2)2;f(3)= x(1) + 3*x(2) -18;f(4)= -x(1)- x(2);f(5)= x(1) + x(2) - 8;然 后 , 在 命 令 窗 口 鍵 入 命 令 :x0 = 0.1; 0.1; % 初 始 值x,fval = fminimax(myfun,x0)結 果 為 :x = 4.0000 4.0000fval = 0.0000 -64.0000 -2.0000 -8.0000 -0.0000 5.4 曲 線 擬 合 與 插 值 在 大 量 的 應 用 領 域 中 , 人 們 經 常 面 臨 用 一 個 解析 函 數 描 述 數 據 (通
29、常 是 測 量 值 )的 任 務 .對 這 個 問 題有 兩 種 方 法 . 插 值 : 在 插 值 法 里 , 數 據 假 定 是 正 確 的 , 要 求以 某 種 方 法 描 述 數 據 點 之 間 所 發(fā) 生 的 情 況 . 曲 線 擬 合 : 曲 線 擬 合 或 回 歸 是 人 們 設 法 找 出 某 條光 滑 曲 線 , 它 最 佳 地 擬 合 數 據 , 但 不 必 要 經 過 任 何數 據 點 . 標 有 o 的 是 數 據 點 ; 連 接 數 據 點 的 實 線 描 繪 了 線 性 內 插 ,虛 線 是 數 據 的 最 佳 擬 合 .0 0.1 0.2 0.3 0.4 0.5
30、0.6 0.7 0.8 0.9 1-2024681012 x y=f(x) Second Order Curve Fitting 曲 線 擬 合 的 兩 個 基 本 問 題 : 1.最 佳 擬 合 意 味 著 什 么 ? 2.應 該 用 什 么 樣 的 曲 線 ? 可 用 許 多 不 同 的 方 法 定 義 最 佳 擬 合 , 并 存 在無 窮 數 目 的 曲 線 . 當 最 佳 擬 合 被 解 釋 為 在 數 據 點 的 最 小 誤 差 平方 和 , 且 所 用 的 曲 線 限 定 為 多 項 式 時 , 那 么 曲 線擬 合 是 相 當 簡 捷 的 .數 學 上 , 稱 為 多 項 式 的
31、 最 小 二乘 曲 線 擬 合 .1 Matlab 曲 線 擬 合 虛 線 和 標 志 的 數 據 點 之 間 的 垂 直 距 離 是 在 該 點 的 誤 差 .對各 數 據 點 距 離 求 平 方 , 并 把 平 方 距 離 全 加 起 來 , 就 是 誤 差 平 方和 .這 條 虛 線 是 使 誤 差 平 方 和 盡 可 能 小 的 曲 線 , 即 是 最 佳 擬 合 .最 小 二 乘 這 個 術 語 僅 僅 是 使 誤 差 平 方 和 最 小 的 省 略 說 法 . 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-2024681012 x y=f(x) S
32、econd Order Curve Fitting Matlab 曲 線 擬 合 和 插 值 命 令曲 線 擬 合 和 插 值 函 數polyfit(x, y, n) 對 描 述 n階 多 項 式 y=f(x)的 數 據 進 行 最 小 二 乘 曲 線 擬 合interp1(x, y, xo) 1維 線 性 插 值interp1(x, y, xo, spline ) 1維 3次 樣 條 插 值interp1(x, y, xo, cubic ) 1維 3次 插 值interp2(x, y, Z, xi, yi) 2維 線 性 插 值interp2(x, y, Z, xi, yi, cubic )
33、 2維 3次 插 值interp2(x, y, Z, xi, yi, nearest ) 2維 最 近 鄰 插 值 x=0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1;y=-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2; n=2; p=polyfit(x, y, n)ezplot( -9.8108*x*x+20.1293*x-0.0317 ) %二 次 多 項 式 系 數 %既 是 p的 輸 出 , 該 命 令 為 畫 出 擬 合 曲 線 .xi=linspace(0, 1, 100); % x-axis data
34、 for plotting z=polyval(p, xi) %求 出 多 項 式 在 xi點 處 的 取 值 . plot(x, y, o , x, y, xi, z, : ) xlabel( x ), ylabel( y=f(x) ), title( Second Order Curve Fitting ) 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -2 0 2 4 6 8 10 12 x y =f (x ) Second Order Curve Fitting 多 項 式 階 次 的 選 擇 是 任 意 的 .兩 點 決 定 一 直 線或 一 階 多
35、 項 式 .三 點 決 定 一 個 平 方 或 2階 多 項 式 .按此 進 行 , n+1數 據 點 唯 一 地 確 定 n階 多 項 式 .于 是 ,在 上 面 的 情 況 下 , 有 11個 數 據 點 , 我 們 可 選 一 個 高達 10階 的 多 項 式 .然 而 , 高 階 多 項 式 給 出 很 差 的 數值 特 性 , 人 們 不 應 選 擇 比 所 需 的 階 次 高 的 多 項 式 .此 外 , 隨 著 多 項 式 階 次 的 提 高 , 近 似 變 得 不 夠 光 滑 ,因 為 較 高 階 次 多 項 式 在 變 零 前 , 可 多 次 求 導 . 0 0.2 0.4
36、0.6 0.8 1 -2 0 2 4 6 8 10 12 14 16 x y= f(x ) 2nd and 10th Order curve Fitting 原 始 數 據 標 以 o, 2階 曲 線 擬 合 是 虛 線 , 10階 擬 合 是 實 線 .注 意 , 在 10階 擬 合 中 , 在 左 邊 和 右 邊 的 極 值 處 , 數 據 點 之 間 出現(xiàn) 大 的 紋 波 .當 企 圖 進 行 高 階 曲 線 擬 合 時 , 這 種 紋 波 現(xiàn) 象 經 常 發(fā) 生 .顯 然 , 越 多 就 越 好 的 觀 念 在 這 里 不 適 用 . 2 插 值 命 令 插 值 定 義 為 對 數 據
37、 點 之 間 函 數 的 估 值 方 法 , 這些 數 據 點 是 由 某 些 集 合 給 定 .當 人 們 不 能 很 快 地 求 出所 需 中 間 點 的 函 數 值 時 , 插 值 是 一 個 有 價 值 的 工 具 .例 如 , 當 數 據 點 是 某 些 實 驗 測 量 的 結 果 或 是 過 長 的計 算 過 程 時 , 就 有 這 種 情 況 . 最 簡 單 插 值 的 例 子 是 MATLAB的 作 圖 .按 缺 省 ,MATLAB用 直 線 連 接 所 用 的 數 據 點 以 作 圖 .這 個 線 性 插值 猜 測 中 間 值 落 在 數 據 點 之 間 的 直 線 上 .當
38、 然 , 當 數據 點 個 數 的 增 加 和 它 們 之 間 距 離 的 減 小 時 , 線 性 插值 就 更 精 確 .例 如 : x1=linspace(0, 2*pi, 60); x2=linspace(0, 2*pi, 6); plot(x1, sin(x1), x2, sin(x2), - )xlabel( x ), ylabel( sin(x) ), title( Linear Interpolation ) 0 1 2 3 4 5 6 7-1 -0.5 0 0.5 1 x si n( x) Linear Interpolation一 個 在 數 據 點 之 間 用 60個 點
39、, 它 比 另 一 個 只 用 6個 點 更 光 滑 和 更 精 確 . 如 曲 線 擬 合 一 樣 , 插 值 要 作 決 策 .根 據 所 作 的 假 設 ,有 多 種 插 值 .而 且 , 可 以 在 一 維 以 上 空 間 中 進 行 插 值 .即 如 果 有 反 映 兩 個 變 量 函 數 的 插 值 , z=f(x, y), 那 么就 可 在 x之 間 和 在 y之 間 , 找 出 z的 中 間 值 進 行 插值 .MATLAB在 一 維 函 數 interp1和 在 二 維 函 數 interp2中 ,提 供 了 許 多 的 插 值 選 擇 . 為 了 說 明 一 維 插 值 ,
40、 考 慮 下 列 問 題 , 12小 時 內 ,一 小 時 測 量 一 次 室 外 溫 度 .數 據 存 儲 在 兩 個 MATLAB變 量中 . hours=1:12; % index for hour data was recorded temps=5 8 9 15 25 29 31 30 22 25 27 24; % recorded temperatures plot(hours, temps, hours, temps, + ) % view temperatures title( Temperature )xlabel( Hour ), ylabel( Degrees Celsiu
41、s ) 0 2 4 6 8 10 125 10 15 20 25 30 35 Hour Deg ree s C els ius Temperature 正 如 上 圖 看 到 的 , MATLAB畫 出 了 數 據 點 線 性 插 值 的 直線 .為 了 計 算 在 任 意 給 定 時 間 的 溫 度 , 人 們 可 試 著 對 可 視 的圖 作 解 釋 .另 外 一 種 方 法 , 可 用 函 數 interp1. t=interp1(hours, temps, 9.3) % estimate temperature at hour=9.3t =22.9000 t=interp1(hours
42、, temps, 4.7) % estimate temperature at hour=4.7t =22 t=interp1(hours, temps, 3.2 6.5 7.1 11.7) % find temp at many points!t = 10.2000 30.0000 30.9000 24.9000 interp1的 缺 省 用 法 是 由 interp1(x, y, xo)來描 述 , 這 里 x是 獨 立 變 量 (橫 坐 標 ), y是 應 變 量 (縱 坐標 ), xo是 進 行 插 值 的 一 個 數 值 數 組 .另 外 , 該 缺 省 的使 用 假 定 為 線 性
43、 插 值 . 若 不 采 用 直 線 連 接 數 據 點 , 我 們 可 采 用 某 些 更 光滑 的 曲 線 來 擬 合 數 據 點 .最 常 用 的 方 法 是 用 一 個 3階 多項 式 , 即 3次 多 項 式 , 來 對 相 繼 數 據 點 之 間 的 各 段 建 模 ,每 個 3次 多 項 式 的 頭 兩 個 導 數 與 該 數 據 點 相 一 致 .這 種類 型 的 插 值 被 稱 為 3次 樣 條 或 簡 稱 為 樣 條 .函 數 interp1也 能 執(zhí) 行 3次 樣 條 插 值 . t=interp1(hours, temps, 9.3, spline ) % estima
44、te temperature at hour=9.3t = 21.8577 t=interp1(hours, temps, 4.7, spline ) % estimate temperature at hour=4.7t = 22.3143 t=interp1(hours, temps, 3.2 6.5 7.1 11.7, spline ) t = 9.6734 30.0427 31.1755 25.3820 interp1二 個 強 約 束 :( 1) 人 們 不 能 要 求 有 獨 立 變 量 范 圍 以 外 的 結 果 ,例 如 , interp1(hours, temps, 13.5
45、)導 致 一 個錯 誤 , 因 為 hours在 1到 12之 間 變 化 .( 2) 獨 立 變 量 必 須 是 單 調 的 .即 獨 立 變 量 在 值上 必 須 總 是 增 加 的 或 總 是 減 小 的 . 二 維 插 值 是 基 于 與 一 維 插 值 同 樣 的 基 本 思想 .然 而 , 正 如 名 字 所 隱 含 的 , 二 維 插 值 是 對 兩變 量 的 函 數 z=f(x, y) 進 行 插 值 . 3. 非 線 性 數 據 ( 曲 線 ) 擬 合非 線 性 曲 線 擬 合 是 已 知 輸 入 向 量 xdata和 輸 出 向 量 ydata, 并且 知 道 輸 入 與
46、輸 出 的 函 數 關 系 為 ydata=F(x, xdata), 但 不 知道 系 數 向 量 x.今 進 行 曲 線 擬 合 , 求 x使 得 下 式 成 立 :函 數 lsqcurvefit格 式 x = lsqcurvefit(fun,x0,xdata,ydata)x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)x,resnorm = lsqcurvefit()x,resnorm,residual,exitflag,output,lambda = lsqcurvefit()x,resnorm,residual,exitflag,out
47、put,lambda,jacobian =lsqcurvefit() i 2ii22x )ydata)xdata,x(F(21ydata)xdata,x(F21min resnorm=sum (fun(x,xdata)-ydata).2), 即 在 x處 殘 差的 平 方 和 ;residual=fun(x,xdata)-ydata, 即 在 x處 的 殘 差 ;exitflag為 終 止 迭 代 的 條 件 ;output為 輸 出 的 優(yōu) 化 信 息 ;lambda為 解 x處 的 Lagrange乘 子 ;jacobian為 解 x處 擬 合 函 數 fun的 jacobian矩 陣 .
48、 例 5-8 求 解 如 下 最 小 二 乘 非 線 性 擬 合 問 題已 知 輸 入 向 量 xdata和 輸 出 向 量 ydata, 且 長 度 都 是 n, 擬 合函 數 為即 目 標 函 數 為其 中 :初 始 解 向 量 為 x0=0.3, 0.4, 0.1。 32 )i(xdata)3(x)i(xdatasin()2(x)i(xdata)1(x)i(ydata n1i 2iix )ydata)xdata,x(F(21min 32 xdata)3(x)xdatasin()2(xxdata)1(x)xdata,x(F 解 : 先 建 立 擬 合 函 數 文 件 , 并 保 存 為 m
49、yfun.mfunction F = myfun(x,xdata)F = x(1)*xdata.2 + x(2)*sin(xdata) + x(3)*xdata.3;然 后 給 出 數 據 xdata和 ydataxdata = 3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4;ydata = 16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3;x0 = 10, 10, 10; %初 始 估 計 值x,resnorm = lsqcurvefit(myfun,x0,xdata,ydata)結 果 為 :Opti
50、mization terminated successfully:Relative function value changing by less than OPTIONS.TolFunx = 0.2269 0.3385 0.3021resnorm = 6.2950 4 非 線 性 最 小 二 乘非 線 性 最 小 二 乘 ( 非 線 性 數 據 擬 合 ) 的 標 準 形 式 為 :其 中 : L為 常 數 設則 目 標 函 數 可 表 達 為其 中 : x為 向 量 , F(x)為 函 數 向 量 . L)x(f)x(f)x(f)x(fmin 2m2221x )x(f )x(f )x(f)
51、x(F m21 i 2i22x )x(f21)x(F21min 函 數 lsqnonlin格 式 x = lsqnonlin(fun,x0) %x0為 初 始 解 向 量 ; fun為 ,i=1,2,m, fun返 回 向 量 值 F, 而 不 是 平 方 和 值 , 平 方 和 隱 含在 算 法 中 , fun的 定 義 與 前 面 相 同 .x = lsqnonlin(fun,x0,lb,ub,options) %options為 指 定 優(yōu) 化 參 數 ,若 x沒 有 界 , 則 lb= , ub= .x,resnorm = lsqnonlin() % resnorm=sum(fun(x
52、).2), 即解 x處 目 標 函 數 值 .x,resnorm,residual = lsqnonlin() % residual=fun(x), 即解 x處 fun的 值 . )x(fi 例 5-9 求 下 面 非 線 性 最 小 二 乘 問 題初 始 解 向 量 為 x0=0.3, 0.4。解 : 先 建 立 函 數 文 件 , 并 保 存 為 myfun.m, 由 于 lsqnonlin中的 fun為 向 量 形 式 而 不 是 平 方 和 形 式 , 因 此 , myfun函 數 應 由建 立 : k=1,2,10function F = myfun(x)k = 1:10;F = 2
53、 + 2*k-exp(k*x(1)-exp(k*x(2);然 后 調 用 優(yōu) 化 程 序 :x0 = 0.3 0.4;x,resnorm = lsqnonlin(myfun,x0) x = 0.2578 0.2578resnorm = %求 目 標 函 數 值 124.3622 101k 2xkxk )eek22( 21 實 際 問 題 求 解( 任 務 分 配 問 題 ) 某 車 間 有 甲 、 乙 兩 臺 機 床 , 可 用 于 加 工 三種 工 件 。 假 定 這 兩 臺 車 床 的 可 用 臺 時 數 分 別 為 800和 900, 三種 工 件 的 數 量 分 別 為 400、 60
54、0和 500, 且 已 知 用 三 種 不 同 車床 加 工 單 位 數 量 不 同 工 件 所 需 的 臺 時 數 和 加 工 費 用 如 下 表 。問 怎 樣 分 配 車 床 的 加 工 任 務 , 才 能 既 滿 足 加 工 工 件 的 要 求 ,又 使 加 工 費 用 最 低 ? 654321 8121110913min xxxxxxz 6,2,1,0 9003.12.15.0 8001.14.0 500600400 x . 654 321 63 52 41 ix xxx xxx xx xx xts i 解 設 在 甲 車 床 上 加 工 工 件 1、 2、 3的 數 量 分 別 為
55、x1、 x2、x3, 在 乙 車 床 上 加 工 工 件 1、 2、 3的 數 量 分 別 為 x4、 x5、 x6。可 建 立 以 下 線 性 規(guī) 劃 模 型 : f = 13 9 10 11 12 8;A = 0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3;b = 800; 900;Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1;beq=400 600 500;vlb = zeros(6,1);vub=;x,fval = linprog(f,A,b,Aeq,beq,vlb,vub)程 序 詳 解 : 見 example5.m The end
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。