資源簡介
這是我根據(jù)《現(xiàn)代設(shè)計(jì)理論方法(第二版)》38頁中的鮑威爾法理論,基于MATLAB寫出的源代碼,其中一維搜索極小點(diǎn)函數(shù)借鑒于《https://me.csdn.net/shenziheng1》該博主的算法。
代碼片段和文件信息
%%?一維搜索函數(shù):采用黃金分割法?%%
function?[ExtremePosExtremeVal]?=?OneDimensionSearch(x1Direrr)
%?從X0點(diǎn)開始進(jìn)行搜索
%?Dir:搜索的方向。
%?err:黃金分割的停止搜索的精度。
%?返回最優(yōu)值ExtremeVal,以及最優(yōu)值對應(yīng)的點(diǎn)ExtremePos
%%?------------------------Step1:進(jìn)退法確定區(qū)間------------------------------
%計(jì)算x1前進(jìn),計(jì)算x2
y1?=?TextF(x1);
x2?=?x1+Dir;????%向下一個變量搜索,采用加速步長,初始步長為1
y2?=?TextF(x2);
%?確定沿該坐標(biāo)方向得到的目標(biāo)函數(shù)值是否是下降還是上升
if?y1?????Dir?=?-Dir;
????temp?=?x1;
????x1?=?x2;
????x2?=?temp;
????x3?=?x2+Dir;
????y3?=?TextF(x3);
else???????????????%?得到的目標(biāo)函數(shù)值下降,繼續(xù)沿該維向前搜索
????Dir?=?2*Dir;
????x3?=?x2+Dir;
????y3?=?TextF(x3);
end
%初步確定極小值所在的大致區(qū)間
while(1)?
????if?(y2<=y3)?%判斷極小值所在的區(qū)間大致范圍
????????a?=?min(x1x3);
????????b?=?max(x1x3);
????????break;
????else????????%以步長為1,沿Dir方向向前搜索,一直到函數(shù)值出現(xiàn)上升的時候
????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1771??2019-03-27?15:32??修正鮑威爾法源代碼\OneDimensionSearch.m
?????文件???????2702??2019-03-28?09:10??修正鮑威爾法源代碼\PowellMethod.m
?????文件????????122??2019-03-27?09:08??修正鮑威爾法源代碼\TextF.m
?????目錄??????????0??2019-03-28?09:11??修正鮑威爾法源代碼
-----------?---------??----------?-----??----
?????????????????4595????????????????????4
評論
共有 條評論