?? jidaidianzi.m
字號:
% mg0523073 梅益君
%求min(x1^2+x2^2) 條件:1-x1-x2<=0,
x1=1; %定義x1初始值
x2=1; %定義x2初始值
ck=10; %給出罰參數的初始值
n1=100000; %給出罰函數法最大迭代次數
n2=100000; %梯度下降法最大迭代次數
a=1.0e-7; %罰函數法誤差界
b=1.0e-7; %梯度下降法誤差界
step=0.0004; %梯度下降法步長
for i=1:n1
pc=ck*(max(1-x1-x2,0))^2; %構造罰函數
fc=x1^2+x2^2+pc; %構造增廣目標函數
for j=1:n2
if pc==0 %計算梯度(最大為0)
daofcx1=2*x1; %x1的偏導
daofcx2=2*x2; %x2的偏導
else
daofcx1=2*x1-ck*2*(1-x1-x2); %計算梯度(最小為0)
daofcx2=2*x2-ck*2*(1-x1-x2);
end
if (abs(daofcx1)<b)&(abs(daofcx2)<b) %梯度值滿足條件,則結束迭代
break;
end
x1=x1+step; %調整x1,x2,為下次迭代做準備
x2=x2+step;
end
if (max(1-x1-x2,0))^2<a %x1,x2滿足條件
break; %結束迭代
end
ck=ck*10; %調整罰參數
end
x1 %輸出結果x1,x2
x2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -