2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритм выбора численного метода интегрирования системы ДУ
Сообщение07.03.2006, 15:38 
Задана система нелинейных обыкновенных автономных дифференциальных ур-ний (СДУ) n-ого порядка. Как можно аргументированно выбрать наиболее подходящий метод численного интегрирования с оптимальным для данной СДУ шагом?
При этом подчеркнем, что система аналитического решения не имеет, т.е. найти ни локальную ни глобальную погрешность наверное то и нельзя. Что с чем, собственно, сравнивать? Решения при разном шаге? Нет, это ошибка, поскольку известно, что каждый метод обладает своим оптимальным шагом для той или иной конкретной задачи, т.е. отклонение от оптимального шага в меньшую или большую сторону приведет к увеличению погрешности.
Странно то, что данный вполне закономерный вопрос должен был когда-нибудь да появиться у теоретиков численных методов, но, ни у классиков жанра, ни у современных мыслителей как-то что-то ничего на этот счет нету. Или я ошибаюсь?

 
 
 
 
Сообщение07.03.2006, 15:52 
Вопрос не правильно поставлен. Не существует алгоритма подходящегося для всех случаев. В случае, когда в уравнении
$\frac {dx}{dt} =f(x) \in (R^n \to R^n)$
функция достаточно гладкая, то чем выше порядок аппроксимации тем лучше. Тут так же надо иметь в виду что повышение порядка не автоматический улучшает точность, а при оптимальном выборе шага, и с ростом порядка точности растёт быстро и сложность реализации алгоритма.

 
 
 
 
Сообщение07.03.2006, 15:53 
Аватара пользователя
Press W.H., Teukolsky S.A., Vetterling W.T. Numerical recipes in C

Там есть описание, на мой взгляд, хорошего метода с адаптивным шагом, кстати без прохода с другим шагом

 
 
 
 
Сообщение07.03.2006, 20:13 
Спасибо за подсказки, только вопрос, на мой взгляд, поставлен вобщем-то недвусмысленно и вполне корректно (к г-ну Руст).

Еще раз, мне нужно подобрать наиболее оптимальный алгоритм по соотношению точность/скорость не для какой-то системы, заданной в общем виде, а для совершенно конкретной.

Меня интересует, как надо проанализировать исходную систему, чтобы обосновать выбор алгоритма интегрирования, его порядка и, наконец, шага.

 
 
 
 Re:
Сообщение05.12.2009, 15:02 
Artem_ в сообщении #12393 писал(а):
Спасибо за подсказки, только вопрос, на мой взгляд, поставлен вобщем-то недвусмысленно и вполне корректно (к г-ну Руст).

Еще раз, мне нужно подобрать наиболее оптимальный алгоритм по соотношению точность/скорость не для какой-то системы, заданной в общем виде, а для совершенно конкретной.

Меня интересует, как надо проанализировать исходную систему, чтобы обосновать выбор алгоритма интегрирования, его порядка и, наконец, шага.

Я обычно делаю так:
1. Делаю численное приближение матрицы Якоби правых частей СДУ (это легко, поскольку у Вас уже есть программа вычисления правых частей).
2. С помощью пакета EISPACK нахожу спектр этой матрицы.
3. Анализирую спектр на предмет:
_а. Комплексности;
_б. Жесткости.
4. Делаю выводы из а. и б. и выбираю метод решения. Для каждого метода размер шага связан с жесткостью матрицы Якоби (обычно дается автором метода при изложении процедуры интегрирования).
Пункты 1.- 4. можно назвать "азы пилотажа".
Дальнейший анализ матрицы Якоби может служить примером "высшего пилотажа". Но об этом коротко не напишешь.

 
 
 
 Re: Алгоритм выбора численного метода интегрирования системы ДУ
Сообщение05.12.2009, 15:54 
Для достато
Artem_ в сообщении #12369 писал(а):
Задана система нелинейных обыкновенных автономных дифференциальных ур-ний (СДУ) n-ого порядка. Как можно аргументированно выбрать наиболее подходящий метод численного интегрирования с оптимальным для данной СДУ шагом?
Для достаточно широкого класса систем (в частности, для жёстких систем) методы с постоянными шагом вообще являются малоприменимыми. В своё время для решения задач связанных с расчётом химической кинетики пользовался программой LSODE (Livermore Solver for Ordinary Differential Equations) с адаптивным шагом: довольно хорошо работает и для жёстких, и для "мягких" случаев.

 
 
 
 Re: Алгоритм выбора численного метода интегрирования системы ДУ
Сообщение06.12.2009, 09:22 
Maslov в сообщении #268170 писал(а):
Для достато
Artem_ в сообщении #12369 писал(а):
Задана система нелинейных обыкновенных автономных дифференциальных ур-ний (СДУ) n-ого порядка. Как можно аргументированно выбрать наиболее подходящий метод численного интегрирования с оптимальным для данной СДУ шагом?
Для достаточно широкого класса систем (в частности, для жёстких систем) методы с постоянными шагом вообще являются малоприменимыми. В своё время для решения задач связанных с расчётом химической кинетики пользовался программой LSODE (Livermore Solver for Ordinary Differential Equations) с адаптивным шагом: довольно хорошо работает и для жёстких, и для "мягких" случаев.

У Хиндмарша сотоварищи в этом смысле лучше работает связка: VODE/VODPK.

 
 
 
 Re: Алгоритм выбора численного метода интегрирования системы ДУ
Сообщение06.12.2009, 17:04 
Artem_ в сообщении #12369 писал(а):
Странно то, что данный вполне закономерный вопрос должен был когда-нибудь да появиться у теоретиков численных методов, но, ни у классиков жанра, ни у современных мыслителей как-то что-то ничего на этот счет нету. Или я ошибаюсь?

Дело в том, что эта задача, по-видимому, в такой постановке не решается. В реальной жизни выбор всегда делается путем анализа "физики" задачи (с учетом информации о том, что моделирует эта система и как ведет себя моделируемый объект). Если и это не помогает - тогда просто методом проб и ошибок. :D

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group