-
Notifications
You must be signed in to change notification settings - Fork 14
/
chapter02.qq
268 lines (233 loc) · 20 KB
/
chapter02.qq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
\chapter Автономные дифференциальные уравнения на прямой
\label chap:2:auto
Итак, давайте научимся решать какие-нибудь дифференциальные уравнения. Для
начала — очень простые.
В этой главе мы будем рассматривать дифференциальные уравнения вида
\equation \label eq:2:general
\dot x = f(t, x),
где $x\colon D \to \mathbb R$ — неизвестная функция, $D$ — связное подмножество
прямой (вся прямая, луч, отрезок, полуинтервал, интервал), $f\colon D\times
\mathbb R\to \mathbb R$ — некоторая по меньшей мере непрерывная (а лучше бы
гладкая, как мы увидим чуть позже) функция от двух переменных.
Напомним, что решением уравнения \ref{eq:2:general} называется дифференцируемая
функция $\ph$, такая, что выполнено тождество
\eq
\dot \ph(t)=f(t,\ph(t))\quad \forall t \in D
Обсудим для начала, как можно было бы находить значение функции $\ph$, не
пытаясь выписать решение в виде явной формулы. Оказывается, с помощью компьютера
это довольно несложно сделать — правда, решение будет не точным, а приближённым.
Обсуждение этого метода окажется полезным и для наших дальнейших аналитических
построений.
\section Численное решение дифференциальных уравнений. Метод Эйлера
\label sec:2:euler
Пусть поставлена \snref[задача Коши][snip:Cauchy_problem]:
\equation \label eq:2:Cauchy
\dot x=f(t, x),\quad x(t_0)=x_0.
Мы можем приблизительно решать её таким образом. Возьмём произвольную точку
$(t_0, x_0)$ расширенного фазового пространства. Интегральная кривая, проходящая
через эту точку, имеет в ней касательную с угловым коэффициентом $f(t_0, x_0)$.
Касательная — это прямая, которая хорошо приближает график функции. Давайте на
секундочку представим, что \snref[интегральная кривая][snip:integral_curve] в
точности совпадает с касательной на некотором небольшом промежутке времени —
начиная с момента $t_0$ и заканчивая $t_0+\Delta t$, где $\Delta t$ — некоторое
маленькое число. Иными словами, мы считаем, что на этом промежутке двигаемся с
постоянной скоростью — той, которая была в момент времени $t_0$, то есть $f(t_0,
x_0)$. В этом случае к моменту времени $t_0+\Delta t$ мы пройдём расстояние,
равное $f(t_0, x_0)\cdot \Delta t$ и попадём в точку $(t_1, x_1)$, задаваемую
следующим образом:
\align \nonumber
\item x_1&=x_0+f(t_0, x_0)\cdot \Delta t
\item t_1&=t_0+\Delta t
Точка $(t_1, x_1)$ лежит на касательной, проходящей через точку $(t_0, x_0)$.
Если $\Delta t$ мало, эта точка должна лежать близко к графику настоящего
решения. Теперь мы можем взять точку $(t_1, x_1)$ за стартовую, построить в ней
уже новую касательную и пройти по этой касательной ещё на $\Delta t$ вправо.
Действуя таким образом, получим набор точек, связанных соотношением:
\align \nonumber
\item x_{n+1}&=x_n+f(t_n, x_n)\cdot \Delta t
\item t_{n+1}&=t_{n}+\Delta t=t_0+(n+1)\Delta t
Если соединить эти точки отрезками прямых, они будут проходить близко к
касательным к графику решения, и сама получающаяся ломаная будет приближаться к
настоящему решению. Естественно, с уменьшением шага точность приближения
увеличивается.
Этот метод приближённого нахождения решений называется \em{методом
Эйлера}. Он даёт представление о том, как можно использовать компьютер для
исследования дифференциальных уравнений. На практике, впрочем, используются
более сложные методы, хотя принцип их работы в целом очень схож.
На рис. \ref{fig:2:euler} синим изображено истинное решение уравнения $\dot x =
t$ с начальным условием $x(-3)=4$, а красным, розовым, фиолетовым и зеленым
изображены численные решения уравнения методом Эйлера 5, 10, 20 и 100 шагами
соответственно. Заметим, что уже сто шагов дает достаточно хорошее приближение
решения.
\figure \label fig:2:euler \showcode \collapsed
\pythonfigure
ob.axes4x4()
ob.eulersplot(lambda t, x: t, -3, 4, 4, 5, color='red')
ob.eulersplot(lambda t, x: t, -3, 4, 4, 10, color='pink')
ob.eulersplot(lambda t, x: t, -3, 4, 4, 20, color='purple')
ob.eulersplot(lambda t, x: t, -3, 4, 4, 100, color='green')
ob.mplot(np.linspace(-4,4),lambda x: x**2 / 2 - 0.5,
color='steelblue')
\caption Приближённые решения
\exercise
Используя метод Эйлера (но не используя компьютер), найти решение
дифференциального уравнения $\dot x = x$, удовлетворяюее начальному
условию $x(0) = 1$. Отсюда найти одну из известных формул для числа $e$.
\section Аналитическое решение автономных дифференциальных уравнений на прямой
Вернёмся к аналитическому поиску решений. В отличие от численных методов, даже
для уравнений в размерности 1 найти решение аналитически не всегда возможно — а
чаще так и невозможно. Но если несколько сузить класс рассматриваемых уравнений,
то у нас всё получится.
\definition \label def:2:auto
\snippet \label snip:auto \flabel Автономное
\em{Автономным} называется дифференциальное уравнение, правая
часть которого не зависит от времени явно. Такое уравнение
имеет вид
\equation \label{eq:2:auto}
\dot x=f(x)
\hide
\snippet \hidden \label snip:nonauto \flabel Неавтономное
\backref def:2:auto
\emph{Неавтономным} называется дифференциальное уравнение, правая часть
которого явно зависит от времени: $\dot x = f(t, x)$.
Рассмотрим задачу Коши для автономного дифференциального уравнения
\ref{eq:2:auto} с
начальным условием $x(t_0)=x_0$. Пусть $f(x_0)\ne 0$. В этом случае решение
задаётся явной формулой (она называется \em{формулой Барроу}). Мы обсудим
несколько способов её вывода и интерпретации.
\subsection Геометрические соображения
В предыдущей главе мы обсуждали, что существует специальный класс дифференциальных
уравнений, которые очень просто решаются: это уравнения вида $\dot x = f(t)$,
мгновенно сводящиеся к интегрированию (см. \ref[параграф][par:1:onlytime]). Мы
будем называть такие уравнения \em{простейшими}, хотя это не общепринятый термин.
Рассмотрим поля направлений двух уравнений: первое является простейшим, а второе
автономным, см. рис. \ref{fig:2:xt}.
\figure \label fig:2:xt \showcode \collapsed
\pythonfigure
plt.figure(figsize=(8, 4))
plt.subplot(121)
ob.axes4x4()
ob.normdirfield(np.arange(-4, 4, 0.5),
np.arange(-4, 4, 0.5),
lambda t, x: t,
color='red',
linewidth=1,
length=0.6)
plt.subplot(122)
ob.axes4x4()
ob.normdirfield(np.arange(-4, 4, 0.5),
np.arange(-4, 4, 0.5),
lambda t, x: x,
color='red',
linewidth=1,
length=0.6)
\caption Поля направлений для уравнения $\dot x = t$ (слева) и $\dot x = x$ (справа)
Это совсем разные уравнения, но их поля направлений обладают неким сходством:
они не меняются при сдвигах. Разница в том, что первое поле направлений не
меняется при \em{вертикальных} сдвигах, а второе — при \em{горизонтальных}.
Нетрудно понять, что аналогичными свойствами обладают все уравнения этих двух
классов.
Напомним, что задача отыскания решения дифференциального уравнения имеет простую
геометрическую интерпретацию: нужно найти кривую, касающуюся в каждой своей
точке соответствующего поля направлений. Вместе со сходством полей направлений
это даёт надежду, что нам удастся придумать метод решения автономных уравнений,
сводящий их к некоторым простейшим.
Оказывается, сделать это довольно просто: достаточно поменять роль осей и
считать независимой переменной $x$, а неизвестной функцией — время. Ниже мы
обсудим два способа реализации этого замысла.
\subsection Механический подход \label{par:2:mech}
Решить дифференциальное уравнение — это значит научиться отвечать на вопрос о
том, где окажется решение в произвольный момент времени $t$, если в момент
времени $t_0$ оно находилось в точке $x_0$. В соответствии с
выводами предыдущего пункта, поменяем роли переменных и зададим другой вопрос:
сколько времени потребуется, чтобы добраться из точки $x_0$ до некоторой другой точки
$x$?
Попробуем ответить на этот вопрос (хотя бы приближённо) с помощью аналога метода
Эйлера (см. \ref[раздел][sec:2:euler]). Предположим для определённости, что
$x>x_0$ и $f(x_0)>0$ (вблизи $x_0$ движение происходит вправо; обратный случай
рассматривается полностью аналогично). Предположим также, что на всём отрезке
$[x_0, x]$ функция $f$ принимает только положительные значения (чуть ниже мы
обсудим, что это вполне разумное предположение). Разобьем отрезок $[x_0, x]$ на
$n$ равных маленьких отрезочков длины $\Delta x$. Пусть $x_k = x_0 + k\cdot
\Delta x$ — концы наших отрезочков. Сколько времени нужно, чтобы попасть из
точки $x_k$ в точку $x_{k+1}$? Для этого нам придётся пройти расстояние, равное
$\Delta x$. Мгновенная скорость движения в точке $x_k$ равна $f(x_k)$. Поскольку
$\Delta x$ мало, а функция $f$ непрерывна, можно ожидать, что её значение не
слишком сильно изменится, по крайней мере, пока мы находимся на том же
отрезочке. Значит, можно считать (совершая некоторую ошибку, малую при малых
$\Delta x$), что движение на всём отрезочке происходит с постоянной скоростью,
равной $f(x_k)$. Тогда время движения вычисляется по школьной формуле: нужно
расстояние $\Delta x$ поделить на скорость $f(x_k)$. Обозначим вычисленное таким
образом время прохождения $k$-го отрезочка через $\Delta t_k$. Имеем:
\equation \label{eq:2:Delta_t}
\Delta t_k = \frac{\Delta x}{f(x_k)}
Пусть мы оказались в точке $x$ в момент времени $t$. Тогда время прохождения
всего отрезка от $x_0$ до $x$ равна $t-t_0$ и получается сложением всех
$\Delta t_k$ для $k=0, \ldots, n-1$:
\equation \label{eq:2:T}
t-t_0 \approx \sum_{k=0}^{n-1} \Delta t_k = \sum_{k=0}^{n-1}
\frac{1}{f(x_k)}\Delta x
Ну-ка, что у нас тут в правой части? Это же интегральные суммы для функции
$\frac{1}{f(x)}$! Равенство \ref{eq:2:T} является приближённым, но когда мы
перейдём к
пределу при $\Delta x \to 0$ (или, что то же самое, при $n\to \infty$), оно
превратится в точное:
\equation \label{eq:2:Barrow}
t-t_0 = \int_{x_0}^x \frac{dy}{f(y)}.
Это соотношение и называется формулой Барроу. Его можно понимать как неявное
выражение $x$ через $t$. В некоторых ситуациях из него можно выразить функцию
$x(t)$ явно.
\subsection Аналитический подход
Приведём более формальный вывод формулы Барроу, опирающийся на математический
анализ. Пусть функция $x=\ph(t)$ является решением уравнения \ref{eq:2:auto} и
удовлетворяет начальному условию $\ph(t_0)=x_0$. Рассмотрим функцию $t=\psi(x)$,
обратную к функции $x=\ph(t)$. Рассмотрим произвольную точку $(t_1, x_1)$,
лежащую на графике решения: для неё выполняются соотношения $x_1 = \ph(t_1)$,
$t_1 = \psi(x_1)$ и $\dot \ph(t_1)=f(x_1)$ (поскольку $\ph$ является решением
уравнения). Тогда по теореме о производной сложной функции
\eq
\psi'(x_1)=\frac{1}{\dot \ph(t_1)}=\frac{1}{f(x_1)}
Это равенство выполняется в любой точке $x_1$. Значит, функция $\psi$ является
решением дифференциального уравнения
\eq
\psi'(x)=\frac{1}{f(x)},
где $x$ выступает в роли независимой переменной. Правая часть теперь не зависит
от неизвестной функции и такое уравнение мы умеем решать:
\eq
\psi(x)=\int_{x_0}^x \frac{dy}{f(y)}+t_0
Вспоминая, что $t=\psi(x)$ — обратная функция к решению $x=\ph(t)$, имеем:
\eq
t-t_0=\int_{x_0}^{\ph(t)} \frac{dy}{f(y)}
Мы снова получили формулу Барроу.
\subsection Магия
Часто для вывода формулы Барроу используют такую символическую запись:
\align
\item \dot x&=f(x)
\item \frac{dx}{dt}&=f(x)
\item dt & =\frac{dx}{f(x)} \label{eq:2:magic}
\item \int_{t_0}^t dt&= \int_{x_0}^x \frac{dx}{f(x)} \label{eq:2:int}
Это может показаться некоторой магией — особенно загадочно выглядит уравнение \ref{eq:2:magic}. Чуть позже мы дадим определение \em{дифференциальной 1-формы}, с помощью которого можно придать этим формулам аккуратный смысл, а пока обратим внимание, что уравнение \ref{eq:2:magic} очень похоже на уравнение \ref{eq:2:Delta_t}. В целом, эта формальная запись фактически повторяет наш вывод в параграфе \ref{par:2:mech}.
\example
Решим уравнение $\dot x=x$ с начальным условием $x(t_0)=x_0$. Пусть $x=\ph(t)$ —
решение и $t=\ph^{-1}(x)$ — обратная функция к решению. Имеем:
\align \nonumber
\item
(\ph^{-1}(x))'&=\frac{1}{x}
\item
\ph^{-1}(x) &= \psi (x)
\item
\psi' (x) &= \frac 1 x
\item
\psi (x) &= \int \frac{dx} x = \ln |x| + C
\item
t&=\ln|x|+C
\item
x &= \pm e^{-C}e^t = C_1 e^t
Заметим, что если бы мы забыли модуль под логарифмом при интегрировании, то
константа $C_1=e^{-C}$ принимала бы только положительные значения. Но из-за
модуля она может принимать и отрицательные значения.
Заметим также, что в ходе преобразований (деления на $x$) мы «потеряли»
решение $x=0$. Если в ответ подставить значение $C_1=0$, получим как раз
его. Таким образом, формула $x(t)=Ce^t$, $C\in \mathbb R$ даёт все известные
нам решения. Мы пока не доказали, что других нет — на следующей лекции мы
обсудим этот вопрос.