Численное решение дифференциальных уравнений
Введите правую часть f(x, y), начальную точку и шаг. Программа пройдёт от x₀ до конечной точки методом Эйлера, методом Хойна (усовершенствованным методом Эйлера) или классическим методом Рунге — Кутты четвёртого порядка и покажет y на каждом шаге и график.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Введите f(x, y) — правую часть уравнения y’ = f(x, y).
- Задайте начальное условие x₀, y₀, конечное x и шаг h. Числа можно писать с запятой (0,1), а в формуле f(x, y) — только с точкой.
- Выберите метод и посмотрите y в конечной точке, таблицу и график.
Как это работает
Отрезок от x₀ до конечной точки делится на n = ⌈|x_end − x₀| / h⌉ равных шагов. На каждом шаге выбранный метод оценивает наклон по f и сдвигает y:
- Эйлер берёт наклон в начале шага.
- Хойн усредняет наклон в начале и в конце, предсказанном методом Эйлера.
- РК4 сочетает четыре наклона — в начале, дважды в середине и в конце — с весами 1 : 2 : 2 : 1.
Разобранный пример
y’ = x + y, y(0) = 1, h = 0,1, до x = 1. Точное решение y = 2eˣ − x − 1, поэтому y(1) = 2e − 2 ≈ 3,436564. РК4 даёт 3,436559 (погрешность 5·10⁻⁶), а Эйлер с тем же шагом — лишь 3,187485.
Советы
- Жёсткие уравнения, например y’ = −50(y − cos x), требуют у этих явных методов малого шага, иначе значения начинают колебаться.
- Степени пишите как x^2, экспоненту — как exp(x) или e^x.
Частые вопросы
Какой метод выбрать?
Для точности — Рунге — Кутту 4: его погрешность убывает как h⁴, так что уменьшение шага вдвое снижает погрешность примерно в 16 раз. Метод Эйлера самый простой и его проходят первым, но его погрешность убывает лишь пропорционально h. Метод Хойна — посередине, с погрешностью порядка h².
Насколько точен результат?
Это приближение. Для y' = y, y(0) = 1 и h = 0,1 точное y(1) = e = 2,718281828; Эйлер даёт 2,593742, Хойн — 2,714081, РК4 — 2,718280. Хорошая проверка — уменьшить h вдвое и посмотреть, изменится ли ответ.
Какие формулы используются?
Эйлер: yₙ₊₁ = yₙ + h·f(xₙ, yₙ). Хойн: среднее наклонов в начале шага и в конце, предсказанном методом Эйлера. РК4: yₙ₊₁ = yₙ + h(k₁ + 2k₂ + 2k₃ + k₄)/6, где k₁ = f(xₙ, yₙ), k₂ = f(xₙ + h/2, yₙ + hk₁/2), k₃ = f(xₙ + h/2, yₙ + hk₂/2), k₄ = f(xₙ + h, yₙ + hk₃).
Можно ли решать уравнения второго порядка?
Напрямую нет: программа решает одно уравнение первого порядка. Уравнение второго порядка сначала нужно переписать в систему из двух уравнений первого порядка, а системы этот инструмент не решает.
Почему программа сообщает, что решение ушло в бесконечность?
Некоторые уравнения действительно уходят в бесконечность при конечном x: у y' = y², y(0) = 1 решение 1/(1 − x), которое бесконечно при x = 1. Программа останавливается, когда y перестаёт быть конечным числом.