[绘图] matlab梯度下降法 轨迹

楼主: Capital235   2017-06-21 21:01:39
上次问过
没结果
这次贴一下程式
clear
x1=0.5; %x1初始值
x2=0.5; %x2初始值
alpha=0.01; %学习率
for i=1:1350
ax=[0.5 zeros(1,1350)];
bx=[0.5 zeros(1,1350)];
gradFx1=2*x1+2*x2+1; %计算x1梯度
gradFx2=2*x1+4*x2; %计算x2梯度
y1=x1-alpha*gradFx1; %x1迭代
y2=x2-alpha*gradFx2; %x2迭代
ax(i+1)=y1;
bx(i+1)=y2
x1=y1;
x2=y2;;
end
x1,x2
F=x1.^2+2*x2.^2+2*x1.*x2+x1+1
x=-2:0.1:2;
y=x;
[x1 x2]=meshgrid(x,y);
z=x1.^2+2*x2.^2+2*x1.*x2+x1+1;
contour(x1,x2,z)
plot(ax(:,1),bx(:,2),'r')
hold off
要画出如
梯度法的迭代路径
可是画不出来只有等高图
有人知道错哪吗
作者: sin55688 (单手挑藏獒)   2017-06-21 22:53:00
少了 hold on ? 放在 contour 之后

Links booklink

Contact Us: admin [ a t ] ucptt.com