[Trenogin_V.A.]_Obueknovennuee_differencialnuee_ur(BookZZ.org)
.pdf
282 Доп. III. Решение задач с использованием системы Mathematica
1 |
|
|
|
|
0.75 |
|
|
|
|
0.5 |
|
|
|
|
0.25 |
|
|
|
|
2 |
4 |
6 |
8 |
10 |
-0.25 |
|
|
|
|
-0.5 |
|
|
|
|
Рис. 86
Дальнейшие примеры демонстрируют эффективность использования системы Mathematica при решении дифференциальных уравнений.
Пример 1. Дифференциальные уравнения первого порядка с раз-
деляющимися переменными.
Найти все решения уравнения (1 + x2)y = 2x 1 − y2.
Р е ш е н и е. Это уравнение с разделяющимися переменными
|
dy |
= |
2xdx |
, y = ±1. |
|
p |
|
|
1 + x2 |
||
1 − y2 |
|||||
Запишем равество интегралов в Mathematica и получим результат:
|
1 |
|
dy = |
2x |
|
dx + C |
||
|
|
|
2 |
|||||
q1 - y2 |
1 +2 |
|
x |
|||||
ArcSin[y] == Log[1+x ] |
+ C |
|||||||
Заметим, что Mathematica использует для обозначения фунций начальные прописные буквы, в данном примере ArcSin[y] = arcsin(y), а Log[y] = ln(y).
Теперь решим это уравнение с помощью встроенной функции
DSolve:
q
sol = DSolve[y’[x](1 + x2) y’[x] == 2x 1 - y[x]2, y[x], x]
y[x] /. sol
{{y → Function[x, Sin[C[1] + Log[1+x2]]]}}
Sin[C[1] + Log[1 +x2]]
Пример 2. Решение дифференциального уравнения в полных дифференциалах.
Решить уравнение (3xy2 − x2)dx + (3xy2 − 6y2 − 1)dy = 0.
Р е ш е н и е. Убедимся, что уравнение является уравнением в полных дифференциалах:
P[x, y] := 3xy2 - x2; Q[x, y] := 3xy2 - 6y2 - 1;
D[P[x, y], y] == D[Q[x, y], x]
True
§ 3. Решение ДУ на примере простейших задач |
283 |
Потенциальную функцию U(x, y) будем искать в виде:
U[x, y] = P[x,y] dx +C[y]
−x3 + 3x2y2 + C[y] 3 2
Чтобы найти неизвестную функцию C[y], продифференцируем U(x, y) по y и результат приравняем к Q(x, y):
eq1 = D[U[x, y], y] == Q[x,y] // Simplify
1 + 6y2 + C’[y] == 0
Полученное относительно C[y] уравнение легко интегрируется:
sol = DSolve[eq1, C[y], y] // Flatten
{{C[y] -> - y - 2y2 + C[1]}}
Тогда можно получить первый интеграл рассматриваемого ДУ:
(U[x, y] /. sol1) == 0
-x3 - y + 3x2y2 - 2y3 + C[1] == 0 3 2
Пример 3. Найти общее решение линейного неоднородного ДУ первого порядка
y + 2xy = xe−x2 sin x.
Это решение y = a(x)y + b(x) ищется по формуле (см. главу I)
|
x |
|
x |
x |
|
|
x0 |
x0 |
x0 |
||
y(x) = C exp |
a(t) dt |
+ |
b(z) exp |
a(t) dt |
dz. |
Запишем эту формулу в системе Mathematica и получим результат:
x |
x |
x |
res[x_] = C exp ( - 2t dt) + |
ze−z2 |
sin(z) exp -2t dt) dz |
x0 |
x0 |
x0 |
C e−x2 + e−x2 (-x cos[x] + sin[x])
Подставим решение в уравнение:
y’[x] + 2xy[x] - xe−x2 sin[x] /. y → res // Simplify
0
Теперь решим это уравнение с помощью встроенной функции DSolve:
sol = DSolve[y’[x] + 2xy[x] == xe−x2 sin(x), y[x], x]
{{y → Function[x, C[1] e−x2 + e−x2 (-x cos [x] + sin[x])]}}
284 Доп. III. Решение задач с использованием системы Mathematica
Получим решение в явном виде:
y[x] /. sol
{C[1] e−x2 + e−x2 (-x cos [x] + sin[x])}
Пример 4. Дифференциальные уравнения высших порядков.
Построить решение уравнения ангармонических колебаний x +
+2ax + bx = 0 для параметров a = 0,1, b = 1.
Ре ш е н и е. Найдем общее решение этого уравнения:
DSolve[x”[t] + 2a x’[t] + b x[t] == 0, x[t], t]
√√
{{x[t] → e(−a− a2−b)t C[1] + e(−a+ a2−b)t C[2]}}
Обозначим функцией sol(a, b, x0, y0) решение уравнения с начальными условиями x(0) = x0, x (0) = y0:
sol[a_, b_, x0_, y0_] :=
x[t] /. DSolve[x”[t] + a x’[t] + b x[t] == 0, x[0] == x0, x’[0] == y0, x[t], t][[1]]
Изобразим на графике (рис. 87) решения этого уравнения при различных начальных условиях:
Plot[Evaluate[{sol[0.1, 2, 1, 0.3], sol[0.1, 1, 0, 1], sol[0.1, 1, 0.5, 0]}], {t, 0, 10},
PlotStyle → {, Dashing[{0.01}], Dashing[{0.03}]}]
6 |
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5 |
1 |
1.5 |
|
2 |
2.5 |
3 |
||
-2 |
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 87 |
|
|
|
|||
|
|
|
|
|
|
||||
Пример 5. Найти решение задачи Коши |
|
||||||||
|
|
y = y tg(x) + |
1 |
|
, |
|
y(0) = 0. |
|
|
|
|
cos2 |
|
|
|
||||
|
|
|
|
(x) |
|
|
|
||
Напишем уравнение и решим его с помощью функции DSolve:
eq = {y’[x] == y[x]Tan[x] + 1/Cos[x]2, y[0] == 0}
sol = DSolve[eq, y[x], x] // Flatten
{y[x] → 2 ArcTanh[Tan[ 2xx ]] Sec[x]}
§ 3. Решение ДУ на примере простейших задач |
287 |
|||||
|
|
|
Y |
|
|
|
|
|
|
4 |
|
|
|
|
|
|
2 |
|
|
|
-15 |
-10 |
-5 |
5 |
10 |
X |
|
15 |
|
|||||
|
|
|
-2 |
|
|
|
|
|
|
-4 |
|
|
|
|
|
|
Рис. 90 |
|
|
|
Пример 8. Решить ДУ
y = 4cosx −y1 y(0) = 0.
Проинтегрируем наше уравнение с разделяющимися переменными и получим первый интеграл:
Cos[y] dy - (4x - 1) dx == C
x - 2x2 + Sin[y] == C
Напишем уравнение и решим его с помощью функции DSolve:
eq = {y’[x] == (4x - 1)/Cos[y[x]], y[0] == 0};
sol = DSolve[eq, y[x], x] // Flatten
{y[x] → - ArcSin[x - 2x2]}
Построим график решения на отрезке определения решения [−1/2, 1] (рис. 91):
Plot[ y[x] /. sol , {x, -1/2,1}]
Y 2
1.5
1
0.5
0.2 0.4 0.6 0.8 1 X
-0.5
-1
Рис. 91
288Доп. III. Решение задач с использованием системы Mathematica
Пример 9. Построить интегральные кривые ДУ
y = p 1 .
1 − x2 − y2
Определим функцию sol[x0, y0] как численное решение нашего уравнения с начальными условиями x0, y0:
sol[x0_,y0_] := NDSolve[{ |
1 |
== 0, y[x0] == y0}, |
|
|
|
||
y[x], {x,x0,1}] // Flatten; |
p1 − x2 − y2 |
||
В цикле, для различных начальных условий, численно решим уравнение, выберем решения с нулевой мнимой частью и построим графики в виде таблицы. Затем все графики отобразим на одном чертеже (рис. 92). Для наглядности нарисуем окружность радиуса 1, а жирными точками обозначим начальные условия:
gr = { };
Do[sol1 = sol[x0, y0];
l = Select[Table[{Evaluate[y[x] /. sol1], x}, {x, x0, 1, 0.01}], Abs[Im [#[[1]]]] == 0 &];
gr = Append[gr, ListPlot[l,PlotJoined → True, DisplayFunction → Identity]],
{x0, -0.7, 0.2, 0.2}, {y0, -0.7, 0.2, 0.2}];
gr1 = ParametricPlot[{Cos[t], Sin[t]}, {t, 0, 2 π, DisplayFunction → Identity}]; ll = Table[Point[{x, y}], {x, -0.7, 0.2, 0.2}, {y, -0.7, 0.2, 0.2}];
grp = Graphics[{PointSize[0.015],ll}];
Show[gr,gr1,grp, DisplayFunction → $DisplayFunction]
1.5
1.25
1
0.75
0.5
0.25
-0.4 -0.2 0.2 0.4 0.6 0.8 1
Рис. 92
290 Доп. III. Решение задач с использованием системы Mathematica
|
|
1 |
|
|
|
0.5 |
|
-1 |
-0.5 |
0.5 |
1 |
|
|
-0.5 |
|
|
|
-1 |
|
|
|
Рис. 93 |
|
§5. Нахождение решения в виде степенного ряда
Пр и м е р. В задаче Коши y = y2 − x, y(0) = 1 найти решение в ви-
де степенного ряда.
Р е ш е н и е. Функция y2 − x является аналитической по переменным x, y в окрестности точки (0, 1), поэтому существует аналитическое решение в виде степенного ряда. Запишем это:
n=10;
n
y[x_] := aixi;
i=0
Подставим этот ряд в наше уравнение и приравняем коэффициенты при одинаковых степенях x. Получим систему уравнений относительно ai:
eq = Expand[y’[x] - y[x]2 + x];
eq1 = Table[Coefficient[eq, x, i] == 0, i, 0, n - 1] {-1+a1==0, 1-2a1+2a2==0, -a21-2a2+3a3==0,
-2a1a2-2a3+4a4==0, -a22-2a1a3-2a4+5a5==0,
-2a2a3-2a1a4-2a5+6a6==0, -a23-2a2a4-2a1a5-2a6+7a7==0, -2a3a4-2a2a5-2a1a6-2a7+8a8==0,
-a24-2a3a5-2a2a6-2a1a7-2a8+9a9==0,
-2a4a5-2a3a6-2a2a7- 2a1a8-2a9+10a10==0}
Так как y(0) = 1, то a0 = 1. Запишем это: a0=1;
Решаем систему уравнений относительно ai:
var = Table[ai,{i,1,n}]; sol = Solve[eq1, var]
{{a10 → |
29549 |
,a9 → |
1637 |
|
,a8 |
→ |
447 |
,a7 |
→ |
559 |
, |
|||||||||
90720 |
4536 |
|
1120 |
1260 |
||||||||||||||||
a6 → |
22 |
,a5 → |
11 |
,a4 |
7 |
|
,a3 |
|
2 |
,a2 |
|
1 |
,a1 → 1}} |
|||||||
|
|
|
→ |
|
→ |
|
|
→ |
|
|
||||||||||
45 |
20 |
12 |
3 |
2 |
||||||||||||||||
