
- •Лекция №8 Обыкновенные дифференциальные уравнения Постановка задачи Коши
- •Метод Пикара
- •Метод малого параметра
- •Метод ломаных
- •Метод Рунге-Кутта
- •Метод Адамса
- •Решатели дифференциальных уравнений в matlab
- •Постановка краевой задачи
- •Метод стрельбы
- •Краевая задача. Разностный метод
- •Краевая задача в среде matlab
Метод ломаных
Рассмотрим задачу Коши (6) и выберем на отрезке [x0,X] некоторую, вообще говоря, неравномерную сетку x0 < x1 < … < xN = X. Разложим решение u(x) в ряд Тейлора на отрезке [xn,xn +1] в окрестности xn, тогда
, (16)
где
n
= 0,1,…,N
1.
Производные, входящие в (16) могут быть найдены путем дифференцирования уравнения (6), т.е.
(17)
Схема решения дифференциального уравнения (16), (17) однако мало употребительна, т.к. вычисления высших производных согласно (17) может оказаться затруднительным, а если правая часть известна с какой либо погрешностью, то результат и вовсе не определен.
В простейшей схеме ломаных в (16) оставляют только член с первой производной, а остальные отбрасывают, т.е. рассматривается следующая схема приближенного решения дифференциального уравнения:
(18)
В (18) приближенное решение дифференциального уравнения (6) в точке xn обозначено символом yn в отличие от точного значения un = u(xn). Согласно схеме ломаных, задавая начальное значение y0 = u0, находим по формуле (18) y1, y2 и т.д. yN. Отметим, что схему ломаных часто также называют схемой Эйлера.
На рис.1 приведена геометрическая интерпретация метода ломаных. Приближенное решение из точки (xn,yn) движется по касательной к интегральной кривой, в точке (xn +1,yn +1) решение движется по новой касательной к новой интегральной кривой и т.д. В результате получается ломаная линия, изображающая приближенное решение исходного уравнения.
Рис.1. Геометрическая интерпретация метода ломаных
Для исследования
сходимости метода ломаных предположим
наличие непрерывности и ограниченности
правой части f(x,u)
и ее первых производных, т.е.
,
а согласно (17)
.
Определим погрешность приближенного решения метода ломаных zn = yn un. Вычитая уравнение (17) из (18), находим
(19)
Рекурсивная зависимость (19) позволяет выразить погрешность на каждом шаге через погрешность начальных данных:
. (20)
При малых значениях шагов сетки произведения, входящие в (20), могут быть без потери точности переписаны в виде:
.
С учетом вышеуказанного представления, уравнение (20) может быть представлено в виде:
, (21)
где h(t) — некоторая непрерывная функция, равная hn в узлах xn. Если начальное условие выбрано точно, то погрешность начального данного z0 = y0 u0 отсутствует, т.е. z0 = 0. Проводя далее оценку погрешности в (21), находим
, (22)
где
(22)
Согласно (22),
погрешность стремится к нулю при
,
т.е. методом ломаных действительно можно
получить приближенную оценку решения
дифференциального уравнения (6), при
этом численное решение равномерно
сходится к точному решению с первым
порядком точности по h.
Хотя оценка величины M(xn)
в (22)
является мажорантной, т.е. завышенной,
наличие экспоненты в данной оценке
говорит о том, что решение по схеме
Эйлера может оказаться плохо обусловленным
алгоритмом.
Изучим поведение оценки погрешности (22), (22) на примере численного решения уравнения вида:
. (23)
Уравнение (23) имеет
точное решение
,
которое сравним с приближенным решением
yn,
которое определим на равномерной сетке
xn
= (n 1)h,
n
= 1,…,N,
где шаг сетки h
= 1/(N
1). Изучим зависимость величины константы
(22)
(24)
от шага сетки. Согласно теоретическим оценкам величина M(1) не должна зависеть от величины шага h при h 0.
На листинге_№4 приведен код программы вычисления зависимости величины (24) от шага сетки.
Листинг_№4
%Программа изучения погрешности численного
%решения дифференциального уравнения
%u'=f(x,u) методом Эйлера (методом ломаных)
%очищаем рабочее пространство
clear all
%задаем набор сеток расчета уравнения u'=xu
Mesh=10:10:10000;
%организуем цикл расчета методом ломаных
%на разных сетках
for k=1:length(Mesh)
%определяем параметры сетки
N=Mesh(k); h=1.0/(N-1);
%задаем начальное условие
y(1)=1;
%применяем алгоритм метода ломаных
for n=1:(N-1)
y(n+1)=y(n)+(n-1)*h^2*y(n);
end
%вычисляем величину M(1) в оценке
%погрешности численного решения
M(k)=abs(y(N)-exp(0.5))/h;
step(k)=h;
end
%рисуем зависимость величины M(1) от шага
%разностной сетки (при изображении зависимости
%необходимо перейти в логарифмический масштаб
%по оси абсцисс)
plot(step,M);
На рис.2 приведен итоговый график зависимости. Видно, что при стремлении шага сетки к нулю действительно величина M(1) ведет себя как константа.
Рис.2. Изучение погрешности метода ломаных