一阶常微分方程数值求解公式
一阶常微分方程初值问题的标准写法是:
dy/dx = f(x, y),且给定初值 y(x₀) = y₀
其中 f(x, y) 是你输入的方程右端(例如 -2*y + x、y*(1 - y))。求解的目标,是找出一条过点 (x₀, y₀)、斜率处处等于 f(x, y) 的曲线 y(x)。
本工具采用**四阶龙格-库塔法(RK4)**做数值积分,递推公式为:
k₁ = f(xₙ, yₙ)
k₂ = f(xₙ+h/2, yₙ+h·k₁/2)
k₃ = f(xₙ+h/2, yₙ+h·k₂/2)
k₄ = f(xₙ+h, yₙ+h·k₃)
yₙ₊₁ = yₙ + h·(k₁ + 2k₂ + 2k₃ + k₄) / 6
xₙ₊₁ = xₙ + h
这个微分方程求解器能做什么
- 求解任意可写成
dy/dx = f(x, y)的一阶常微分方程初值问题(线性、非线性均可)。 - 支持自然数学写法:
sin cos tan exp log sqrt pow abs、常量pi、e,变量x、y,幂用^或pow。 - 输出三部分:解曲线图、数值采样表、完整 JSON 数据,可直接复制用于论文、报告或下游程序。
- 内置 6 个经典方程示例(线性衰减、逻辑斯蒂增长、强迫振动、抛物线型、指数驱动、乘积型),一键填充。
- 全程在浏览器本地计算,不上传任何数据,隐私安全。
怎么使用(输入说明)
- 在「方程 dy/dx = f(x, y)」框里输入右端 f(x, y),例如
-2*y + x。 - 填写
x₀(初始点)、y₀ = y(x₀)(初值)、x_end(求解终点)、h(步长,必须 > 0)。 - 结果实时计算,无需点击。点击示例库按钮可快速载入经典方程。
- 步长越小越精确,但点数越多;推荐
h在 0.01 ~ 0.1 之间。步数超过 2000 会提示优化。
注意:乘法必须显式写
*,例如2*y不能写成2y;这与大多数编程语言一致。
RK4 四阶龙格-库塔公式详解
龙格-库塔法的思想是:在每个步长内,不只看当前点的斜率(那是欧拉法),而是在区间中点取两次斜率、在端点取一次斜率,再加权平均,从而得到远高于欧拉法的精度。
- 欧拉法:局部截断误差 O(h²),误差随步数累积很快。
- RK4:局部截断误差 O(h⁵),全局误差约 O(h⁴),在同样步长下精度高出一个数量级。
对绝大多数没有解析解的非线性方程,RK4 是工程与科研里性价比最高的默认选择:实现简单、稳定、精度足够。
计算实例
以方程 dy/dx = -2*y + x、初值 y(0) = 1、区间 [0, 2]、步长 h = 0.05 为例,部分数值解如下:
| x | y(x) |
|---|---|
| 0.00 | 1.00000000 |
| 0.15 | 0.75102303 |
| 0.30 | 0.58601492 |
| 0.45 | 0.48321249 |
| 0.60 | 0.42649317 |
| 0.75 | 0.40391308 |
| 0.90 | 0.40662395 |
| 1.05 | 0.42807083 |
| 1.20 | 0.46339769 |
| 1.35 | 0.50900710 |
| 1.50 | 0.56223400 |
| 1.65 | 0.62110410 |
| 2.00 | 0.77289463 |
可以看到 y 先从 1 下降、在约 x≈0.8 处触底(≈0.402),随后缓慢回升——这正是受迫线性衰减的典型形态。点上方「微分方程求解器」即可输入同样的参数复现。
常见问题 FAQ
Q:RK4 一定能收敛到真解吗? 对满足 Lipschitz 条件的常规方程,RK4 稳定收敛;但若方程本身刚性很强(解在短时间内剧烈变化),需要更小的步长或专门的刚性求解器。
Q:为什么有时结果会“发散”到无穷?
例如逻辑斯蒂方程若初值/区间设置极端,或方程本身解就在有限时间内爆破(如 y' = y² 且 y₀>0),数值解会如实反映这种发散,这是方程性质而非工具错误。
Q:能解二阶或偏微分方程吗? 本工具专注一阶常微分方程初值问题。二阶方程可手动降阶为两个一阶方程的方程组后再逐段求解;偏微分方程(PDE)超出本工具范围。
Q:和符号计算软件(如 Mathematica)的区别? 符号软件能给出闭式解析解,但仅对少数特殊方程可行;本工具做的是数值解,覆盖几乎所有一阶 ODE,并以曲线和表格直观呈现,适合验证、教学与工程快速仿真。