資源簡介
初學者適用的黃金分割法MATLAB程序,此程序為自定義函數程序,需要下載者自己寫主函數,特別需要注意的是本程序中含有顯示迭代過程的畫圖程序建議先注釋掉。
代碼片段和文件信息
function?[best_xbest_y]?=?golddiv(yxabepsilon)
%?本函數實現黃金分割算法
%?y是目標函數?x是自變量?ab為區間范圍?epsilon為精度
%?best_x為黃金分割算法找到的最優點
%?best_y為最優點處的函數值
if?nargin?==?4?????????%如果輸入參數沒有精度要求(輸入只有4個參數)
???epsilon?=?0.001;????%設置默認的epsilon
end
x1?=?b-0.618*(b-a);???%計算插入點1
y1?=?subs(y?x?x1);??%函數y中的x替換為x1
x2?=?a+0.618*(b-a);???%計算插入點1
y2?=?subs(y?x?x2);??%函數y中的x替換為x2
n?=?1;
Str=[num2str(n)];
plot(x1y1‘bo‘);
plot(x2y2‘bo‘);
text(x1y1+0.5Str‘fontsize‘12‘color‘‘red‘);
text(x2y2+0.5Str‘fontsize‘12‘color‘‘red‘);
????????
while(abs((b-a)/b)>=epsilon&&abs((y2-y1)/y2)>=epsilon)??
????if?y1 ????????n?=?n?+?1;
????????
????????b?=?x2;???????????%b為新的右邊界
????????x2?=?x1;??????????%更新x2值
????????y2?=?y1;
????????x1?=?b-0.618*(b-a);%更新x1值
???
- 上一篇:直流微網模型
- 下一篇:K means clustering algorithm
評論
共有 條評論