Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Решение систем диффуров. Метод Эйлера |
Автор: PriestOfLuna 4.12.2010, 23:24 | ||
Делаю на Java программу, решающую заданную систему дифференциальных уравнений первого порядка методами Элейра и Рунге-Кутты. Застопорился уже на том, что метод Эйлера работает совсем уж неадекватно. Сильно расходится с решением в маткаде и вообще при разном шаге дает разные результаты.
Может я не догоняю чего-то глобального.... |
Автор: Фантом 4.12.2010, 23:55 |
Напишите систему, которую Вы решаете. Правда, и без этого можно сказать, что первая строчка в makeStep выглядит несколько неестественно. |
Автор: PriestOfLuna 5.12.2010, 08:14 |
x'=3x y'=2x+y |
Автор: Фантом 5.12.2010, 13:10 | ||||
Нет, тогда с первой строчкой как раз все в порядке. А вот во второй ошибка: вместо
должно быть
|
Автор: PriestOfLuna 5.12.2010, 16:21 |
Да, эту ошибку я исправил, но изменилось не так уж много =\ Значения дает все так же не те. |
Автор: Фантом 5.12.2010, 17:52 |
Ну что значит "не те"? Точность метода Эйлера, особенно на таких задачах, мягко говоря, невысока. В Маткаде "зашит" метод Рунге-Кутты 4-го порядка, он должен быть точнее, так что их результаты сравнивать несколько некорректно. Попробуйте сильно уменьшить шаг (где-нибудь до 10^{-8} - 10^{-9}) и посмотрите, что получится. |
Автор: PriestOfLuna 6.12.2010, 20:51 |
Да, уменьшение шага решило проблему ![]() |