我为牛顿算法编写了以下代码,通过使用两个不同的起点来最小化错误。它们不应该在误差函数轮廓的椭圆的主轴上。
R=[0.5 -0.25;-0.25 0.5];
P=[0;-0.866];
Pt=transpose(P);
Rinv=[2.67 1.33;1.33 2.67];
M=6; %number of iterations
mu=1/2; %step size
for k=1:M
W(1)=1.16; %initial weight value
W(2)=2.32;
G(k)=2*R*W(k)-2*P;
end
for k=2:M
W(1)=1.16;
W(2)=2.32;
W(k+1)=W(k)-mu*Rinv*G(k);
end
for k=1:M
Wtrans(k)=trans(W(k));
E(k)=Wtrans(k)*R*W(k)-2*Pt*W(k)+2; % error function.
end
plot(E(k));
有人可以告诉我这段代码有什么问题吗?我无法策划它!
答案 0 :(得分:0)
当你到达代码的最后一行时,k不是1:M就像你想的那样,而只是标量值M.做绘图(E)而不是绘图(E(k))