[繪圖] 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