date
slug
status
tags
summary
type
前言
科学计算中常遇到一阶微分方程的初值问题:
$$ y' = f(x,y), x\in[x_0,b],\\ y(x_0) = y_0. $$
以下介绍几种常用方法
欧拉法
公式
经过推导可以得到公式
$y_{n+1} = y_n+hf(x_n,y_n)$
代码
matlab代码如下
eular.m
改进欧拉公式
公式
经过推导可以得到公式
$$ y_p = y_n+hf(x_n,y_n),\\ y_c = y_n+hf(x_{n+1},y_p), \\ y_{n+1} = \frac{1}{2}(y_p+y_c). $$
代码
matlab代码如下
improved_eular.m
四阶龙格-库塔法(RK)
公式
$$ y_{n+1} = y_n+\frac{h}{6}(K_1+2K_2+2K_3+K_4),\\ K_1 = f(x_n,y_n),\\ K_2 = f(x_n+\frac{h}{2},y_n+\frac{h}{2}K_1),\\ K_3 = f(x_n+\frac{h}{2},y_n+\frac{h}{2}K_2),\\ K4 = f(x_n+h,y_n+hK_3). $$
代码
RK_4.m
项目地址
本文代码已上传至GitHub
- 作者:Steven Lynn
- 链接:https://blog.stv.lol/article/initial-value-problem-differential-equations-matlab-code
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章