對(duì)分法求解目標(biāo)函數(shù)最優(yōu)解函數(shù)MATLAB實(shí)現(xiàn)(共4頁(yè))_第1頁(yè)
對(duì)分法求解目標(biāo)函數(shù)最優(yōu)解函數(shù)MATLAB實(shí)現(xiàn)(共4頁(yè))_第2頁(yè)
對(duì)分法求解目標(biāo)函數(shù)最優(yōu)解函數(shù)MATLAB實(shí)現(xiàn)(共4頁(yè))_第3頁(yè)
對(duì)分法求解目標(biāo)函數(shù)最優(yōu)解函數(shù)MATLAB實(shí)現(xiàn)(共4頁(yè))_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、%對(duì)分法求解目標(biāo)函數(shù)最優(yōu)解函數(shù)function t,y= equation_extremum (x,a,b,epsional)%=%函數(shù)默認(rèn)參數(shù):%x為目標(biāo)函數(shù),輸入字符串型,默認(rèn)最優(yōu)解求其最小值%a,b為其初始區(qū)間,默認(rèn)閉區(qū)間,a<b%對(duì)初始區(qū)間的要求:初始區(qū)間是單谷區(qū)間,函數(shù)求極小值%則a處的導(dǎo)數(shù)<=0,b處的導(dǎo)數(shù)>=0;%=syms t;x_inline=inline(sym(x);func_diff=diff(sym(x);func_diff_inline=inline(func_diff);t=b;high_value=func_diff_inline(t);t=a

2、;low_value=func_diff_inline(t);if high_value*low_value>0 t='本函數(shù)不可解' y='給定初始區(qū)間非單谷區(qū)間'else if high_value*low_value=0 if high_value=0 t=b; y=x_inline(t); else t=a; y=x_inline(t); end else while abs(high_value-low_value)>=epsional; c=1/2*(b+a); t=c; middle_value=func_diff_inline(t);

3、 if middle_value>0 high_value=middle_value; b=c; else if middle_value<0 low_value=middle_value; a=c; else if middle_value=0 break; end end end end c=1/2*(b+a); t=c; y=x_inline(t); endend運(yùn)行代碼:%=close all;clear all;clc;%目標(biāo)函數(shù)syms t;t,y=equation_extremum('t*(t-3)',t,-3,5,0.1);disp(t,y);運(yùn)行結(jié)

4、果:t=1.5y=-2.25%拋物線法求函數(shù)最優(yōu)解function t,y=parabola_extremum(x,t1,t2,epsional)%=%函數(shù)默認(rèn)參數(shù):%x為目標(biāo)函數(shù),輸入字符串型,例如:'x2-sin(x)'默認(rèn)最優(yōu)解求其最小值%a,b為其初始區(qū)間,默認(rèn)閉區(qū)間,t1<t2%對(duì)初始區(qū)間的要求:初始區(qū)間是單谷區(qū)間,函數(shù)求極小值%=syms t;x_inline=inline(sym(x);%生成隨機(jī)數(shù)求出t0;high_value=x_inline(t2);low_value=x_inline(t1);t0=parabola_overture(x,t,t1,t

5、2);%自定義函數(shù),試探法求t0middle_value=x_inline(t0);%擬合曲線,待定系數(shù)法%p(t0)=a0+a1*t0+a2*t02=f(t0)%p(t1)=a0+a1*t1+a2*t22=f(t1)%p(t2)=a0+a1*t2+a2*t22=f(t2)%推出:%a1=(t02-t22)*f(t1)+(t22-t12)*f(t0)+(t12-t02)*f(t2)/(t1-t0)*(t0-t2)*(t2-t1)%a2=(t0-t2)*f(t1)+(t2-t1)*f(t0)+(t1-t0)*f(t2)/(t1-t0)*(t0-t2)*(t2-t1)while 1t_ba=0.5

6、*(t02-t22)*low_value+(t22-t12)*middle_value+(t12-t02)*high_value)/(t0-t2)*low_value+(t2-t1)*middle_value+(t1-t0)*high_value);t_ba_value=x_inline(t_ba);if abs(t_ba-t0)<epsional t=t_ba; y=t_ba_value; break;else if t_ba>t0 if t_ba_value<=middle_value t1=t0; t0=t_ba; low_value=middle_value; mid

7、dle_value=t_ba_value; else t2=t_ba; high_value=t_ba_value; end else if t_ba_value<=middle_value t2=t0; t0=t_ba; high_value=middle_value; middle_value=t_ba_value; else t1=t_ba; low_value=t_ba_value; end endenddisp(t1,t0,t2;low_value,middle_value,high_value)end%試探法求函數(shù)低點(diǎn)值,用于拋物線插值法function t0=parabol

8、a_overture(x,a,b)%=%函數(shù)默認(rèn)參數(shù):%x為目標(biāo)函數(shù),輸入字符串型,例如:'x2-sin(x)'%a,b為其初始區(qū)間,默認(rèn)閉區(qū)間,a<b%對(duì)初始區(qū)間的要求:初始區(qū)間是單谷區(qū)間,函數(shù)求極小值%=syms t;x_inline=inline(sym(x);%生成隨機(jī)數(shù)求出t0;rand_t0=rand(1,10);high_value=x_inline(b);low_value=x_inline(a);middle_value=x_inline(rand_t0(1);k=1;while middle_value>high_value|middle_value>low_value k=k+1; middle_value=x_inline(rand_t0(k); if k>50 printf('請(qǐng)重新運(yùn)行程序'); break; endendt0=rand_t0(k);運(yùn)行代碼:close all;clear all;clc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論