62.
Численное решение дифференциальных уравнений
Решение дифференциального уравнения с начальными условиями представляет собой некоторую функцию , где аргумент может принимать непрерывные значения из соответствующей области. Для численного решения дифференциальных уравнений непрерывное изменение аргумента нужно заменить на дискретное. Так появляется понятие сетки, то есть функция будет представлена не для всех , а для некоторого дискретного набора (узлы сетки), в которых значение функции будет равно . Будем полагать, что область изменения аргумента простирается от до некоторого значения . Это значение может быть достаточно большим, но в численных расчетах всегда будет конечным. Чаще всего используют равномерные сетки, то есть сетки, в которых расстояния между соседними узлами (шаг сетки) одинаковы. Исключение составляют случаи, когда исследуются функции, изменяющиеся с сильно различающейся скоростью на различных участках. Мы ограничимся только случаем одномерных (для функций одного аргумента) равномерных сеток с шагом .Шаг сетки выбирают из следующих соображений. Он должен быть достаточно малым, чтобы достаточно точно описывать все особенности поведения функции. Например, если функция на каком-то интервале вначале растет, а потом убывает к исходному значению, то шаг должен быть таким, чтобы на этом интервале расположилось хотя бы несколько узлов. Если на этом интервале совсем не будет узлов сетки или будет 1-2 узла, то по этим значениям не удастся восстановить поведение функции. С другой стороны, шаг сетки не должен быть слишком малым, так как это приводит к большим массивам данных, хранимых в компьютере, увеличению времени расчета, росту погрешностей при вычитании двух близких чисел и т.п. Таким образом, возникает проблема выбора оптимального значения шага сетки. Ее решают, используя заранее известную информацию о поведении решения дифференциального уравнения или подбором после нескольких пробных вычислений. Кроме того, удобно выбирать шаг сетки таким образом, чтобы в рассматриваемой области длиной укладывалось целое число шагов. Обозначим через N число шагов. Это означает, что число узлов равно N + 1. Удобно разместить начальный узел (его обычно обозначают как нулевой) при , а последний (его обозначают как N-й) при . Очевидно, что шаг сетки связан с длиной области вычислений и числом шагов следующим соотношением . В этом случае узлы сетки будут иметь координаты , где нумерует узлы сетки от 0 до N.После введения сетки и перехода от непрерывных функций к сеточным (заданным в узлах сетки) встает вопрос об аппроксимации производных, входящих в исходное дифференциальное уравнение их сеточными аналогами. Используя определение производной как предела отношения приращения функции к приращению аргумента, будем заменять бесконечно малые приращения на конечные, но достаточно малые в соответствии с шагом сетки. Для производной первого порядка можно предложить следующие варианты: (правая разностная производная), (левая разностная производная), (центральная разностная производная). Для производной второго порядка запишем разностную аппроксимацию в виде:.Аналогично можно определять разностные производные третьего и более высоких порядков. Из рассмотренных примеров видно, что можно предложить различные варианты для аппроксимации производных. Возникает вопрос — какую из них выбрать. Для этого введем понятие порядка аппроксимации, то есть насколько точное значение производной в -м узле отличается от разностной при достаточно малом шаге сетки . Разложим сеточные значения функции в ряд Тейлора, ограничившись несколькими первыми слагаемыми:
.
Из этого соотношения видно, что погрешность аппроксимации (отличие точного значения от разностного аналога) для правой и левой разностной производных имеют порядок : и . В этом случае говорят о порядке аппроксимации . Проделывая вычисления для центральной разностной производной, получим , то есть уже второй порядок аппроксимации. Действительно, выражая разность , видим, что члены с сокращаются, а следующий не исчезающий порядок будет , и деля на для получения производной, получаем порядок . Те же соображения приводят к тому, что для написанной второй разностной производной тоже имеем второй порядок аппроксимации . Более высокий порядок аппроксимации предпочтительней, поскольку при малых он дает более точное приближение исходного дифференциального уравнения разностным.Рассмотрим теперь дифференциальное уравнение первого порядка с начальным условием:.Запишем простейшие разностные схемы, ограничившись первым порядком аппроксимации. Используя понятие правой разностной производной, можем записать:.Выразив отсюда , мы можем определить значение во всех узлах сетки через предыдущее, причем самое первое значение (обозначенное индексом 0) нам известно из начального условия. В этом и состоит метод численного решения дифференциального уравнения.В теории разностных схем вводится еще понятие устойчивости схемы. Дело в том, что все вычисления проводятся с некоторой погрешностью, в том числе с некоторой погрешностью известны и параметры задачи — начальное условие, функция в правой части. И естественным требованием к разностной схеме должно быть условие, что малые возмущения в начальных данных не должны вызывать рост погрешности. Зададим погрешность начального условия . Это повлечет погрешности и в других узлах сетки . Раскладывая функцию в правой части в ряд Тейлора, ограничившись первым порядком, получим для погрешностей . Предполагаем, что функция не возрастает (а значит ), что даст нам ограниченное решение . В этом случае видно, что погрешность в следующем шаге не будет нарастать при условии или , то есть при достаточно малом шаге. Таким образом, схема является условно устойчивой.Если использовать левую разностную производную для аппроксимации дифференциального уравнения, получим следующую разностную задачу:.Эта схема уже неявным образом определяет следующее значение через предыдущее. Однако исследуя схему на устойчивость, убеждаемся, что , знаменатель при всегда больше единицы, и погрешность при любом шаге не нарастает, то есть разностная схема обладает безусловной устойчивостью. В этом достоинство неявных схем, причем при некоторых видах зависимостей схема может быть разрешена относительно , то есть стать явной, сохранив при этом безусловную устойчивость. Видеолекция «Численное решение дифференциальных уравнений»: