[cdev] Дайджест списка рассылки cdev; том 3, выпуск 5
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Ср Апр 7 22:53:05 MSK 2010
Для тех кто читает список, я сообщу кое что.
Андрей реализует метод Рунге-Кутты-Фельберга для численного решения
дифференциальных уравнений n-го порядка в задаче при известных начальных
условиях.
Какие есть замечания по дизайну кода:
1. Ты правильно сделал что вынес рутину шага в отдельную функцию. Но мне
кажется что можно было сделать лучше и пользоваться ей было бы удобнее.
Обычно когда мы имеем дело с задачами нач. условий то мы ищём решение на
известном участке t (от и до). Поэтому цикл ограничивается не
количеством итераций, а конечным временем.
Посмотри ещё раз портянку, (21). Там сразу разница между решениями 4-го
и 5-го порядков.
2. Я понял почему мне твой алгоритм показался странным. Скорее всего он
именно поэтому у нас и не работает, как надо. Потому что у тебя метод
шагает дальше без повтора вычисления для того же t0 но с изменённым h. А
он должен, если оказалось что h изменился, повторно для этого же t0
вычисляться заново.
Смысл адаптивного метода в этом и заключается. Сделали предположение для
шага, получили оценку ошибки, увеличили/уменьшили шаг в зависимости от
оценки (если надо), повторили вычисления (если надо).
Мне кажется тебе надо сделать редизайн step_rkf45.
И ещё возьми на заметку, что у метода есть step (шаг) а есть stepper
(шагальщик). Первый делает один шаг, а второй шагает от t до t_end. На
мой взгляд коррекцию шага в случае если t+h > t_end должен делать stepper.
Если что-то ещё вспомню, напишу.
--
Г.А.
Андрей Ануфриев пишет:
> Исправленный код
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> cdev mailing list
> cdev на wiki.syktsu.ru
> http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/cdev
Подробная информация о списке рассылки cdev