我正在尝试使用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
答案 0 :(得分:0)
有些东西很奇怪,一阶ODE的格式为dy / dt = f(t,y)但你有w,v,t,m和n。
您正在将时间间隔(0,T)内的解决方案计算到具有恒定步长h的分区中:
t0 = 0; tk = hk; tn = T
对于此
尝试实现你的牛顿方法(使用上面的while条件)来解决上面的单独函数,然后通过步骤将它集成到你的euler中
1到n,其中n = Tmax / h。