跳到主要内容

微分方程求解器

一阶常微分方程 RK4 数值解

支持 sin cos tan exp log sqrt pow abs 与常量 pi、e,变量 x、y;乘法需显式写*,幂用^pow

常用方程示例库(点击一键填充):

共计算 41 个点终点 y(2) = 0.77289463y 范围:0.40237101 ~ 1

解曲线 y(x)

021

数值采样表(均匀间隔,仅展示部分节点)

xy(x)
01
0.10.82341363
0.20.68790036
0.30.58601492
0.40.51166161
0.550.44108927
0.650.41566514
0.750.40391308
0.850.40335476
0.950.4119611
1.050.42807083
1.150.45032382
1.250.47760648
1.350.5090071
1.450.54377921
1.60.6009529
1.70.64171672
1.80.68415476
1.90.72796356
20.77289463

完整 41 个节点见下方 JSON。

求解数据(JSON)

展开查看
{
  "solver": "RK4 (四阶龙格-库塔)",
  "equation": "-2*y + x",
  "initial": {
    "x0": 0,
    "y0": 1
  },
  "step_size": 0.05,
  "points_count": 41,
  "sampled_data": [
    {
      "x": 0,
      "y": 1
    },
    {
      "x": 0.05,
      "y": 0.906046875
    },
    {
      "x": 0.1,
      "y": 0.8234136267578125
    },
    {
      "x": 0.15000000000000002,
      "y": 0.7510230275014722
    },
    {
      "x": 0.2,
      "y": 0.6879003611468634
    },
    {
      "x": 0.25,
      "y": 0.633163668029225
    },
    {
      "x": 0.3,
      "y": 0.5860149179703938
    },
    {
      "x": 0.35,
      "y": 0.5457320233390363
    },
    {
      "x": 0.39999999999999997,
      "y": 0.5116616121680352
    },
    {
      "x": 0.44999999999999996,
      "y": 0.48321248900009456
    },
    {
      "x": 0.49999999999999994,
      "y": 0.4598497180156231
    },
    {
      "x": 0.5499999999999999,
      "y": 0.44108926922496133
    },
    {
      "x": 0.6,
      "y": 0.42649317414234095
    },
    {
      "x": 0.65,
      "y": 0.41566514245802044
    },
    {
      "x": 0.7000000000000001,
      "y": 0.4082465958388591
    },
    {
      "x": 0.7500000000000001,
      "y": 0.40391307916234365
    },
    {
      "x": 0.8000000000000002,
      "y": 0.4023710132665571
    },
    {
      "x": 0.8500000000000002,
      "y": 0.4033547567165784
    },
    {
      "x": 0.9000000000000002,
      "y": 0.406623947180537
    },
    {
      "x": 0.9500000000000003,
      "y": 0.41196109580696916
    },
    {
      "x": 1.0000000000000002,
      "y": 0.4191694105272385
    },
    {
      "x": 1.0500000000000003,
      "y": 0.42807082649794015
    },
    {
      "x": 1.1000000000000003,
      "y": 0.43850422397132993
    },
    {
      "x": 1.1500000000000004,
      "y": 0.4503238157576583
    },
    {
      "x": 1.2000000000000004,
      "y": 0.46339768814062016
    },
    {
      "x": 1.2500000000000004,
      "y": 0.4776064806429384
    },
    {
      "x": 1.3000000000000005,
      "y": 0.4928421914287548
    },
    {
      "x": 1.3500000000000005,
      "y": 0.509007096386916
    },
    {
      "x": 1.4000000000000006,
      "y": 0.5260127710769962
    },
    {
      "x": 1.4500000000000006,
      "y": 0.5437792057493815
    },
    {
      "x": 1.5000000000000007,
      "y": 0.562234004582256
    },
    {
      "x": 1.5500000000000007,
      "y": 0.5813116611211971
    },
    {
      "x": 1.6000000000000008,
      "y": 0.6009529026697512
    },
    {
      "x": 1.6500000000000008,
      "y": 0.621104097069441
    },
    {
      "x": 1.7000000000000008,
      "y": 0.6417167159320704
    },
    {
      "x": 1.7500000000000009,
      "y": 0.6627468489521847
    },
    {
      "x": 1.800000000000001,
      "y": 0.6841547644387724
    },
    {
      "x": 1.850000000000001,
      "y": 0.7059045116678678
    },
    {
      "x": 1.900000000000001,
      "y": 0.7279635610762744
    },
    {
      "x": 1.950000000000001,
      "y": 0.7503024786953535
    },
    {
      "x": 2.000000000000001,
      "y": 0.772894631566507
    }
  ],
  "final_point": {
    "x": 2.000000000000001,
    "y": 0.772894631566507
  }
}

所有计算均在浏览器本地完成,不会上传任何数据。

一阶常微分方程数值求解公式

一阶常微分方程初值问题的标准写法是:

dy/dx = f(x, y),且给定初值 y(x₀) = y₀

其中 f(x, y) 是你输入的方程右端(例如 -2*y + xy*(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、常量 pie,变量 xy,幂用 ^pow
  • 输出三部分:解曲线图数值采样表完整 JSON 数据,可直接复制用于论文、报告或下游程序。
  • 内置 6 个经典方程示例(线性衰减、逻辑斯蒂增长、强迫振动、抛物线型、指数驱动、乘积型),一键填充。
  • 全程在浏览器本地计算,不上传任何数据,隐私安全。

怎么使用(输入说明)

  1. 在「方程 dy/dx = f(x, y)」框里输入右端 f(x, y),例如 -2*y + x
  2. 填写 x₀(初始点)、y₀ = y(x₀)(初值)、x_end(求解终点)、h(步长,必须 > 0)。
  3. 结果实时计算,无需点击。点击示例库按钮可快速载入经典方程。
  4. 步长越小越精确,但点数越多;推荐 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,并以曲线和表格直观呈现,适合验证、教学与工程快速仿真。

常见问题

什么是微分方程初值问题?
给定一个方程 dy/dx = f(x, y) 和起点 (x₀, y₀),求 y 随 x 变化的函数。初值条件 y(x₀)=y₀ 唯一确定了数值解的路径。
RK4 是什么?精度如何?
四阶龙格-库塔法(Runge-Kutta),局部截断误差为 O(h⁵),是工程与科研中最常用的高精度数值积分方法,比欧拉法稳定且精确得多。
步长 h 应该怎么选?
步长越小精度越高,但采样点越多、计算越慢。推荐 h 在 0.01~0.1 之间;若步数超过 2000 本工具会提示优化。解变化剧烈时可适当减小 h。
为什么很多方程没有解析解?
只有少数特殊形式(可分离变量、线性、恰当方程等)能写出闭式解。多数非线性方程没有解析解,数值解(如 RK4)是唯一可行的途径,也能画出解曲线直观观察。