2013-02-16 165 views
-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)); 

有人可以讓我讓這個代碼有什麼問題嗎?我無法策劃它!

回答

0

當你到達你的代碼的最後一行,k是不是1:像你米認爲,只是簡單標量值M.待辦事項圖(E),而不是圖(E(K))

+0

我試着..我仍然無法繪製它! – Renee 2013-02-16 04:18:49

+0

我運行了你的代碼。在您嘗試繪製之前,您沒有提到您有錯誤。第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

+0

我建議你接受這個答案,如果你無法解決我提到的這些錯誤之一,你會打開關於那個特定錯誤的另一個問題,包括你從MATLAB獲得的錯誤信息,以及錯誤信息爲什麼沒有意義您。 – Lolo 2013-02-16 05:37:23