- •Предисловие
- •Глава 1. Дифференциальные уравнения в частных производных, их классификация и методы решения. Задача Коши
- •Дифференциальные уравнения в частных производных
- •Дифференциальные уравнения в частных производных второго порядка
- •Понятие об общем решении уравнения в частных производных
- •Начальные и граничные условия
- •Задача Коши для дифференциальных уравнений первого порядка
- •Задача Коши для дифференциальных уравнений второго порядка
- •Классификация уравнений второго порядка в частных производных
- •Численные методы решения дифференциальных уравнений в частных производных
- •Использование метода сеток для решения параболических уравнений в частных производных
- •Использование метода сеток для решения гиперболических уравнений
- •Использование метода сеток для решения эллиптических уравнений
- •Глава 2. Уравнение колебания струны
- •Вывод уравнения колебания струны
- •Методы решения уравнения колебания струны
- •Метод Даламбера (метод бегущих волн) для бесконечной струны
- •Фазовая плоскость
- •Метод продолжений для полубесконечной струны
- •Метод продолжения для конечной струны (начальная и конечная точки жёстко закреплены)
- •Метод Фурье (метод стоячих волн) или метод разделения переменных
- •Упражнения
- •Глава 3. Решение уравнений теплопроводности и Лапласа методом Фурье
- •Вывод уравнения теплопроводности
- •Метод Фурье для конечного стержня
- •Упражнения.
- •Уравнение Лапласа
- •Задача Дирихле для уравнения Лапласа в круге
- •Задача Дирихле для уравнения Лапласа в кольце
- •Уравнение Лапласа в прямоугольнике
- •Приложения
- •Практикум в среде matlab
- •Лабораторная работа № 1
- •Задача Коши для систем обыкновенных дифференциальных уравнений
- •1. Метод Эйлера.
- •2. Решение уравнений p-го порядка и систем обыкновенных дифференциальных уравнений.
- •3. Методы Рунге–Кутты.
- •4. Решение задачи Коши с помощью встроенных функций matlab.
- •Задания для выполнения лабораторной работы
- •Лабораторная работа № 2 Волновые уравнения
- •1. Задача Коши для неограниченной струны.
- •2. Задача Коши для полуограниченной струны. Метод продолжений.
- •3. Создание анимации средствами matlab.
- •4. Фазовая плоскость. Бегущие волны.
- •Индивидуальные задания
- •Рекомендуемая литература
- •Оглавление
2. Решение уравнений p-го порядка и систем обыкновенных дифференциальных уравнений.
Рассмотрим обыкновенное дифференциальное уравнение (ОДУ) p-го порядка:
Путем введения замены {y(k) = yk, k = 1,…,p – 1} данное уравнение можно свести к системе дифференциальных уравнений первого порядка:
Для получения единственного решения системы нужно наложить p дополнительных условий на функции yk(x). Для задачи Коши данные условия задаются в одной точке:
Для нахождения решения полученной задачи Коши может быть применен метод Эйлера, рассмотренный ранее. Представим полученную задачу в векторном виде
введя обозначения:
В данных обозначениях формулы метода Эйлера могут быть представлены в виде
Обратите внимание, что функция для метода Эйлера, описанная в примере П.1, изначально была рассчитана на работу с переменными y, y0, заданными в виде вектора-столбца. Вносить дополнительные изменения в эту функцию для решения систем уравнений не требуется. Достаточно лишь правильно задать параметры и реализовать вычисление правой части.
Упражнение 2. Для выполнения упражнения выбрать задачу Коши для уравнения 2-го порядка в соответствии с номером компьютера (список вариантов приведен в конце лабораторной работы).
1) Найти решение задачи на отрезке xϵ[0,1] методом Эйлера, используя равномерную сетку с шагом h = 0.1 и предварительно преобразовав задачу в задачу Коши для системы уравнений 1-го порядка.
2) Найти ошибку вычислений как разность между точным решением задачи (можно найти вручную или в символьном виде с помощью функции dsolve) и полученным численным решением в каждой точке сетки. Определить погрешность решения как максимум модуля ошибки вычислений.
3) Построить графики точного и численного решений (на одном рисунке) и график ошибки вычислений (на отдельном рисунке).
4) Повторить решение задачи для шага сетки h = 0.05. К графикам, построенным в пункте 3, добавить график нового численного решения и график соответствующей ему ошибки.
3. Методы Рунге–Кутты.
Для погрешности метода Эйлера справедлива оценка ε = O(h), т.е. метод Эйлера имеет первый порядок точности. Это означает, что для уменьшения погрешности вычислений в 100 раз шаг сетки также необходимо уменьшить в 100 раз. Для большинства практических задач, к сожалению, такой низкий порядок точности не достаточен.
Для решения поставленной задачи с более высоким порядком точности было придумано целое семейство методов, получивших название методы Рунге–Кутты. Наиболее популярный из этих методов – метод Рунге–Кутты 4-го порядка точности, который мы рассмотрим далее. На практике также часто применяют метод 2-го порядка и уже знакомый нам метод Эйлера (он же метод Рунге–Кутты 1-го порядка). В литературе можно найти методы Рунге–Кутты до 8-го порядка точности включительно, но практического распространения они не получили.
Для поиска решения задачи Коши с помощью методов Рунге–Кутты в области решения вводится равномерная сетка, и значения функции вычисляются последовательно в узлах сетки, начиная с известного значения в точке x0. В общем виде формула для вычисления нового значения функции задается как:
Каждый конкретный метод семейства Рунге-Кутты определяется числом промежуточных этапов (стадий) s и фиксированными значениями коэффициентов aj,l, bj, cj. Значения коэффициентов подбираются таким образом, чтобы при заданном порядке точности число требуемых стадий было минимальным.
В частности, метод Эйлера имеет одну стадию и коэффициенты b1 = 1, c1 = 0. Для достижения 2-го порядка точности необходимо две стадии (используемые для этого значения коэффициентов можно легко найти в литературе). Для достижения 4-го порядка точности требуется использовать метод Рунге–Кутты с четырьмя стадиями:
Метод с таким набором коэффициентов получил название метода Рунге–Кутты 4-го порядка. Для его погрешности справедлива оценка ε = O(h4), т.е. при уменьшении шага сетки в 10 раз, погрешность уменьшается в 10000 раз.
Данный метод можно применять как для одного уравнения, так и для системы уравнений, используя переход в векторную форму по правилам, описанным ниже в примере П.2.
Пример П.2. Написать файл-функцию, реализующую метод Рунге–Кутты 4-го порядка. Предусмотреть возможность использования метода для системы уравнений.
function [yy,xx]=runge(f,x0,y0,xe,h)
xx = x0:h:xe;
% yy создадим в виде матрицы, i-я строка которой соответсвует i-й функции
yy = zeros(length(y0),length(xx));
yy(:,1) = y0;
for i=1:length(xx)-1
k1 = h * f(xx(i), yy(:,i));
k2 = h * f(xx(i)+h/2, yy(:,i)+k1/2);
k3 = h * f(xx(i)+h/2, yy(:,i)+k2/2);
k4 = h * f(xx(i)+h, yy(:,i)+k3);
yy(:,i+1)=yy(:,i)+(k1+2*k2+2*k3+k4)/6;
end
end
Упражнение 3. Выполнить задания упражнений 1 и 2, применяя вместо метода Эйлера метод Рунге–Кутты 4-го порядка. Сравнить погрешности, полученные при использовании разных методов.
