-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