使用Matlab的牛顿法

时间:2013-02-16 01:26:36

标签: 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));

有人可以告诉我这段代码有什么问题吗?我无法策划它!

1 个答案:

答案 0 :(得分:0)

当你到达代码的最后一行时,k不是1:M就像你想的那样,而只是标量值M.做绘图(E)而不是绘图(E(k))