Способ решения задачи коши

Задача Коши для дифференциального уравнения

Найти решение задачи Коши для дифференциального уравнения — это значит, найти общее решение, удовлетворяющее дополнительным условиям. Конкретно говоря, необходимо численно определить в общем решении все константы, количество которых равно порядку ДУ. Для понимания рассмотрим примеры задач.

Перед нами ДУ с разделяющимися переменными. Чтобы это понять достаточно записать производную в виде $y’=\frac$. Затем по переносим переменные по разные стороны уравнения. $$\frac=\frac<1><\sqrt>$$ $$dy = \frac<\sqrt>$$Интегрируем обе части равенства, используя таблицу интегрирования $$\int dy = \int \frac<\sqrt>,$$ получаем общее решение дифференциального уравнения $$y = \ln|x+\sqrt| + C.$$

Зная общее решение можно перейти к задаче Коши. Необходимо найти чем равна константа $C$. Для этого воспользуемся данными, указанными в условии к заданию $y(1)=0$. В нём $x=1$ и $y=0$. Берем и подставляем эти значения в общее решение ДУ $$\ln|1+\sqrt<1^2-1>| + C = 0,$$ $$\ln1+C=0,$$ $$C=0.$$

Теперь, зная, что $C=0$ можно записать найденное решение задачи Коши в окончательном виде $$y=\ln|x+\sqrt|.$$

Если не получается решить свою задачу, то присылайте её к нам. Мы предоставим подробное решение. Вы сможете ознакомиться с ходом вычисления и почерпнуть информацию. Это поможет своевременно получить зачёт у преподавателя!

Пример 1
Решить задачу Коши для дифференциального уравнения $y’=\frac<1><\sqrt>$ с дополнительным условием $y(1)=0$.
Решение
Ответ
$$y=\ln|x+\sqrt|$$

Перед нами линейное ДУ первого порядка. Решим его методом Бернулли с помощью подстановки $y=uv \Rightarrow y’ = u’v+uv’$. Получаем: $$u’v+uv’+uv\cos x=e^<-\sin x>.$$ Выносим за скобки $u$ и составляем систему уравнений путем приравнивания скобок к нулю. $$u’v+u(v’+v\cos x)=e^<-\sin x>$$ $$\begin v’+v\cos x=0 \\ u’v=e^ <-\sin x>\end$$

В первом уравнении необходимо разделить переменные и найти чему равно $v$, чтобы подставить во второе уравнение для нахождения $u$. $$\begin \frac+v\cos x=0 \\ u’v=e^ <-\sin x>\end \Leftrightarrow \begin \frac=-\cos x dx \\ u’v=e^ <-\sin x>\end$$ Интегрируем первое уравнение $$\begin \int \frac=-\int \cos x dx \\ u’v=e^ <-\sin x>\end \Leftrightarrow \begin \ln|v|=-\sin x \\ u’v=e^ <-\sin x>\end,$$ $$\begin v=e^ <-\sin x>\\ u’v=e^ <-\sin x>\end \Leftrightarrow \begin v=e^ <-\sin x>\\ u’ = 1 \end.$$Обратите внимание что во второе уравнение подставили полученное $v=e^<-\sin x>$ и после сокращения получилась единица. В итоге система имеет решение $$\begin v=e^ <-\sin x>\\ u = x+C \end.$$

Вспоминаем про подстановку, которую проводили в самом начале решения задачи $y=uv$. Зная теперь $u$ и $v$ можно записать общее решение ДУ $$y=(x+C)e^<-\sin x>.$$ В условии задания просят найти решение дифференциального уравнения удовлетворяющее условию $y(0)=0$, поэтому вместо $x$ и $y$ подставим нули и вычислим $C$ из последнего уравнения: $$(0+C)e^ <-\sin 0>= 0,$$ $$C=0.$$ Вот теперь можно записать окончательный ответ решения задачи Коши $$y = xe^<-\sin x>$$

Пример 2
Найти решение задачи Коши для дифференциального уравнения $y’+y\cos x=e^<-\sin x>$ с условием $y(0)=0$.
Решение
Ответ
$$y = xe^<-\sin x>$$

Дано неоднородное ДУ второго порядка с постоянными коэффициентами. Общее решение которого будет иметь вид $y_ <о.н.>= y_ <о.о.>+ y_<ч.н.>$. Для начала находим общее решение однородного уравнения $y_$, затем частное решение неоднородного уравнения $y_<ч.н.>$ с помощью метода подбора правой части уравнения.

На первом этапе решаем уравнение в качестве однородного без правой части, то есть меняем её на ноль. Заменяем все $y$ на новую переменную $\lambda$, показатель степени которой будет равен порядку производной. $$y»-y=0,$$ $$\lambda^2 — 1 = 0,$$ $$(\lambda-1)(\lambda+1)=0,$$ $$\lambda_1 = -1, \lambda_2 = 1.$$ Теперь можно записать общее решение однородного ДУ. $$y_ <о.о.>= C_1e^<\lambda x>+C_2e^ <-\lambda x>= C_1e^+C_2e^<-x>$$

Переходим к получению $y_<ч.н.>$. Смотрим на правую часть уравнения, данного в условии задачи. В неё входят синус и косинус, умноженные на многочлены нулевой степени. Значит, частное решение ищем в виде $y_ <ч.н.>= A\sin x — B\cos x$. Находим вторую производную данного выражения. $$y’ = A\cos x + B\sin x,$$ $$y»=-A\sin x + B\cos x.$$ Подставляем $y$ и $y»$ в исходное уравнение из условия задачи, чтобы найти неизвестные коэффициенты $A$ и $B$. $$-A\sin x + B\cos x — A\sin x + B\cos x = 2\sin x — 4\cos x$$ После приведения подобных получаем $$-2A\sin x + 2B\cos x = 2\sin x — 4\cos x.$$ Далее составляем систему из двух уравнений благодаря коэффициентам перед синусом и косинусом левой и правой части уравнения. $$\begin -2A = 2 \\ 2B = -4 \end \Leftrightarrow \begin A = -1 \\ B = -2 \end$$ Благодаря полученным коэффициентам $A$ и $B$ записываем $$y_ <ч.н.>= -\sin x + 2\cos x$$

Итак, общее решение неоднородного дифференциального уравнения в итоге будет иметь вид $$y_ <о.н.>= y_ <о.о.>+ y_ <ч.н.>= C_1e^+C_2e^ <-x>-\sin x + 2\cos x.$$

Так как требуется найти решение задачи Коши, то ход действий на этом не закончен. Переходим к вычислению коэффициентов $C_1$ и $C_2$.

Берём первую производную $y’ = C_1e^x — C_2e^ <-x>— \cos x — 2\sin x$.

Теперь можно составить систему уравнений $$\begin y'(0)=0 \\ y(0) = 0 \end \Leftrightarrow \begin C_1 — C_2 — 1 = 0 \\ C_1 + C_2 + 2 = 0 \end.$$ Решаем систему уравнений. $$\begin C_1 = C_2 + 1 \\ C_2 + 1 + C_2 + 2 = 0 \end \Leftrightarrow \begin C_1 = C_2 + 1 \\ C_2 = -\frac<3> <2>\end \Leftrightarrow \begin C_1 = -\frac<1> <2>\\ C_2 = -\frac<3> <2>\end.$$

Теперь подставляя полученные константы в общее решение дифференциального уравнения записываем решение задачи Коши в окончательном виде $$y = -\frac<1><2>e^x — \frac<3><2>e^ <-x>-\sin x + 2\cos x.$$

Источник

Задачи с начальными условиями для систем обыкновенных дифференциальных уравнений

Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений $$ \begin \tag <1>\frac &= f_i (t, u_1, u_2, \ldots, u_n), \quad t > 0\\ \tag <2>u_i(0) &= u_i^0, \quad i = 1, 2, \ldots, m. \end $$

Используя векторные обозначения, задачу (1), (2) можно записать как задачу Коши $$ \begin \tag <3>\frac> &= \pmb(t, \pmb), \quad t > 0, \\ \tag <4>\pmb(0) &= \pmb_0 \end $$ В задаче Коши необходимо по известному решению в точке \( t = 0 \) необходимо найти из уравнения (3) решение при других \( t \).

Численные методы решения задачи Коши

Существует большое количество методов численного решения задачи (3), (4). Вначале рассмотрим простейший явный метод Эйлера и его программную реализацию. Затем будут представлены методы Рунге—Кутта и многошаговые методы.

При построении численных алгоритмов будем считать, что решение этой дифференциальной задачи существует, оно единственно и обладает необходимыми свойствами гладкости.

Идея численных методов решения задачи (3), (4) состоит из четырех частей:

1. Вводится расчетная сетка по переменной \( t \) (время) из \( N_t + 1 \) точки \( t_0 \), \( t_1 \), \( \ldots \), \( t_ \). Нужно найти значения неизвестной функции \( \pmb \) в узлах сетки \( t_n \). Обозначим через \( \pmb^n \) приближенное значение \( \pmb(t_n) \).

2. Предполагаем, что дифференциальное уравнение выполнено в узлах сетки.

3. Аппроксимируем производные конечными разностями.

4. Формулируем алгоритм, который вычисляет новые значения \( \pmb^ \) на основе предыдущих вычисленных значений \( \pmb^k \), \( k 0 \) при \( \tau\to 0 \).

Явный метод Эйлера

Проиллюстрируем указанные шаги. Для начала введем расчетную сетку. Очень часто сетка является равномерной, т.е. имеет одинаковое расстояние между узлами \( t_n \) и \( t_ \): $$ \omega_\tau = \< t_n = n \tau, n = 0, 1, \ldots, N_t \>. $$

Затем, предполагаем, что уравнение выполнено в узлах сетки, т.е.: $$ \pmb^\prime (t_n) = \pmb(t_n, u(t_n)), \quad t_n \in \omega_\tau. $$

Заменяем производные конечными разностями. С этой целью, нам нужно знать конкретные формулы, как производные могут быть аппроксимированы конечными разностями. Простейший подход заключается в использовании определения производной: $$ \pmb^\prime(t) = \lim_ <\tau \to 0>\frac<\pmb(t+\tau) — \pmb(t)><\tau>. $$

В произвольном узле сетки \( t_n \) это определение можно переписать в виде: $$ \begin \pmb^\prime(t_n) = \lim_ <\tau \to 0>\frac<\pmb(t_n+\tau) — \pmb(t_n)><\tau>. \end $$ Вместо того, чтобы устремлять шаг сетки к нулю, мы можем использовать малый шаг \( \tau \), который даст численное приближение \( u^\prime(t_n) \): $$ \begin \pmb^\prime(t_n) \approx \frac<\pmb^ — \pmb^><\tau>. \end $$ Такая аппроксимация известна как разностная производная вперед и имеет первый порядок по \( \tau \), т.е. \( O(\tau) \). Теперь можно использовать аппроксимацию производной. Таким образом получим явный метод Эйлера: $$ \begin \tag <5>\frac<\pmb^ — \pmb^n> <\tau>= \pmb(t_n, \pmb^). \end $$

Четвертый шаг заключается в получении численного алгоритма. Из (5) следует, что мы должны знать значение \( y^n \) для того, чтобы решить уравнение (5) относительно \( y^ \) и получить формулу для нахождения приближенного значения искомой функции на следующем временном слое \( t_ \): $$ \begin \tag <6>\pmb^ = \pmb^n + \tau \pmb(t_n, \pmb^) \end $$

При условии, что у нас известно начальное значение \( \pmb^0 = \pmb_0 \), мы можем использовать (6) для нахождения решений на последующих временных слоях.

Программная реализация явного метода Эйлера

Выражение (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 \tag <7>\frac<\pmb^ — \pmb^n> <\tau>= \pmb(t_, \pmb^). \end $$

Таким образом для нахождения приближенного значения искомой функции на новом временном слое \( t_ \) нужно решить нелинейное уравнение относительно \( \pmb^ \): $$ \begin \tag <8>\pmb^ — \tau \pmb(t_, \pmb^) — y^n = 0. \end $$

Для решения уравнения (8) можно использовать, например, метод Ньютона.

Программная реализация неявного метода Эйлера

Функция backward_euler решения системы уравнений реализована в файле euler.py:

Отметим, что для нахождения значения u[n+1] используется функция fsolve модуля optimize библиотеки scipy . В качестве начального приближения для решения нелинейного уравнения используется значение искомой функции с предыдущего слоя u[n] .

Методы Рунге—Кутта

Одношаговый метод Рунге—Кутта в общем виде записывается следующим образом: $$ \begin \tag <9>\frac<\pmb^ — \pmb^n> <\tau>= \sum_^s b_i \pmb_i, \end $$ где $$ \begin \tag <10>\pmb_i = \pmb\left( t_n + c_i\tau, \pmb^n + \tau \sum_^s a_\pmb_j \right), \quad i = 1, 2, \ldots, s. \end $$ Формула (9) основана на \( s \) вычислениях функции \( \pmb \) и называется \( s \)-стадийной. Если \( a_ = 0 \) при \( j \geq i \) имеем явный метод Рунге—Кутта. Если \( a_ = 0 \) при \( j > i \) и \( a_ \ne 0 \), то \( \pmb_i \) определяется неявно из уравнения $$ \begin \tag <11>\pmb_i = \pmb\left( t_n + c_i\tau, \pmb^n + \tau \sum_^ a_\pmb_j + \tau a_ \pmb_i \right), \quad i = 1, 2, \ldots, s. \end $$ О таком методе Рунге—Кутта говорят как о диагонально-неявном.

Одним из наиболее распространенных является явный метод Рунге-Кутта четвертого порядка: $$ \begin \tag <12>\pmb_1 & = \pmb(t_n, \pmb^n), &\quad \pmb_2 &= \pmb\left( t_n + \frac<\tau><2>, \pmb^n + \tau \frac<\pmb_1> <2>\right),\\ \pmb_3 &= \pmb\left( t_n + \frac<\tau><2>, \pmb^n + \tau \frac<\pmb_2> <2>\right), &\quad \pmb_4 &= \pmb\left( t_n + \tau, \pmb^n + \tau \pmb_3 \right),\\ \frac<\pmb^ -\pmb^n> <\tau>&= \frac<1> <6>(\pmb_1 + 2\pmb_2 + 2\pmb_3 + \pmb_4) & & \end $$

Многошаговые методы

В методах Рунге—Кутта в вычислениях участвуют значения приближенного решения только в двух соседних узлах \( \pmb^n \) и \( \pmb^ \) — один шаг по переменной \( t \). Линейный \( m \)-шаговый разностный метод записывается в виде $$ \begin \tag <13>\frac<1> <\tau>\sum_^m a_i \pmb^ = \sum_^ b_i \pmb(t_, \pmb^), \quad n = m-1, m, \ldots \end $$ Вариант численного метода определяется заданием коэффициентов \( a_i \), \( b_i \), \( i = 0, 1, \ldots, m \), причем \( a_0 \ne 0 \). Для начала расчетов по рекуррентной формуле (13) необходимо задать \( m \) начальных значений \( \pmb^0 \), \( \pmb^1 \), \( \dots \), \( \pmb^ \) (например, можно использовать для их вычисления метод Эйлера).

Различные варианты многошаговых методов (методы Адамса) решения задачи с начальными условиями для систем обыкновенных дифференциальных уравнений могут быть получены на основе использования квадратурных формул для правой части равенства $$ \begin \tag <14>\pmb(t_) — \pmb(t_n) = \int_^> \pmb(t, \pmb) dt \end $$

Для получения неявного многошагового метода используем для подынтегральной функции интерполяционную формулу по значениям функции \( \pmb^ = \pmb(t_, \pmb^) \), \( \pmb^n \), \( \dots \), \( \pmb^ \), т.е. $$ \begin \tag <15>\frac<\pmb^ — \pmb^n> <\tau>= \sum_^ b_i \pmb(t_, \pmb^) \end $$

Для интерполяционного метода Адамса (15) наивысший порядок аппроксимации равен \( m+1 \).

Для построения явных многошаговых методов можно использовать процедуру экстраполяции подынтегральной функции в правой части (14). В этом случае приближение осуществляется по значениям \( \pmb^n \), \( \pmb^ \), \( \dots \), \( \pmb^ \) и поэтому $$ \begin \tag <16>\frac<\pmb^ — \pmb^n> <\tau>= \sum_^ b_i \pmb(t_, \pmb^) \end $$

Для экстраполяционного метода Адамса (16) погрешность аппроксимации имеет \( m \)-ый порядок.

На основе методов Адамса строятся и схемы предиктор–корректор. На этапе предиктор используется явный метод Адамса, на этапе корректора — аналог неявного метода Адамса. Например, при использовании методов третьего порядка аппроксимации в соответствии с (18) для предсказания решения положим $$ \frac<\pmb^ — \pmb^n> <\tau>= \frac<1> <12>(23 \pmb^ -16\pmb^ + 5\pmb^). $$ Для уточнеия решения (см. (17)) используется схема $$ \frac<\pmb^ — \pmb^n> <\tau>= \frac<1> <24>(9\pmb^ + 19\pmb^ — 5\pmb^ + \pmb^). $$ Аналогично строятся и другие классы многошаговых методов.

Жесткие системы ОДУ

При численном решении задачи Коши для систем обыкновенных дифференциальных уравнений (3), (4) могут возникнуть дополнительные трудности, порожденные жесткостью системы. Локальные особенности поведения решения в точке \( u = w \) передаются линейной системой $$ \begin \frac

= \sum_^ \frac<\partial f_i> <\partial u_j>(t, w) v + \bar(t), \quad t > 0. \end $$

Пусть \( \lambda_i(t) \), \( i = 1, 2, \ldots, m \) — собственные числа матрицы $$ \begin A(t) = \< a_(t) \>, \quad a_(t) = \frac<\partial f_i><\partial u_j>(t, w). \end $$ Система уравнений (3) является жесткой, если число $$ \begin S(t) = \frac <\max_<1 \leq i \leq m>|Re \lambda_i(t)|> <\min_<1 \leq i \leq m>|Re \lambda_i(t)|> \end $$ велико. Это означает, что в решении присутствуют составляющие с сильно различающимися масштабами изменения по переменной \( t \).

Для численное решения жестких задач используются вычислительные алгоритмы, которые имеют повышенный запас устойчивости. Необходимо ориентироваться на использование \( A \)-устойчивых или \( A(\alpha) \)-устойчивых методов.

Метод называется \( A \)-устойчивым, если при решении задачи Коши для системы (3) область его устойчивости содержит угол $$ \begin |\arg(-\mu)| —>

Источник

Читайте также:  Home assistant вы используете неподдерживаемый способ установки
Оцените статью
Разные способы
Пример 3
Решить задачу Коши для дифференциального уравнения $y»-y=2\sin x-4\cos x$ с начальным условием $y(0)=0, y'(0)=0$.
Решение