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

Euler法

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

使用f(xi,yi)线性组合得到y(xi+1)的近似值yi+1

  • 欧拉法:每步计算1次f(xi,yi),为一阶方法,误差为O(h2)
  • 改进欧拉法:每步计算2次f(xi,yi),为二阶方法,误差为O(h3)

Runge-Kutta法

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

一阶Runge-Kutta法:

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

二阶Runge-Kutta法:

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

四阶经典龙格-库塔格式

应用实例,定步长

{dydx=2xy,0<x<1y(0)=1

显然解析解:y=ex2

令斜率y=f(x,y)=2xyx0=0,y0=1,h=0.2

k1=f(x0,y0)=0
k2=f((x0+h)/2,y0+hk1/2)=f(0.1,1)=0.2
k3=f((x0+h)/2,y0+hk2/2)=f(0.1,1.02)=0.204
k4=f(x0+h,y0+hk3)=f(0.2,1.0408)=0.41632

x1=x0+h=0+0.2=0.2
y1=y0+(k1+2k2+2k3+k4)0.2/6=1.040811
e0.22=1.04081077419

Adams 亚当姆斯法

将已知节点值加权平均

作者:invo

出处:https://www.cnblogs.com/invo/p/18594565

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Invo1  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示