这个计算器能做什么
本工具用于数值求解形如 \(y' = F(x, y)\) 的一阶常微分方程,给定初始条件 \(y(x_0) = y_0\),并在 \(x_0\) 到 \(x_n\) 的区间上进行积分。它采用经典的四阶龙格-库塔法(RK4),这是数值分析中应用最广、最可靠的单步法之一。计算结果是一张逼近真实解的 \((x_i, y_i)\) 数据表,以及终点处的解 \(y(x_n)\)。这是一个纯数学工具,不涉及任何国家或单位限制。
使用方法
把右端项 \(F(x,y)\) 写成关于 x 和 y 的表达式(例如 1-y^2、x+y、x*y 或 sin(x)+y)。支持的运算符有 + - * / ^,支持的函数包括 sin、cos、tan、exp、log、ln、sqrt、abs、tanh,以及常数 pi 和 e。设置起点 \(x_0\)、初始值 \(y_0\)、终点 \(x_n\),并选择把区间等分成多少份 \(n\)。分段越多精度越高,因为 RK4 的整体误差大致按 \(h^4\) 的速度缩小。
公式详解
区间被等分为 \(n\) 段,每段宽度 \(h = \dfrac{x_n - x_0}{n}\)。在每一步,RK4 都会对斜率采样四次:一次在起点(\(k_1\)),两次在中点(\(k_2\)、\(k_3\)),一次在终点(\(k_4\))。下一个值是它们的加权平均,
$$y_{i+1} = y_i + \frac{h}{6}\left(k_1 + 2k_2 + 2k_3 + k_4\right)$$这样可以抵消直到四阶的误差项,使每步的局部截断误差为 \(O(h^5)\),整体误差为 \(O(h^4)\)。
实例演示
求解 \(y' = 1 - y^2\),取 \(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 10\)(即 \(h = 0.1\))。其精确解为 \(y = \tanh(x)\)。RK4 第一步算得 \(y_1 = 0.0996679\),与 \(\tanh(0.1) = 0.0996680\) 吻合。走完全部十步后,\(y(1) = 0.7615942\),与 \(\tanh(1) = 0.7615942\) 在七位有效数字上完全一致。
常见问题
RK4 为什么比欧拉法更好?欧拉法每步只用一个斜率(误差 \(O(h)\))。RK4 用了四个斜率并取平均,在相同步长下可达到 \(O(h^4)\) 的精度,因此要达到目标精度所需的步数大大减少。
应该选多少步?可以先从 50 开始。如果解比较平滑,这通常就足够了;对于变化剧烈或接近刚性的问题,可以增加到 100、200 甚至 500。
出现 NaN 或 Infinity 怎么办?可能是解发散了,或者 \(F(x,y)\) 遇到了无效运算(比如对负数取对数、或除以零)。请检查表达式,并尝试缩小区间或增加步数。