Иллюстрированный самоучитель по MathCAD 12

О численных методах

Число шагов

Все встроенные функции требуют задания для численного метода количества шагов, разбивающих интервал интегрирования ОДУ. Это очень важный параметр, непосредственно влияющий на погрешность результата и скорость расчетов. При решении систем ОДУ многие проблемы могут быть устранены при помощи простой попытки увеличить число шагов численного метода. В частности, сделайте так при неожиданном возникновении ошибки "Found a number with a magnitude greater than 10^307" (Найдено число, превышающее значение 10307). Данная ошибка не обязательно говорит о том, что решение в действительности расходится, а возникает из-за недостатка шагов для корректной работы численного алгоритма.

В качестве иллюстрации приведем результаты простых расчетов (листинг 9.6), в которых определяется пользовательская функция u(м), представляющая решение ОДУ в зависимости от числа шагов м. На рис. 9.8 показано несколько графиков решения системы ОДУ затухающего линейного осциллятора для нескольких значений м.

Листинг 9.6. Решение системы ОДУ как функции числа шагов:

Иллюстрированный самоучитель по MathCAD 12 › Обыкновенные дифференциальные уравнения: динамические системы › О численных методах

Иллюстрированный самоучитель по MathCAD 12 › Обыкновенные дифференциальные уравнения: динамические системы › О численных методах
Рис. 9.8. Решение системы ОДУ в зависимости от числа узлов М (продолжение листинга 9.6)

Иллюстрированный самоучитель по MathCAD 12 › Обыкновенные дифференциальные уравнения: динамические системы › О численных методах
Рис. 9.9. Фазовый портрет решения системы ОДУ при М=40 и М=200 (продолжение листинга 9.6)

Как можно заметить, несмотря на, в целом, правильное решение ОДУ в узлах (оно показано кружками и квадратами), профиль решения при малых м получается неверным. Еще лучше это видно на рис. 9.9, представляющем фазовый портрет системы с разным числом шагов. Видно, что для м=200 решение получается более гладким (конечно, при этом увеличивается и время расчетов).

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.