Loading

微分方程数值解法1-Euler法和Runge-Kutta法

Euler法

欧拉法为一阶泰勒展开逼近局部函数(隐式方程),通过调整步长不断靠近零点

使用\(f(x_i,y_i)\)线性组合得到\(y(x_{i+1})\)的近似值\(y_{i+1}\)

  • 欧拉法:每步计算1次\(f(x_i,y_i)\),为一阶方法,误差为\(O(h^2)\)
  • 改进欧拉法:每步计算2次\(f(x_i,y_i)\),为二阶方法,误差为\(O(h^3)\)

Runge-Kutta法

Runge-Kutta法要求解析解具有较好的光滑性

一阶Runge-Kutta法:

  • 利用一阶欧拉法思想,每步计算区间\(【x_i,x_{i+1}】\)内多个点的斜率值,然后将其加权平均作为平均斜率,也不必计算更高阶的泰勒项

二阶Runge-Kutta法:

  • 对改进欧拉法的进一步改进,满足一定条件的计算格式簇统称为二阶龙格-库塔格式,其包含改进欧拉法

四阶经典龙格-库塔格式

应用实例,定步长

\(\left\{\begin{matrix} \frac {d^y}{dx} =2xy, &0<x<1\\y(0)=1 &\end{matrix}\right.\)

显然解析解:\(y=e^{x^2}\)

令斜率\(y'=f(x,y)=2xy\)\(x_0=0,y_0=1,h=0.2\)

\(k_1=f(x_0,y_0)=0\)
\(k_2=f((x_0+h)/2,y_0+hk_1/2)=f(0.1,1)=0.2\)
\(k_3=f((x_0+h)/2,y_0+hk_2/2)=f(0.1,1.02)=0.204\)
\(k_4=f(x_0+h,y_0+hk_3)=f(0.2,1.0408)=0.41632\)

\(x_1=x_0+h=0+0.2=0.2\)
\(y_1=y_0+(k_1+2k_2+2k_3+k_4)*0.2/6=1.040811\)
\(e^{0.2^2}=1.04081077419\)

Adams 亚当姆斯法

将已知节点值加权平均

posted @ 2024-12-09 11:48  Invo1  阅读(325)  评论(0)    收藏  举报