Алгоритм решения задачи коши для дифференциального уравнения
Данко П. Е., Попов А. Г., Кожевникова Т. Я. Высшая математика в упражнениях и задачах…
Часть II. Глава IV. Обыкновенные дифференциальные уравнения
§ 1. Дифференциальные уравнения первого порядка
1. Основные понятия. Дифференциальным уравнением называется уравнение, связывающее независимые переменные, их функцию и производные (или дифференциалы) этой функции. Если независимая переменная одна, то уравнение называется обыкновенным; если же независимых переменных две или больше, то уравнение называется дифференциальным уравнением в частных производных.
Наивысший порядок производной, входящей в уравнение, называется порядком дифференциального уравнения. Например:
1) х²у’ + 5xy = у² – обыкновенное дифференциальное уравнение первого порядка;
2) – обыкновенное дифференциальное уравнение второго порядка;
3) y’³ + y»y»’ = х – обыкновенное дифференциальное уравнение третьего порядка;
4) F (х, у, у’, у») = 0 – общий вид обыкновенного дифференциального уравнения второго порядка;
5) – уравнение в частных производных первого порядка.
В этом параграфе рассматриваются обыкновенные дифференциальные уравнения первого порядка, т. е. уравнения вида F (х, у, у’) = 0 или (в разрешенном относительно у’ виде) y’ = f(х, у).
Решением дифференциального уравнения называется такая дифференцируемая функция у = φ (x), которая при подстановке в уравнение вместо неизвестной функции обращает его в тождество. Процесс нахождения решения дифференциального уравнения называется интегрированием дифференциального уравнения.
Общим решением дифференциального уравнения первого порядка у’ = f(x, у) в области D называется функция у = φ(x, C), обладающая следующими свойствами: 1) она является решением данного уравнения при любых значениях произвольной постоянной С, принадлежащих некоторому множеству; 2) для любого начального условия у(х0) = у0 такого, что (x0; y0) ∈ 0, существует единственное значение С = С0, при котором решение у = φ(x, C0) удовлетворяет заданному начальному условию.
Всякое решение у = φ(x, C0), получающееся из общего решения у = φ (x, C) при конкретном значении С = С0, называется частным решением.
Задача, в которой требуется найти частное решение уравнения y’ = f(х, у) удовлетворяющее начальному условию у(х0) = y0, называется задачей Коши.
Построенный на плоскости хОу график всякого решения у = φ(х) дифференциального уравнения называется интегральной кривой этого уравнения. Таким образом, общему решению у = φ(х, С) на плоскости хОу соответствует семейство интегральных кривых, зависящее от одного параметра – произвольной постоянной С, а частному решению, удовлетворяющему начальному условию y(x0) = y0, – кривая этого семейства, проходящая через заданную точку М0(x0; у0).
Если функция f(х, у) непрерывна и имеет непрерывную производную в области D, то решение дифференциального уравнения у’= f (х, у) при начальном условии у(х0) = у0 существует и единственно, т. е. через точку (x0; y0) проходит единственная интегральная кривая данного уравнения (теорема Коши).
Особым решением называется такое решение, во всех точках которого условие единственности не выполняется, т. е. в любой окрестности каждой точки (х; у) особого решения существуют по крайней мере две интегральные кривые, проходящие через эту точку.
Особые решения не получаются из общего решения дифференциального управления ни при каких значениях произвольной постоянной С (в том числе и при С = ± ∞).
Особым решением является огибающая семейства интегральных кривых (если она существует), т. е. линия, которая в каждой своей точке касается по меньшей мере одной интегральной кривой.
Например, общее решение уравнения записывается в виде у = sin (х + С). Это семейство интегральных кривых имеет две огибающие: у = 1 и у = -1, которые и будут особыми решениями.
2. Дифференциальные уравнения с разделяющимися переменными. Дифференциальное уравнение вида
относится к типу уравнений с разделяющимися переменными. Если ни одна из функций f1(x), f2(y), φ1(x), φ2(y) не равна тождественно нулю, то в результате деления исходного уравнения на f2 (x) φ1 (y) оно приводится к виду
Почленное интегрирование последнего уравнения приводит к соотношению
которое и определяет (в неявной форме) решение исходного уравнения. (Решение дифференциального уравнения, выраженное в неявной форме, называют интегралом этого уравнения.)
507. Решить уравнение х(у²-4)dx + y dy = 0.
△ Разделив обе части уравнения на у² – 4 ≠ 0, имеем
x² + ln|у² – 4| = ln|C|, или у² – 4 = Сe -λ²
Это общее решение данного дифференциального уравнения.
Пусть теперь у² – 4 = 0, т. е. у = ± 2. Непосредственной подстановкой убеждаемся, что у = ±2 – решение исходного уравнения. Но оно не будет особым решением, так как его можно получить из общего решения при С = 0. ▲
508. Найти частный интеграл уравнения у’ cos х = у / ln у, удовлетворяющий начальному условию y(0) = l.
△ Полагая , перепишем данное уравнение в виде
Проинтегрируем обе части уравнения:
, или
Используя начальное условие у = 1 при х = 0, находим С = 0. Окончательно получаем
▲
509. Найти общий интеграл уравнения у’ = tg x tg y.
△ Полагая и разделяя переменные, приходим к уравнению ctg у dy = tg х dx. Интегрируя, имеем
, или ln|sin у| = -ln|cos x| + ln С.
Отсюда находим sin y = C/cos x, или sin y / cos x = С (общий интеграл). ▲
510. Найти частное решение дифференциального уравнения (l + x²)dy + y dx = 0 при начальном условии у(1) = 1.
△ Преобразуем данное уравнение к виду . Интегрируя, получим
, или ln |y| = – arctg x + С
Это и есть общий интеграл данного уравнения.
Теперь, используя начальное условие, найдем произвольную постоянную С; имеем ln 1 = — arctg 1 + С, т. е. С = π/4. Следовательно,
ln у = – arctg х + π/4,
откуда получаем искомое частное решение y = e π/4 – arctg x . ▲
Данко П. Е., Попов А. Г., Кожевникова Т. Я. Высшая математика в упражнениях и задачах… Ч. II. Стр. 117-119.
Задачи с начальными условиями для систем обыкновенных дифференциальных уравнений
Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений $$ \begin
Используя векторные обозначения, задачу (1), (2) можно записать как задачу Коши $$ \begin
Численные методы решения задачи Коши
Существует большое количество методов численного решения задачи (3), (4). Вначале рассмотрим простейший явный метод Эйлера и его программную реализацию. Затем будут представлены методы Рунге—Кутта и многошаговые методы.
При построении численных алгоритмов будем считать, что решение этой дифференциальной задачи существует, оно единственно и обладает необходимыми свойствами гладкости.
Идея численных методов решения задачи (3), (4) состоит из четырех частей:
1. Вводится расчетная сетка по переменной \( t \) (время) из \( N_t + 1 \) точки \( t_0 \), \( t_1 \), \( \ldots \), \( t_
2. Предполагаем, что дифференциальное уравнение выполнено в узлах сетки.
3. Аппроксимируем производные конечными разностями.
4. Формулируем алгоритм, который вычисляет новые значения \( \pmb
Явный метод Эйлера
Проиллюстрируем указанные шаги. Для начала введем расчетную сетку. Очень часто сетка является равномерной, т.е. имеет одинаковое расстояние между узлами \( t_n \) и \( t_
Затем, предполагаем, что уравнение выполнено в узлах сетки, т.е.: $$ \pmb^\prime (t_n) = \pmb
Заменяем производные конечными разностями. С этой целью, нам нужно знать конкретные формулы, как производные могут быть аппроксимированы конечными разностями. Простейший подход заключается в использовании определения производной: $$ \pmb^\prime(t) = \lim_ <\tau \to 0>\frac<\pmb(t+\tau) — \pmb(t)><\tau>. $$
В произвольном узле сетки \( t_n \) это определение можно переписать в виде: $$ \begin
Четвертый шаг заключается в получении численного алгоритма. Из (5) следует, что мы должны знать значение \( y^n \) для того, чтобы решить уравнение (5) относительно \( y^
При условии, что у нас известно начальное значение \( \pmb
Программная реализация явного метода Эйлера
Выражение (6) может быть как скалярным так и векторным уравнением. И в скалярном и в векторном случае на языке Python его можно реализовать следующим образом
При решении системы (векторный случай), u[n] — одномерный массив numpy длины \( m+1 \) (\( m \) — размерность задачи), а функция F должна возвращать numpy -массив размерности \( m+1 \), t[n] — значение в момент времени \( t_n \).
Таким образом численное решение на отрезке \( [0, T] \) должно быть представлено двумерным массивом, инициализируемым нулями u = np.zeros((N_t+1, m+1)) . Первый индекс соответствует временному слою, а второй компоненте вектора решения на соответствующем временном слое. Использование только одного индекса, u[n] или, что то же самое, u[n, :] , соответствует всем компонентам вектора решения.
Функция euler решения системы уравнений реализована в файле euler.py:
Строка F_ = lambda . требует пояснений. Для пользователя, решающего систему ОДУ, удобно задавать функцию правой части в виде списка компонент. Можно, конечно, требовать чтобы пользователь возвращал из функции массив numpy , но очень легко осуществлять преобразование в самой функции решателе. Чтобы быть уверенным, что результат F будет нужным массивом, который можно использовать в векторных вычислениях, мы вводим новую функцию F_ , которая вызывает пользовательскую функцию F «прогоняет» результат через функцию assaray модуля numpy .
Неявный метод Эйлера
При построении неявного метода Эйлера значение функции \( F \) берется на новом временном слое, т.е. для решении задачи (5) используется следующий метод: $$ \begin
Таким образом для нахождения приближенного значения искомой функции на новом временном слое \( t_
Для решения уравнения (8) можно использовать, например, метод Ньютона.
Программная реализация неявного метода Эйлера
Функция backward_euler решения системы уравнений реализована в файле euler.py:
Отметим, что для нахождения значения u[n+1] используется функция fsolve модуля optimize библиотеки scipy . В качестве начального приближения для решения нелинейного уравнения используется значение искомой функции с предыдущего слоя u[n] .
Методы Рунге—Кутта
Одношаговый метод Рунге—Кутта в общем виде записывается следующим образом: $$ \begin
Одним из наиболее распространенных является явный метод Рунге-Кутта четвертого порядка: $$ \begin
Многошаговые методы
В методах Рунге—Кутта в вычислениях участвуют значения приближенного решения только в двух соседних узлах \( \pmb
Различные варианты многошаговых методов (методы Адамса) решения задачи с начальными условиями для систем обыкновенных дифференциальных уравнений могут быть получены на основе использования квадратурных формул для правой части равенства $$ \begin
Для получения неявного многошагового метода используем для подынтегральной функции интерполяционную формулу по значениям функции \( \pmb
Для интерполяционного метода Адамса (15) наивысший порядок аппроксимации равен \( m+1 \).
Для построения явных многошаговых методов можно использовать процедуру экстраполяции подынтегральной функции в правой части (14). В этом случае приближение осуществляется по значениям \( \pmb
Для экстраполяционного метода Адамса (16) погрешность аппроксимации имеет \( m \)-ый порядок.
На основе методов Адамса строятся и схемы предиктор–корректор. На этапе предиктор используется явный метод Адамса, на этапе корректора — аналог неявного метода Адамса. Например, при использовании методов третьего порядка аппроксимации в соответствии с (18) для предсказания решения положим $$ \frac<\pmb
Жесткие системы ОДУ
При численном решении задачи Коши для систем обыкновенных дифференциальных уравнений (3), (4) могут возникнуть дополнительные трудности, порожденные жесткостью системы. Локальные особенности поведения решения в точке \( u = w \) передаются линейной системой $$ \begin
Пусть \( \lambda_i(t) \), \( i = 1, 2, \ldots, m \) — собственные числа матрицы $$ \begin
Для численное решения жестких задач используются вычислительные алгоритмы, которые имеют повышенный запас устойчивости. Необходимо ориентироваться на использование \( A \)-устойчивых или \( A(\alpha) \)-устойчивых методов.
Метод называется \( A \)-устойчивым, если при решении задачи Коши для системы (3) область его устойчивости содержит угол $$ \begin
Порядок дифференциального уравнения и его решения, задача Коши
Обыкновенным дифференциальным уравнением называется уравнение, связывающее независимую переменную, неизвестную функцию этой переменной и её производные (или дифференциалы) различных порядков.
Порядком дифференциального уравнения называется порядок старшей производной, содержащейся в нём.
Кроме обыкновенных изучаются также дифференциальные уравнения с частными производными. Это уравнения, связывающие независимые переменные , неизвестную функцию этих переменных и её частные производные по тем же переменным. Но мы будем рассматривать только обыкновенные дифференциальные уравнения и поэтому будем для краткости опускать слово «обыкновенные».
Примеры дифференциальных уравнений:
(1) ;
(2) ;
(3) ;
(4) ;
(5) .
Уравнение (1) — четвёртого порядка, уравнение (2) — третьего порядка, уравнения (3) и (4) — второго порядка, уравнение (5) — первого порядка.
Дифференциальное уравнение n-го порядка не обязательно должно содержать явно функцию, все её производные от первого до n-го порядка и независимую переменную. В нём могут не содержаться явно производные некоторых порядков, функция, независимая переменная.
Например, в уравнении (1) явно нет производных третьего и второго порядков, а также функции; в уравнении (2) — производной второго порядка и функции; в уравнении (4) — независимой переменной; в уравнении (5) — функции. Только в уравнении (3) содержатся явно все производные, функция и независимая переменная.
Решением дифференциального уравнения называется всякая функция y = f(x), при подстановке которой в уравнение оно обращается в тождество.
Процесс нахождения решения дифференциального уравнения называется его интегрированием.
Пример 1. Найти решение дифференциального уравнения .
Решение. Запишем данное уравнение в виде . Решение состоит в нахождении функции по её производной. Изначальная функция, как известно из интегрального исчисления, есть первообразная для , т. е.
.
Это и есть решение данного дифференциального уравнения. Меняя в нём C, будем получать различные решения. Мы выяснили, что существует бесконечное множество решений дифференциального уравнения первого порядка.
Общим решением дифференциального уравнения n-го порядка называется его решение, выраженное явно относительно неизвестной функции и содержащее n независимых произвольных постоянных, т. е.
Решение дифференциального уравнения в примере 1 является общим.
Частным решением дифференциального уравнения называется такое его решение, в котором произвольным постоянным придаются конкретные числовые значения.
Пример 2. Найти общее решение дифференциального уравнения и частное решение при .
Решение. Проинтегрируем обе части уравнения такое число раз, которому равен порядок дифференциального уравнения.
,
,
.
В результате мы получили общее решение —
данного дифференциального уравнения третьего порядка.
Теперь найдём частное решение при указанных условиях. Для этого подставим вместо произвольных коэффициентов их значения и получим
.
Если кроме дифференциального уравнения задано начальное условие в виде , то такая задача называется задачей Коши. В общее решение уравнения подставляют значения и и находят значение произвольной постоянной C, а затем частное решение уравнения при найденном значении C. Это и есть решение задачи Коши.
Пример 3. Решить задачу Коши для дифференциального уравнения из примера 1 при условии .
Решение. Подставим в общее решение значения из начального условия y = 3, x = 1. Получаем
.
Записываем решение задачи Коши для данного дифференциального уравнения первого порядка:
.
При решении дифференциальных уравнений, даже самых простых, требуются хорошие навыки интегрирования и взятия производных, в том числе сложных функций. Это видно на следующем примере.
Пример 4. Найти общее решение дифференциального уравнения .
Решение. Уравнение записано в такой форме, что можно сразу же интегрировать обе его части.
.
Применяем метод интегрирования заменой переменной (подстановкой). Пусть , тогда .
Требуется взять dx и теперь — внимание — делаем это по правилам дифференцирования сложной функции, так как x и есть сложная функция («яблоко» — извлечение квадратного корня или, что то же самое — возведение в степень «одна вторая», а «фарш» — самое выражение под корнем):
Возвращаясь к переменной x, получаем:
.
Это и есть общее решение данного дифференциального уравнения первой степени.
Не только навыки из предыдущих разделов высшей математики потребуются в решении дифференциальных уравнений, но и навыки из элементарной, то есть школьной математики. Как уже говорилось, в дифференциальном уравнении любого порядка может и не быть независимой переменной, то есть, переменной x. Помогут решить эту проблему не забытые (впрочем, у кого как) со школьной скамьи знания о пропорции. Таков следующий пример.
Пример 5. Найти общее решение дифференциального уравнения .
Решение. Как видим, переменная x в уравнении отсутствует. Вспоминаем из курса дифференциального исчисления, что производная может быть записана также в виде . В результате уравнение приобретает вид
,
то есть, в нём в некотором виде появился x.
Теперь вспомнаем одно из свойств пропорции: из пропорции выткают следующие пропорции:
,
то есть в пропорции можно менять местами крайние и средние члены или те и другие одновременно.
Применяя это свойство, преобразуем уравнение к виду
,
после чего интегрируем обе части уравнения:
.
Оба интеграла — табличные, находим их:
и получаем решение данного дифференциалного уравнения первого порядка:
.
Эта статья представила необходимый минимум сведений о дифференциальных уравнениях и их решениях и должна помочь вам уверенно и увлечённо перейти к изучению различных видов дифференциальных уравнений.
http://slemeshevsky.github.io/num-mmf/ode/html/._ode-FlatUI001.html
http://function-x.ru/differential_equations1.html