-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathchapter13.qq
735 lines (637 loc) · 54.2 KB
/
chapter13.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
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
\chapter Структурная устойчивость и бифуркации \label chap:13:bifurc
В \ref[предыдущей главе\nonumber][chap:12:stability] мы обсуждали вопрос об устойчивости
положений равновесия, то есть отвечали на такой вопрос: что будет происходить с
траекторией, которая чуть-чуть отклоняется от положения равновесия. В этой главе
мы обсудим, что произойдёт с системой дифференциальных уравнений \emph{в целом},
если её «немножко пошевелить».
Этот вопрос чрезвычайно важен с практической точки зрения. Допустим, мы имеем
некоторый реальный процесс и хотим его исследовать. Для этого мы строим его
математическую модель, исследуем эту модель математическими методами, делаем
какие-то выводы и затем распространяем эти выводы на реальный процесс. При этом
мы должны понимать, что модель есть лишь некоторое приближение к реальности и
поведение реальной системы будет не в полной мере следовать предсказаниям
модели. Тем не менее, мы хотели бы иметь возможность делать по крайней
мере \emph{качественные выводы} о поведении реальной системы на основе
исследования модели. Когда это возможно?
Рассмотрим в качестве примера \snref{модель Лотки-Вольтерра}. Пусть $x$ — число
лис и $y$ — число кроликов. Тогда модель задаётся системой дифференциальных
уравнений:
\eq
\begin{cases}
\dot x = - \beta x + \gamma \cdot xy\\\\
\dot y = ky-\lambda \cdot xy.
\end{cases}
Это уравнение имеет \snref{первый интеграл} (найдите, какой!) и соответствующие
фазовые кривые замкнуты. Это означает, что решения являются периодическими
функциями: если начальное условие не является положением равновесия, то размеры
популяций кроликов и лис будут вечно колебаться с неизменной амплитудой вокруг
некоторого положения равновесия. Положение равновесия при этом будет устойчивым
по Ляпунову.
Можем ли мы сделать такой вывод про реальную систему, приближаемую нашей
моделью?
Оказывается, нет. Тот факт, что все фазовые кривые являются замкнутыми, требует
выполнения очень «жёстких» условий. Каждая траектория должна абсолютно точно
попасть в то место, в котором находилась когда-то. Нетрудно поверить, что если
мы чуть-чуть изменим векторное поле системы, повернув каждый вектор на очень
маленький угол, фазовые кривые могут разомкнуться и превартиться в спирали,
сходящиеся к положению равновесия или наоборот убегающие от него, см.
\ref[рис.][fig:13:LV]. Свойства решений принципиально изменятся.
\figure \showcode \collapsed \label fig:13:LV
\pythonfigure \style max-width: 700px;
def f(X, k=1, la=1, be=1, ga=1):
x, y = X
return np.array([-be*x + ga*x*y, k*y - la*x*y])
def f_prim(X, eps):
x, y = X
return f(X) + eps * np.array([y*(-x + 1), x*(-y + 1)])
def H(X, k=1, la=1, be=1, ga=1):
x, y = X
return np.exp(-la*x - ga*y)*x**k*y**ga
plt.figure(figsize=(12, 4))
def inits(i, eps):
if i == 0:
return ([[1, y] for y in np.linspace(0, 3, 4)] +
[[1, 0.7], [0, 1], [0, 0]])
else:
return [[1, 1], [0, 0], [1, 0.5]]
for i, eps in enumerate([0, 0.1, -0.1]):
plt.subplot(131+i)
ob.axes4x4(xmin=-0.1, xmax=3.2, ymin=-0.1, ymax=3.2, labels=('x', 'y'))
plt.xticks([])
plt.yticks([])
ob.phaseportrait(lambda X: f_prim(X, eps),
inits(i, eps),
firstint = H if i==0 else None, xmin=0, xmax=3.2, ymin=0,
ymax=3.2, arrow_size=0.7, head_length=0.2,
singpoint_size=1, t=(-20, 20), n=1000,
gridstep=1000)
\caption
Фазовые кривые в модели Лотки — Вольтерра (слева) и двух различных
близких к ней системах (в центре и справа); в центре фазовые кривые
стремятся к особой точке, справа убегают от неё.
Поэтому у нас нет никакой надежды распространить качественные выводы о
периодичности решений и устойчивости положения равновесия на
поведение реальной системы — ведь она описывается нашим уравнением лишь с
некоторым приближением, а для близких уравнений эти выводы уже не являются
верными.
Системы, поведение которых на качественном уровне сохраняется при малых
возмущениях, называются \emph{структурно устойчивыми}. Чуть позже мы дадим
более строгое определение.
\section Структурная устойчивость \label sec:struct-stab
\subsection Одномерный пример
Рассмотрим дифференциальное уравнение на прямой
\equation \label eq:13:onedim
\dot x=-x
Это уравнение нами хорошо изучено. Его динамика очень простая: все
траектории приближаются к особой точке.
Будем называть уравнение \ref{eq:13:onedim} \emph{невозмущённым}. Рассмотрим
теперь \emph{возмущённое} уравнение, отличающееся от невозмущённого «маленьким»
слагаемым:
\equation \label eq:13:onedim-pert
\dot x=-x+h(x)
Допустим, нас интересует только окрестность особой точки — например, отрезок
$I=[-1, 1]$. Чтобы придать формальный смысл утверждению «$h$ — маленькое»,
зафиксируем какой-нибудь $\delta>0$ и наложим на $h$ два условия:
\align
\item
|h(x)|<\delta\text{ для всех }x\in I
\item
|h'(x)|<\delta\text{ для всех }x\in I
В этом случае говорят, что $h$ \emph{мало в $C^1$-топологии} или просто
\emph{$C^1$-мало}. Выбор $\delta$ зависит от исходной (невозмущённой) системы. Для
системы \ref{eq:13:onedim} можно положить $\delta=1/10$.
Покажем, что на качественном уровне поведение возмущённой системы такое же, как
невозмущённой. Формально это можно записать в виде следующего предложения.
\proposition \label prop:13:onedim-example
Уравнение \ref{eq:13:onedim-pert} при указанных выше ограничениях на $h$
имеет ровно одну особую точку на отрезке $[-1, 1]$. Эта особая точка
является асимптотически устойчивой и все траектории стремятся к ней при
$t\to +\infty$.
\proof
Начнём с неформального рассуждения. Обозначим правую часть невозмущённого
уравнения через $f_0(x)$, а возмущённого через $f(x)$. График функции
$f_0(x)=-x$ — прямая линия, см. \ref[рис.][fig:13:onedim-rhs]. Она пересекает
горизонтальную ось в точке $x=0$: это положение равновесия.
График возмущённого уравнения — какая-то кривая, близкая к графику
невозмущённого. Если немножко пошевелить график невозмущённого уравнения,
точка пересечения с горизонтальной осью может немножко сместиться, но не
исчезнет. Если возмущение не слишком искривляет график, то новых точек
пересечения не появится. Поэтому динамика останётся прежней.
\figure
\label fig:13:onedim-rhs
\pythonfigure \style max-width: 450px
plt.figure(figsize=(6,6))
ob.axes4x4(labels=('x', '\\dot x'))
ob.mplot(np.linspace(-4, 4), lambda x:-x, color='steelblue')
ob.mplot(np.linspace(-4, 4), lambda x: -x + 0.2*(np.cos(x) + x + (x/4.)**2),
color='red')
ob.mplot(np.linspace(-4, 4), lambda x: -x + 0.4*(np.cos(x) + x + (x/4.)**2),
color='red')
plt.scatter([0, 1./5, 3./5], [0,0,0])
\caption Синим показан график правой части невозмущённого уравнения,
красным — примеры графиков правой части возмущённого уравнения.
Теперь перейдем к формальным рассуждениям. Докажем, что особая точка
возущённого уравнения существует. Поскольку $|h(x)|<1/10$, $f(-1)<-1+1/10<0$
и $f(1)>1-1/10>0$. По теореме о промежуточном значении, существует такая
точка $x_*\in (-1, 1)$, что $f(x_*)=0$. Это особая точка возмущённого
уравнения.
Докажем её устойчивость. Поскольку $|h'(x)|<1/10$, $f'(x)=-1+h'(x)<-1+1/10<0$
для любого $x\in [-1, 1]$. Следовательно, $f'(x_*)<0$ и особая точка
асимптотически устойчива по \ref[теореме Ляпунова\nonumber][thm:12:Lyap] об
устойчивости по первому приближению, которая обсуждалась в предыдущей главе.
Докажем, что особая точка единственна. Действительно, пусть есть какая-то
другая особая точка. По теореме Ролля, между любыми двумя нулями функции $f$
существует нуль производной. Но производная функции $f$ отделена от нуля,
как мы показали выше. Следовательно, особая точка единственна и все
траектории стремятся к ней в прямом времени.
\remark
Структурную устойчивость не следует путать с устойчивостью по Ляпунову или
асимптотической устойчивостью. Это принципиально разные понятия.
Устойчивость по Ляпунову (или асимптотическая) относится к какой-то
конкретной особой точке и малым изменениям начального условия. Структурная
устойчивость относится к системе дифференциальных уравнений в целом.
\question
Как следует изменить приведенное рассуждение если вместо невозмущённого
уравнения $\dot x =-x$ рассматривается уравнение $\dot x = kx$, где $k$
— какая-то ненулевая константа?
\subsection Аккуратное определение структурной устойчивости \label ssec:13:str-stab
Выше мы сказали, что система называется структурно устойчивой, если её поведение
не меняется на качественном уравне при малых возмущениях. Но что значит «не
меняетя на качественном уровне»? Чтобы придать этим словам точный смысл, нам
нужно дать несколько дополнительных определений.
Для начала, напомним, что такое гомеоморфизм.
\snippet \label snip:homeo \flabel гомеоморфизм
\definition
\emph{Гомеоморфизм} — это биективное (то есть взаимно однозначное)
отображение, непрерывное вместе со своим обратным.
\example
Отображение $f\colon [0, \pi]\to [-1, 1]$, $f(x)=\cos x$ является
гомеоморфизмом. Оно биективно, непрерывно и обратное отображение
$\arccos \colon [-1, 1]\to [0, \pi]$ также непрерывно. При этом
отображение $\tilde f\colon [0, 2\pi]\to [-1, 1]$, $\tilde f(x)=\cos x$ не
является гомеоморфизмом, поскольку не является биекцией.
\question
Пусть $S^1=\\{(x,y)\mid x^2+y^2=1\\}$ — единичная окружность на плоскости и
$J=[0, 2\pi)$ — полуинтервал. Рассмотрим отображение $P \colon J\to S^1$:
\eq
P(\ph) = (\cos(\ph), \sin(\ph)).
Оно каждому числу ставит в соответствие точку на окружности с заданным
полярным углом.
Является ли оно гомеоморфизмом?
\quiz
\choice
Да, является, поскольку отображение является биекцией
(каждой точке окружности соответствует ровно один угол $\ph\in[0,
2\pi)$) и функции $\cos$ и $\sin$ непрерывны.
\comment
Ой ли? А что насчёт обратного?
\choice \correct
Нет, не является.
\comment
Действительно, само отображение $P$ является непрерывным, но
обратное отображение $P^{-1}$ таковым не является: оно переводит
близкие точки плоскости (например, $(0, 0)$ и $(\cos(-\eps),
\sin(-\eps))$ для маленьких значений $\eps>0$) в далёкие точки
полуинтервала (первая точка переходит в $0$, вторая в $2\pi -
\eps$).
\example
Приведём ещё вот какую совсем неформальную иллюстрацию.
В некотором царстве, некотором государстве, власть захватили военные и
сотрудники спецслужб. И захотели они засекретить всё на свете. Особенно
местоположение секретных объектов, каковых на каждом квадратном километре
некоторого царства был вагон и маленькая тележка. Однако, простым жителям
нужно было как-то ориентироваться на местности, а для этого им нужны были
карты. Но по хорошей карте можно определить координаты любого объекта, в
том числе — о, ужас — и секретного!
Что же делать? Без карт жить нельзя — люди не смогут обрабатывать поля и
бурить скважины, экономика встанет, начнётся голод и революция. Но и с
картами тоже нельзя — режим секретности нарушится и вероятный противник
сможет получить ценные равзедданные в любом книжном магазине!
И вот что придумали. Хорошие, правильные карты были только в распоряжении
военных. Для всех прочих печатались специальные «резиновые» карты. Настоящая
карта наносилась на тонкий лист резины, затем этот лист растягивался в
разные стороны и с этого растянутого листа происходила печать. Растяжение
происходило неравномерно и линии на карте сильно искажались — это позволяло
скрыть координаты объектов, сохраняя возможность по ней ориентироваться.
Если по карте некоторый дом находится рядом с некоторой дорогой, то можно
было ожидать, что и на местности он также находится не слишком далеко, и по
дороге можно до него доехать — с практической точки зрения важно именно это.
А вот определить точные координаты дома (чтобы, скажем, навести на него
баллистическую ракету) уже невозможно.
Эта сказочка является иллюстрацией того, как гомеоморфизмы действуют на
множества. Они могут искажать линии (и даже превратить, например, прямую в
ломаную), но не могут «склеивать» разные точки в одну или
«разрывать» непрерывные линии.
\snippet \label snip:ote \flabel орбитально топологическая эквивалентность
\definition
Системы $\dot{\mb x}= \mb v(\mb x)$ и $\dot{\mb y} = \mb w(\mb y)$
называются \emph{орбитально топологически эквивалентными}, если
существует \snref{гомеоморфизм} $\mb y=H(\mb x)$ фазового пространства
первой системы в фазовое пространство второй системы, который переводит
фазовые кривые первой системы в фазовые кривые второй системы с
сохранением направления движения по ним.
\example
Рассмотрим уравнения
\equation
\label eq:13:onedim-np
\dot x = -x
и
\equation \label eq:13:onedim-pert-sin
\dot y = -y + 0{,}2 \sin (y-0{,}4) + 0{,}4
Их фазовые пространства одномерны. Построим график зависимости правой части
от соответствующей фазовой переменной (он покажет, в каких точках
направление движения положительно, а в каких отрицательно), после чего
построим фазовые портреты. Они будут очень простыми, см.
\ref[рис.][fig:phaseportraits-onedim].
\figure \showcode \collapsed \label fig:phaseportraits-onedim
\pythonfigure \style max-width: 700px;
plt.figure(figsize=(10, 5))
x = np.linspace(-4, 4)
plt.subplot2grid((10, 10), (0, 0), rowspan=9, colspan=5)
ob.axes4x4(labels=('x', '\\dot x'))
plt.plot(x, -x, '-', lw=2)
plt.subplot2grid((10, 10), (9, 0), colspan=5)
plt.yticks([])
ob.onedim_phasecurves(-4, 4, [0], [1, -1], orientation='horizontal')
plt.subplot2grid((10, 10), (0, 5), rowspan=9, colspan=5)
y = np.linspace(-4, 4, 200)
ob.axes4x4(labels=('y', '\\dot y'))
plt.plot(y, -y + 0.2*np.sin(y-0.4) + 0.4, lw=2)
plt.plot([0.4, 0.4], [-4, 4], '--', color='gray', lw=2)
plt.subplot2grid((10, 10), (9, 5), colspan=5)
plt.yticks([])
ob.onedim_phasecurves(-4, 4, [0.4], [1, -1], orientation='horizontal')
plt.tight_layout(pad=0)
\caption
Зависимость правой части от точки фазового пространства (сверху) и
фазовые портреты (снизу) для невозмущённого (слева) и возмущённого
(справа) уравнения.
У обоих уравнений есть по три фазовые кривые: особая точка и два луча;
движение по лучам происходит в направлении «к особой точке». У первого
уравнения особая точка имеет координату $x=0$, у второго — $y=0{,}4$ — и это
единственное, чем отличаются эти фазовые портреты. Понятно, что отображение
$x=y-0{,}4$ (то есть просто сдвиг) переводит фазовый портрет второго
уравнения в фазовый портрет первого уравнения. Это гомеоморфизм
(проверьте!). Следовательно, два наших уравнения орбитально топологически
эквивалентны.
\exercise
Сделайте замену $x=y-0{,}4$ в уравнении \ref{eq:13:onedim-pert-sin}. Превратится
ли оно при этом в уравнение \ref{eq:13:onedim-np}? Это упражнение
показывает, что орбитально топологическая эквивалентность переводит в
фазовый портрет в фазовый портрет, но не обязана переводить уравнение в
уравнение.
\question
Являются ли орбитально топологически эквивалентными уравнения $\dot x = -x$
и $\dot y = y + 0{,}2$.
\quiz
\choice Да, конечно! Достаточно с помощью сдвига перевести особую точку
одного уравнения в особую точку другого.
\comment
А что насчёт направления движения по траекториям?
\choice \correct
Нет, конечно!
\comment
Именно так. У первого уравнения все траектории стремсятся к
особой точке в прямом времени, а у второго — убегают от неё.
Гомеоморфизм, переводящий траекторию в траекторию и особую точку
в особую точку, не может поменять направление движения.
Следовательно, орбитально топологической эквивалентности здесь
нет.
\exercise \label ex:13:sing
Докажите, что у орбитально топологически эквивалентных дифференциальных
уравнений (в любой размерности) одинаковое число особых точек.
Теперь мы можем сформулировать аккуратное определение структурной устойчивости.
\snippet \label snip:struct-stab \flabel структурная устойчивость
\definition \label def:13:struct-stab
Уравнение $\dot{\mb x}=\mb v(\mb x)$ называется \emph{структурно устойчивым},
если найдётся такое $\delta$, что для всякой функции $\mb h$, такой, что $\\|\mb h(\mb
x)\\|<\delta$ и $\\|\mb h'(\mb x)\\|<\delta$, исходное уравнение орбитально
топологически эквивалентно возмущённому уравнению $\dot{\mb x}=\mb v(\mb
x)+\mb h(\mb x)$.
\remark
Приведенное выше определение подходит для уравнений с фазовым пространстовм
любой размерности, поэтому вместо модулей в условии на $\mb h$ стоят нормы.
Производную $\mb h'$ в многомерном случае следует понимать как линейный
оператор, заданный соответствующей матрицей Якоби. Норму матрицы (вернее,
соответствующего линейного оператора) можно задавать разными способами —
например, как максимум норм образов всех единичных векторов под действием
данного оператора.
\remark
Условие на $\mb h$ в определении часто записывают коротко так: «для всякой малой
функции $\mb h$…».
\theorem \label thm:13:stability_online
(Признак структурной устойчивости на прямой.) Уравнение $\dot x = v(x)$,
$x(t) \in \mathbb R^1$ является структурно устойчивым, если выполнены два
условия:
\enumerate
\item во всех особых точках производная правой части не равна нулю;
\item вне некоторого отрезка $I=[-M, M]$ правая часть отделена от нуля.
Иными словами, для всякого $x_*$,
такого, что $v(x_*)=0$, выполняется $v'(x_*)\ne 0$, и найдутся такие $M$ и
$C>0$, что для всех $x\not \in [-M, M]$ выполняется $|v(x)|>C$.
Первое условие является также необходимым: если оно нарушается, структурной
устойчивости нет.
\proof \outline
Пусть для всех особых точек производная
правой части ненулевая. Покажем, что уравнение структурно устойчиво.
Фазовый портрет уравнения состоит из интервалов и лучей, на которые фазовое
пространство (прямая) разбивается особыми точками, и самих особых точек.
Вне отрезка $I$ особых точек не было в исходном уравнении и не будет в
возмущённом, если только потребовать, чтобы порядок малости возмущения был
меньше $C$.
Из рассуждений, аналогичных \ref[утверждению][prop:13:onedim-example],
следует, что на отрезке $I$ у малого возмущения уравнения сохранятся все
особые точки (может быть, слегка сместившись). Их устойчивость не меняется.
Это означает, что направление движения по остальным фазовым кривым также
сохраняется. Нетрудно построить гомеоморфизм прямой в прямую, который
переведёт особые точки в соответствующие особые точки (например, его можно
сделать кусочно линейным). Этот гомеоморфизм превратит фазовый портрет
возмущённой системы в фазовый портрет исходной системы.
Необходимость мы доказывать не будем, но в следующем разделе обсудим один из
возможных эффектов, возникающих, когда условие теоремы нарушается.
\question
Приведите пример уравнения, у которого нарушено второе условие и которое не
является структурно устойчивым.
\quiz
\choice \correct
Узнать ответ
\comment
Например, $\dot x = e^{-x^2}$ подойдёт (и любая другая функция
с нулевой горизонтальной асимптотой)
\section Седлоузловая бифуркация
Как выглядят уравнения, которые не являются структурно устойчивыми? Сейчас
увидим.
\snippet \label snip:bifurc \flabel бифуркация
\definition
Рассмотрим семейство дифференциальных уравнений $\dot{\mb x}=\mb
v_{\eps}(\mb x)$, зависящее от параметра $\eps$. Если при каком-то
значении $\eps=\eps_*$ уравнение не является \snref{структурно
устойчивым}, говорят, что при этом значении $\eps$ происходит
\emph{бифуркация}. Значение $\eps_*$ называется \emph{бифуркационным
значением параметра}.
\example
Рассмотрим семейство
\equation \label eq:13:parab
\dot x = x^2 - \eps
\question
При каких значениях $\eps$ это уравнение не является структурно устойчивым?
Графиком правой части является парабола, сдвигающаяся вверх-вниз в зависимости
от $\eps$. При $\eps<0$ у уравнения нет особых точек, поскольку правая часть
строго больше нуля. Все такие уравнения структурно устойчивы. При $\eps>0$
особых точек две и производная правой части в них ненулевая. Такие уравнения
также структурно устойчивы. А вот при $\eps=0$ особая точка одна (это $x=0$) и
производная правой части в ней равна нулю, см. \ref[рис.][fig:13:sn-rhs].
\figure \label fig:13:sn-rhs
\pythonfigure \style max-width: 700px;
plt.figure(figsize=(10, 3))
x = np.linspace(-4, 4)
for i, eps in enumerate([-0.5, 0, 0.5]):
plt.subplot2grid((5, 9), (0, i*3), rowspan=4, colspan=3)
ob.axes4x4(labels=('x', '\\dot x'), ymin=-1, fontsize=14)
plt.plot(x, x**2 - eps, '-', lw=2)
if eps > 0:
plt.plot([np.sqrt(eps), np.sqrt(eps)], [-1, 4], '--',
color='gray')
plt.plot([-np.sqrt(eps), -np.sqrt(eps)], [-1, 4], '--',
color='gray')
plt.subplot2grid((5, 9), (4, i*3), colspan=3)
plt.xlim(-4, 4)
plt.yticks([])
if eps < 0:
ob.onedim_phasecurves(-4, 4, [], [1], orientation='horizontal')
elif eps > 0:
ob.onedim_phasecurves(-4, 4,
[-np.sqrt(eps), np.sqrt(eps)], [1, -1, 1], orientation='horizontal')
else:
ob.onedim_phasecurves(-4, 4, [0], [1, 1], orientation='horizontal')
plt.tight_layout(pad=0)
\caption
Зависимость фазового портрета от $\eps$: слева $\eps<0$, в центре
$\eps=0$, справа $\eps>0$.
Посмотрим внимательно на случай $\eps=0$. У системы есть одна особая точка.
Но если мы прибавим к правой части сколь угодно малую положительную
константу, получим систему без особых точек. А если вычтем сколь угодно
малую константу, то получим систему с двумя особыми точками. Количество
особых точек меняется при сколь угодно малом возмущении системы. Значит, она
не является структурно устойчивой! (Чтобы придать этому рассуждению строгость,
надо выполнить \ref[упражнение][ex:13:sing] и использовать \ref[определение структурной устойчивости\nonumber][def:13:struct-stab].)
Итак, при $\eps=0$ происходит бифуркация. Она называется \emph{седлоузловой
бифуркацией} (откуда взялось это название мы обсудим ниже; по-английски ещё
говорят \emph{fold bifurcation}).
Если постепенно менять $\eps$, уменьшая его от положительных значений к
отрицательным, и смотреть за тем, как меняется фазовый портрет, то можно дать
такое описание: пока $\eps>0$, существует пара особых точек — устойчивая и
неустойчивая, по мере уменьшения $\eps$ они приближаются друг к другу, при $\eps=0$
сливаются в одну \emph{полуустойчивую} особую точку, после чего
(при $\eps<0$) эта особая точка исчезает.
\remark
Здесь есть важный момент. Рассмотрим ещё раз уравнение при $\eps=0$. У этого
уравнения одна особая точка и оно структурно неустойчиво: малым возмущением
можно получить уравнение с каким-то положительным $\eps=\eps_0>0$, имеющем
две особые точки. Может показаться, что таким же образом можно из нового
уравнения сделать старое и от двух особых точек перейти к одной. Таким
образом можно сделать (ошибочный) вывод, что и новое уравнение является
структурно неустойчивым. Но это не так. Дело в том, что порядок малости
возмущения ($\delta$ в \ref[определении][def:13:struct-stab]) выбирается
\emph{по конкретной системе}. Допустим, мы взяли $\eps_0=0{,}1$ и получили
уравнение $\dot x = x^2-0{,}1$. Это уравнение является структурно
устойчивым, потому что можно взять $\delta=0{,}001$, и если потребовать,
чтобы возмущение было $\delta$-малым, то «вернуться» к системе $\dot x =
x^2$ с помощью такого возмущения будет невозможно. Аналогично для всякого
$\eps_0>0$ можно подобрать такое $\delta>0$, что $\delta$-малое возмущение
соответствующего уравнения сохраняет его топологический тип (то есть у него
по-прежнему будут две особые точки).
Рассмотренный нами пример был задан конкретными формулами, но тем не менее он
очень универсален: бифуркации такого типа очень характерны для дифференциальных
уравнений на прямой. Точнее, если рассмотреть «типичное» (не будем сейчас
уточнять, что это значит) одномерное уравнение, зависящее от одного параметра,
то в нём могут происходить только такие бифуркации. Дело в том, что у «типичной»
функции одного аргумента бывают только невырожденные точки минимума или
максимума (то есть такие, в которых вторая производная ненулевая). Вблизи этих
точек функция выглядит почти как парабола (это следует из формулы Тейлора). При
изменении параметра такая точка экстремума может сдвигаться вверх-вниз и при
каком-то значении параметра пересечь горизонтальную ось. В этом случае
произойдёт в точности описанная седлоузловая бифуркация.
\subsection Квоты отлова
Этот сюжет я заимствую из книги В. И. Арнольда «Обыкновенные дифференциальные
уравнения» (он встречается и в других источниках). Напомним простейшую модель роста
популяции из \ref[первой главы\nonumber][chap:notion_of_ODE]: скорость увеличения
популяции пропорциональна размеру популяции.
\eq
\dot x = kx
Решением этого уравнения является функция $x(t)=x_0e^{kt}$, её значение быстро
увеличивается и стремится к бесконечности с ростом $t$. Однако, эта модель
применима лишь в том случае, когда рост ничего не сдерживает. В реальной жизни
так не бывает: например, количество ресурсов (еды) не
безгранично. Более реалистичной моделью является \emph{логистическое уравнение}:
в нём коэффициент пропорциональности $k$ не является константой, а зависит от $x$, уменьшаясь с ростом $x$. Самая простая функция — линейная, поэтому возьмём для определенности $k=1-x$ и получим такое уравнение:
\equation \label eq:13:logistic
\dot x = (1-x)x.
Фазовым пространством здесь является множество положительных чисел $x(t)\in
\mathbb R_+$. График правой части — парабола,
направленная ветвями вниз, см. \ref[рис.][fig:13:quota_dotx]. У этого уравнения два положения равновесия: $x=0$ и $x=1$. Если
$x=0$, размер популяции нулевой (ни одной рыбы в пруду не плавает), и он таким и
остаётся вечно (вопросы зарождения жизни явно выходят за рамки нашей модели).
Это равновесие является неустойчивым: если $x$ случайно сместится в
положительном направлении, то дальше он будет увеличиваться. Если $x \in (0,
1)$, скорость роста популяции положительна $\dot x>0$: при маленьких значениях
$x$ она маленькая, потому что популяция маленькая, при значениях вблизи $1/2$
рост относительно быстрый, а затем при приближении к 1 снова становится
медленным, потому что ресурсы исчерпываются. При $t\to+\infty$ решение с
начальным условием из интервала $(0, 1)$ стремится к $1$. При $x=1$ имеется
положение равновесия. Наконец, если $x>1$, то $\dot x < 0$ и популяция
постепенно вымирает от голода, снова приближаясь к равновесию $x=1$, которое,
таким образом, является устойчивым. Итак, система обладает двумя положениями
равновесия, устойчивым и неустойчивым.
\figure \showcode \collapsed \label fig:13:quota_dotx
\pythonfigure \style max-width: 700px;
plt.figure(figsize=(8, 3))
plt.subplot2grid((6, 12), (0, 0), rowspan=5, colspan=4)
ob.axes4x4(labels=('x', '\\dot x'), ymin=-3, ymax=1, xmin=-0.2, xmax=2,
fontsize=14)
x = np.linspace(0, 4)
plt.plot(x, x * (1 - x), '-', lw=2)
plt.plot([1, 1], [-4, 2], '--', color='gray', lw=2)
plt.plot([-1, -1], [-4, 2], '--', color='gray', lw=2)
plt.subplot2grid((6, 12), (5, 0), colspan=4)
plt.yticks([])
plt.xlim(-0.2, 2)
ob.onedim_phasecurves(0, 4, [0, 1], [-1, 1, -1], orientation='horizontal')
plt.subplot2grid((6, 12), (0, 5), rowspan=6)
plt.xlim(-0.5, 0.5)
plt.xticks([], [])
plt.yticks([])
plt.ylim(-0.1, 2)
ob.onedim_phasecurves(0, 4, [0, 1], [-1, 1, -1], orientation='vertical')
plt.subplot2grid((6, 12), (0, 6), rowspan=6, colspan=6)
def f(t, x):
return x * (1 - x)
ob.axes4x4(labels=('t', 'x'),xmin=0, xmax=7, ymin=-0.1, ymax=2,
fontsize=14)
for x0 in [0, 0.01, 0.1, 0.5, 1, 2, 20]:
ob.eulersplot(f, 0, 7, x0, color='steelblue')
\caption
График правой части (слева вверху), интегральные кривые (справа) и
фазовый портрет (слева внизу и посередине) уравнения
\ref{eq:13:logistic}.
Пусть теперь помимо естественной динамики на размер популяции влияет внешняя
сила в лице человека, который производит отлов $c$ особей за одну единицу
времени. Тогда уравнение приобретает вид
\eq
\dot x = x(1-x)-c.
При увеличении $c$ график правой части будет сдвигаться вниз, положения
равновесия приближаться друг к другу, см. \ref[рис.][fig:13:quota]. При этом если
начальное условие находится левее левого равновесия, популяция обречена на
вымирание, а если правее, то её размер будет стремиться к правому положению
равновесия. При $c=1/4$ происходит седлоузловая бифуркация: два положения
равновесия сливаются в одно (в точке $x=1/2$). Популяция ещё может жить
неограниченно долго, если начальное условие $x(0)>1/2$. При $c>1/4$ в системе
вообще нет положений равновесия и популяция обязательно вымирает, какой бы
большой она ни была в начальный момент времени.
\figure \label fig:13:quota
\pythonfigure \style max-width: 700px;
plt.figure(figsize=(10, 3))
x = np.linspace(0, 1.5)
for i, c in enumerate([0.2, 0.25, 0.4]):
plt.subplot2grid((5, 9), (0, i*3), rowspan=4, colspan=3)
ob.axes4x4(labels=('x', '\\dot x'), ymin=-1.5, ymax=1, xmin=-0.2,
xmax=1.5, fontsize=14)
plt.plot(x, x*(1-x)-c, '-', lw=2)
if c < 0.25:
roots = [-np.sqrt(-4*c + 1)/2 + 1/2, np.sqrt(-4*c + 1)/2 + 1/2]
plt.plot([roots[0], roots[0]], [-1.5, 4], '--',
color='gray')
plt.plot([roots[1], roots[1]], [-1.5, 4], '--',
color='gray')
plt.subplot2grid((5, 9), (4, i*3), colspan=3)
plt.xlim(-0.2, 1.5)
plt.yticks([])
if c > 0.25:
ob.onedim_phasecurves(0, 1.5, [], [-1], orientation='horizontal')
elif c < 0.25:
ob.onedim_phasecurves(0, 1.5,
roots, [-1, 1, -1], orientation='horizontal')
else:
ob.onedim_phasecurves(0, 1.5, [0.5], [-1, -1], orientation='horizontal')
plt.tight_layout(pad=0)
\caption
Зависимость фазового портрета от $c$: слева $c=0{,}2$, в центре
$c=0{,}25$, справа $c=0{,}3$.
Если бы мы хотели установить квоту отлова максимально возможной, так, чтобы не
уничтожить всю популяцию, то у нас мог бы возникнуть соблазн использовать
значение $c=1/4$. Тогда, убедившись, что в начальный момент популяция достаточно
большая, мы могли бы понадеяться на наше уравнение и предположить, что с
течением времени популяция не вымрет. Однако, этот вывод был бы очень
опрометчивым: как показывает анализ, значение $c=1/4$ является бифуркационным и
система при этом не является структурно устойчивой. Поэтому переносить вывод с
модели на реальность нельзя. Стоит чуть-чуть ошибиться
(увеличить $c$), как мы оказываемся в вымирающей системе.
\question
Какое решение этой проблемы вы бы предложили? Как обеспечить максимально
эффективный отлов, но при этом не рисковать экологической катастрофой?
\subsection Седлоузловая бифуркация на плоскости
Дополним семейство \ref{eq:13:parab} вторым уравнением:
\equation \label eq:13:saddlenode
\dot x = x^2 - \eps,\quad \dot y = -y
Теперь при $\eps>0$ система имеет две особые точки: $(-\sqrt{\eps}, 0)$ и
$(\sqrt{\eps}, 0)$. Какого они типа? Можно построить эскиз фазового портрета и
попробовать угадать, а можно честно вычислить линеаризацию. Матрица Якоби имеет
вид:
\eq
\begin{pmatrix}
2x & 0 \\\\
0 & -1
\end{pmatrix}
Матрица диагональна и значит на диагонали записаны собственные значения. Левая
особая точка имеет отрицательный $x$ и значит это устойчивый узел. Правая имеет
положительный $x$ и значит особая точка является седлом, см.
\ref[рис.][fig:13:saddlenode_2d], справа.
При уменьшении $\eps$ к нулю эти две особые точки сближаются и при $\eps=0$
сливаются в одну. Получившаяся особая точка является вырожденной — одно из
собственных значений равно нулю — и поэтому не укладываются в нашу
классификацию. Она имеет специальное название (немножко забавное, но
естественное и вполне официальное): \emph{седлоузел} (\emph{saddle-node}).
Теперь должно быть понятно, почему и бифуркация называется седлоузловой.
\figure \label fig:13:saddlenode_2d
\pythonfigure \style max-width: 700px;
from itertools import product
plt.figure(figsize=(10, 3))
def saddlenode(eps):
def f(X):
return [X[0]**2-eps, -X[1]]
return f
def inits(i, eps):
xs = list(np.linspace(-1, 1, 5))
if eps == 0:
xs.append(0.2)
if eps > 0:
xs.remove(-0.5)
xs.remove(0.5)
xs.extend([-np.sqrt(eps), np.sqrt(eps)/2,
np.sqrt(eps) * 1.5, np.sqrt(eps)])
ret = [[x, y] for x in xs for y in [-0.5, 0, 0.5]]
return ret
for i, eps in enumerate([-0.2, 0, 0.2]):
plt.subplot2grid((1, 3), (0, i))
ob.axes4x4(labels=('x', 'y'), xmin=-1.2, xmax=1.2, ymin=-1, ymax=1,
fontsize=14)
ob.phaseportrait(saddlenode(eps),
inits(i, eps), arrow_size=0.5, t=(-5, 20), lw=2, singpoint_size=1)
\caption
Фазовый портрет семейства \ref{eq:13:saddlenode}: слева $\eps<0$, в
центре $\eps=0$, справа $\eps>0$.
\section Выводы
Это была непростая глава: мы ввели и обсудили много новых понятий. Давайте
сделаем глубокий вздох и подведём некоторые итоги. Мы хотели разобраться, в
какой мере можно переносить выводы, полученные из анализа некоторой системы, на
другие системы, близкие к нашей. Свойства решений системы дифференциальных
уравнений существеным образом описывается её фазовым портретом, поэтому мы придумали
определение орбитально топологической эквивалентности, отвечающее на вопрос, что
значит, что фазовые портреты двух систем «похожи» или «одинаковы на качественном
уровне». Затем мы выделили структурно устойчивые системы — те, фазовые портреты
которых не меняются «на качественном уровне» при малых изменениях системы.
Наконец, мы рассмотрели простейший (и очень важный) пример нарушения структурной
устойчивости: седлоузловую бифуркацию, при которой меняется число особых точек.
Оказывается, что седлоузловая бифуркация — одна из двух бифуркаций, которые в
принципе происходят в типичных семействах с одним параметром. Какая вторая? Об
этом — в следующей главе.