这个计算器能做什么
本工具采用经典的前向(显式)欧拉法,对形如 \(y' = F(x, y)\) 的一阶常微分方程进行数值求解,初始条件为 \(y(x_0) = y_0\)。它将区间从 \(x_0\) 到 \(x_n\) 等分成 \(n\) 步逐步推进,最终给出步长 \(h\)、完整的 \((x, y)\) 近似值数值表,以及终点处的近似值 \(y(x_n)\)。
使用方法
把方程右端项 \(F(x, y)\) 写成关于变量 \(x\) 和 \(y\) 的数学表达式(支持运算符 + - * / ^、括号,以及 sin、cos、exp、log/ln、sqrt、abs 等函数,还有常数 pi 和 e)。然后设置起点 \(x_0\)、初始值 \(y_0\)、终点 \(x_n\),并选择细分段数 \(n\)。\(n\) 越大,步长越小,结果通常也越精确。
公式解析
步长为 $$h = \frac{x_n - x_0}{n},$$ 网格节点为 \(x_k = x_0 + k\cdot h\)。从 \(y_0\) 出发,每个新值按 $$y_{k+1} = y_k + h\cdot F(x_k, y_k)$$ 计算:在当前点处取斜率 \(F\),再沿这条直线走一段宽度为 \(h\) 的步长。该方法是一阶精度的,因此全局误差大致与 \(O(h)\) 成正比。
实例演算
对于 \(y' = 1 - y^2\),取 \(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 5\),步长 \(h = 0.2\)。逐步迭代得到 \(y_1 = 0.2\)、\(y_2 = 0.392\)、\(y_3 = 0.5612672\)、\(y_4 \approx 0.6982668\)、\(y_5 \approx 0.8007513\)。因此欧拉法在 \(x = 1\) 处的估计值约为 \(0.8008\)。该方程的精确解是 \(\tanh(x)\),所以 \(\tanh(1) \approx 0.7616\);增大 \(n\) 会使欧拉法的结果逐渐逼近这个真实值。
常见问题
为什么我算出的结果和精确解不一样?欧拉法只有一阶精度。误差大致与步长 \(h\) 成正比,因此选取更大的 \(n\)(更小的步长)就能提高精度。
\(x_n\) 可以比 \(x_0\) 小吗?可以。这时步长 \(h\) 变为负值,同样的递推公式会向后(反向)积分。
支持哪些函数?sin、cos、tan、asin、acos、atan、sinh、cosh、tanh、exp、log/ln、log10、sqrt 和 abs,以及常数 pi 和 e。