[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