Armijo准则实例及MATLAB代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
matlab代码 x=linspace(0,15);
y=(x-1).(x-3).(x-9).(x-12);
plot(x,y);%画函数图像
%将坐标轴平移到原点
ax = gca;
ax.XAxisLocation = ‘origin’;
ax.YAxisLocation = ‘origin’;
%将坐标轴平移到原点
xlabel(‘x’);
ylabel(‘y’);
hold on;
syms X F X0 X1 alpha beta m sigma g d;
m=0;beta=0.5;sigma=0.2;%设置Armijo准则的步长alpha、beta、m、sigma
F=@(X)(X-1)
(X-3)(X-9)(X-12);
X0=4;
Y0=double(F(X0));
plot(X0,Y0,‘‘);%画初始迭代点的位置
hold on;
%求在迭代点的梯度g
g=jacobian(F,X)’;
g=double(subs(g,X,X0));
%求在迭代点的搜索方向d
d=-1
jacobian(F,X)’;
d=double(subs(d,X,X0));
while m <= 20 %限制步长不要太小
alpha = beta^m;%步长迭代公式,当m=0时,步长为1;
X1 = X0 + alphad;%下一个迭代点更新公式
Y1=double(F(X1));
if Y1 <= Y0+sigma
(beta^m)*g’*d %armijo准则条件
break;
else
m=m+1;
end
end
hold on;
plot(X1,Y1,‘+’);
alpha

alpha =

0.0156

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值