date
slug
status
tags
type
类型
summary

前言

科学计算中常遇到一阶微分方程的初值问题:
$$ 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
相关文章
一道小学数学题引发的思考数学建模-优劣解距离法(TOPSIS)
Loading...
Steven Lynn
Steven Lynn
喂马、劈柴、周游世界
最新发布
我与 Dify 的半年
2025-3-9
我的2022年终小结
2024-11-9
记录雅思考试经历与一点学习心得
2024-11-9
Hackergame 2024 思路小结
2024-11-9
黑客松、日本、入职:我的2024下半年的总结
2024-11-9
NotionNext:基于Notion和NextJS的开源博客
2024-11-9