2011-02-25 54 views
1

我試圖使用牛頓拉夫遜迭代實現後向歐拉方案。我明白每次迭代都會進行初步猜測,計算殘差並解決變化。在我的情況下,更改是德爾瓦。之後,我知道將值添加到w^m並在接下來的m次迭代中獲得w的更新值。我知道在迭代繼續時檢查解決方案的收斂性。我遇到的問題是如何將時間步長dt實現爲t = 0:Tmax/dt,其中Tmax是10.我對時間步進是如何進來感到困惑。我一直在試圖找出一個儘管如此,任何幫助將不勝感激。謝謝!實現牛頓 - 拉夫遜迭代法

while Rw(m)>10^-6  % Convergence condition 
    drdw(m)=(1-2*dt+2*t(n+1)^2*w(m)*dt); 
    Dw(m)=Rw(m)\drdw(m); %Inverse 
    w(m+1)=w(m)+Dw(m); %Newton method 
    Rw(m+1)=(-(w(m)-v(1)-2*w(m)*dt+t(n+1)^2*w(m)^2*dt)); %New Residual value 
    if Rw(m+1)>10^-6 %Check on the level of convergence 
     m=m+1; 
    else 
     Rw=1; % I was thinking I should make the Residual 1 for the next time step. 
     break 

    end 

回答

0

東西是在有奇怪,一個第一順序ODE是形式DY/DT = F(T,Y)的又你有W,V,T,m和n。

您正在計算在時間間隔(0,T)的溶液與恆定步長h的分區:

t0 = 0;  tk = hk;  tn = T 

對於本

Backward Euler

嘗試執行牛頓法(如上所述使用while條件)來解決上述問題作爲單獨的函數,然後通過步驟

將其集成到您的歐拉3210

1至n其中n = Tmax/h。

+0

我應該提到,我試圖通過首先線性化它來解決二階ODE。這就是爲什麼我在等式中有R,W和m的原因。 v,t,n來自原始設置。 – ykmizu 2011-02-25 01:36:28