
- •Лекция №8 Обыкновенные дифференциальные уравнения Постановка задачи Коши
- •Метод Пикара
- •Метод малого параметра
- •Метод ломаных
- •Метод Рунге-Кутта
- •Метод Адамса
- •Решатели дифференциальных уравнений в matlab
- •Постановка краевой задачи
- •Метод стрельбы
- •Краевая задача. Разностный метод
- •Краевая задача в среде matlab
Краевая задача. Разностный метод
Разностный метод рассмотрим на примере краевой задачи (с краевыми условиями первого рода) для линейного уравнения второго порядка, т.е.
(67)
Рис.9. Профили решений краевой задачи (63) — (66) при 6 значениях
Введем на отрезке [a,b] равномерную сетку a = x1 < x2 < … < xN = b, при этом xn = a + (n 1)h, n = 1,2,…,N, h = (b a)/(N 1). Аппроксимируем вторую производную, используя простейшую трехточечную схему вида
, (68)
где h = xn +1 xn = const, n = 1,…,N 1. Заменим вторую производную в (67) на конечно-разностную аппроксимацию (68), тогда
, (69)
где yn u(xn) — приближенное решение искомой задачи, pn = p(xn), fn = f(xn). Система алгебраических уравнений состоит из N 2 уравнений относительно приближенных значений функции yn. Недостающая пара уравнений следует из краевых условий
. (70)
В результате решение исходной краевой задачи свелось к численному решению задачи (69), (70) на конечно-разностной сетке. При этом возникает три вопроса.
Существует ли решение алгебраической системы уравнений (69)?
Каков алгоритм решения алгебраической системы (69)?
Сходится ли приближенное решение к точному в какой-либо норме при h 0?
Для ответа на все три вопроса потребуем дополнительно p(x) > 0
Решение разностной задачи может быть рассмотрено, как решение системы линейных алгебраических уравнений. В лекции №5 уже была изучена система такого рода. Там же было показано, что решение существует и единственно, когда имеет место диагональное преобладание, т.е. значения на главной диагонали превышают сумму значений на верхней и нижней диагоналях. Применительно к системе уравнений (69) это условие выглядит в следующем виде: 2 + h2pn > 1 + 1 при pn > 0. Найти решение задачи (69) можно либо методом исключения Гаусса, либо методом прогонки.
Докажем утверждение о сходимости приближенного решения к точному: если p(x) и f(x) дважды непрерывно дифференцируемы, то разностное решение yn равномерно сходится к точному u(xn) с погрешностью O(h2) при h 0.
Сделанные предположения обеспечивают существование четвертой непрерывной производной точного решения, поэтому можно записать погрешность аппроксимации второй производной в виде:
. (71)
Подставляя в (71)
вторую производную
из (67), получим
. (72)
Определим погрешность zn = yn u(xn), тогда, вычитая уравнение (69) из (72), находим
. (73)
Краевые значения для погрешности в (73) равны нулю, т.к. предполагается, что они удовлетворяются точно в приближенной задаче.
Выберем такое
значение аргумента
,
при котором
достигает своего максимального значения.
Очевидно, это не могут быть краевые
значения. Рассмотрим уравнение (73) при
n
= n0,
тогда верна следующая оценка
. (74)
Если в правой части
(74) заменить
на
,
то это только усилит неравенство. В
итоге получим искомую оценку
,
которая обеспечивает сходимость приближенного решения к точному с погрешностью O(h2) при h 0.
В качестве примера рассмотрим решение следующей краевой задачи:
(75)
На листинге_№12 приведен код решения краевой задачи (75).
Листинг_№12
%Программа численного решения краевой
%задачи разностным методом
%очищаем рабочее пространство
clear all
%определяем функции p(x) и f(x)
p=@(x)1+x^4;
f=@(x)sin(x^2);
%определяем отрезок, на котором краевая
%задача определена
a=0; b=5;
N=1000; h=(b-a)/(N-1);
%определяем сетку
for n=1:N
x(n)=a+(n-1)*h;
end
alpha(2)=0;
%задаем левое краевое условие
beta(2)=-1;
%определяем коэффициенты прогонки
for n=2:(N-1)
alpha(n+1)=1/(2+h^2*p(x(n))-alpha(n));
beta(n+1)=(beta(n)-h^2*f(x(n)))/...
(2+h^2*p(x(n))-alpha(n));
end
%задаем правое краевое условие
y(N)=1;
%вычисляем значения приближенной функции
for n=(N-1):-1:1
y(n)=alpha(n+1)*y(n+1)+beta(n+1);
end
%рисуем полученное решение
plot(x,y);
На рис.10 приведено решение краевой задачи (75) в виде графика.
Рис.10. Решение краевой задачи (75)