实现Newton-Raphson迭代方法

时间:2011-02-25 00:21:09

标签: matlab numerical-methods newtons-method

我正在尝试使用Newton Raphson迭代实现后向Euler方案。我理解,每次迭代时,都会进行初始猜测,计算残差并求解变化。在我的情况下,改变是del w。之后我知道要将值添加到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

1 个答案:

答案 0 :(得分:0)

有些东西很奇怪,一阶ODE的格式为dy / dt = f(t,y)但你有w,v,t,m和n。

您正在将时间间隔(0,T)内的解决方案计算到具有恒定步长h的分区中:

t0 = 0;      tk = hk;      tn = T

对于此

Backward Euler

尝试实现你的牛顿方法(使用上面的while条件)来解决上面的单独函数,然后通过步骤将它集成到你的euler中

1到n,其中n = Tmax / h。