-2
我已经为牛顿算法编写了下面的代码,通过使用两个不同的起点来最小化错误。它们不应该在误差函数等值线的椭圆的主轴上。使用Matlab的牛顿法
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));
有人可以让我让这个代码有什么问题吗?我无法策划它!
我试着..我仍然无法绘制它! – Renee 2013-02-16 04:18:49
我运行了你的代码。在您尝试绘制之前,您没有提到您有错误。第10行(G(k)= 2 * R * W(k)-2 * P)失败:R * W(k)是一个2x2矩阵,您试图减去2x1向量。尺寸不一致。代码中还有更多错误(例如,即使使用该值,也不会为k> 2定义W(k))。您必须逐个解决您的错误,理解来自MATLAB的错误消息,并使用whos来打印您操作的所有变量的尺寸以了解错误。但是当你到达最后,你会想要绘制(E),而不是绘制(E(k))。 – Lolo 2013-02-16 05:35:51
我建议你接受这个答案,如果你无法解决我提到的这些错误之一,你会打开关于那个特定错误的另一个问题,包括你从MATLAB获得的错误信息,以及错误信息为什么没有意义您。 – Lolo 2013-02-16 05:37:23