1

我正在尝试使用 Newton Raphson 迭代来实现反向欧拉方案。我知道每次迭代都会进行初始猜测,计算残差并解决变化。就我而言,变化是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
4

1 回答 1

0

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

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

t0 = 0;      tk = hk;      tn = T

为了这

后向欧拉

尝试实现你的牛顿方法(使用上面的while条件)将上述问题作为一个单独的函数来解决,然后通过这些步骤将它集成到你的欧拉中

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

于 2011-02-25T01:17:46.013 回答