📄 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 + -