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

Жесткие краевые задачи

Один из случаев, когда применение разностных схем может быть очень полезным, связан с решением жестких краевых задач (подробнее о жестких ОДУ читайте в гл. 11). В частности, рассматриваемая задача о встречных световых пучках становится жесткой при увеличении коэффициента ослабления а(х) в несколько десятков раз. Например, при попытке решить ее с а (х): = 100 с помощью листинга 12.2 вместо ответа выдается сообщение об ошибке "Can't converge to a solution. Encountered too many integration steps" (Не сходится к решению. Слишком много шагов интегрирования). Это и неудивительно, поскольку жесткие системы характерны тем, что требуют исключительно малого значения шага в стандартных алгоритмах.

Для жестких задач неприменимы и явные разностные схемы, о которых рассказывалось в предыдущем разделе (см. разд. 12.3.1). Результат расчетов по программе листинга 12.6, например с а(х): = 20 (рис. 12.9), дает характерную для неустойчивых разностных схем "разболтку" – колебания нарастающей амплитуды, не имеющие ничего общего с реальным решением.

Иллюстрированный самоучитель по MathCAD 11 › Краевые задачи › Жесткие краевые задачи
Рис. 12.9. Неверное решение жесткой краевой задачи по неустойчивой явной разностной схеме

Выходом из положения будет использование неявных разностных схем. Применительно к нашей задаче достаточно заменить правые части уравнений (1) значениями не на левой, а на правой границе каждого шага.

Граничные условия, конечно, можно оставить в том же виде (2). Поскольку мы имеем дело с линейными дифференциальными уравнениями, то и схему (4) легко будет записать в виде матричного равенства (3), перегруппировывая соответствующим образом выражение (4) и приводя подобные слагаемые. Разумеется, полученная матрица А будет иной, нежели матрица А для явной схемы (1). Поэтому и решение (реализация неявной схемы) может отличаться от изображенного на рис. 12.9 результата расчетов по явной схеме. Программа, составленная для решения системы (4), приведена в листинге 12.7.

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