Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М

.pdf
Скачиваний:
2
Добавлен:
19.11.2023
Размер:
33.75 Mб
Скачать

Solve [- •x-c [1] +

 

есИ1 У[х] (-Cos [y [x] ] + С [1] Sin (y [x] ])

=

C [1] (1 + C [1]2)

C [2], y[x]]

 

Однако не следует думать, что функция DSolve сдается, если не может найти ре­

шение в элементарных функциях. Это далеко не так. Она старается применить специ­ альные функции, о чем свидетельствует приведенный ниже пример.

 

Ь у [ х ] 2 » У [ х ] »■ x ]

 

 

{{у[х]

Г

1

2 V

b V

^ x ^

, . .

 

2 + m

J C|

 

1“

2 + m '

Vb Vc Х-2^

 

 

 

 

 

 

 

Г

1 .

i

 

2 + m

 

 

»■

2 + m '

 

 

 

1 + m

 

 

 

 

 

2 + m '

2 + m

J C [ 1 ]

 

3 + m

,—

,—

2+m

-I

 

2 v b

y c X“T"

 

~ 2 + m '

2 + m

 

J

 

/

 

 

 

 

 

2 bx

r

1

2 V b

V c

 

 

1 2 + m '

 

2 + m

 

J +

 

 

1

2 V b

 

1

 

 

2 + m '

2 + m

J

 

С[1]

}}

 

 

 

 

 

Как видите, в данном случае существенно использованы функции Бесселя.

Но все же есть случай, когда функция DSolve сдается сразу. Это происходит, если

в качестве аргумента искомой функции используется выражение, не совпадающее с независимой переменной. (Такие уравнения называются функционально-дифферен­ циальными. К счастью студентов, такие дифференциальные уравнения часто пред­ ставляют собой крепкий орешек и для профессоров, поэтому в задачниках (а не в жизни!) таких уравнений встречается не очень много.)

DSolve [у ' [ x j == у [ ~ ] , у , х]

DSolve::litarg

То avoid possible ambiguity, the arguments of the dependent variable in {y'[x] ==у[у]} should literally match the independent variables. More...

DSolve [y'[x]

y[ у ] , у, x]

Как видим, функция DSolve не может решить всех дифференциальных уравнений.

Тем приятнее узнать, что она умеет решать некоторые уравнения в частных производных.

Алгебра и анализ

361

D S o lv e [

 

 

 

 

 

 

 

£ 2 [x]

1 2 W

( « M - T

f S r )

 

у ' [x l == - d x ------------ + ------------------------- --------------

*

3 ff3 [x ]

 

 

3 ff3[x ]

 

 

f l [ x ] у [x]

+ f2 [ x ]

y [ x ] 2 + f3 [ x ] y [ x ] 3 ,

 

У[х] £ x]

f2 [x ]

 

 

 

 

 

{{y[x]

 

 

 

 

 

3 f3 [x]

 

 

 

 

 

 

 

 

 

 

 

e£ i e.6.(<1,KS16,6,' ' f t ® ^ ) акП6Ш /

 

C[l] -2

Г x

 

 

 

 

 

K$16754

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d!K$16467

 

f3[K$16753 ]

 

 

 

 

 

W

i

г г ,

f2 [x]

 

dK$16753

 

} '

{y tx ]

~ з f3

[x ]' +

Х и . < в ( ,11к,16,6,|-й ®

й й 'п-| * S16“ 7/

 

C[l] -2

ГХ

 

 

 

 

V

J K$16754

 

 

 

 

 

 

 

 

JwieVee3 1£1 lK$16467]- i

i f i S

) dK?16467

 

f3[K$16753]

 

 

 

 

dK$16753

}}

 

 

 

Заметьте, что фиктивные переменные, по которым производится интегрирование, обозначены в решении через к$номер.

Ниже приведен пример решения задачи Коши с помощью все той же функции

DSolve.

DSolve [{у* '[х]==ау* [х]+у[х] .у [0]=1,у' [0]=0}, у, х]

{{у -» Function [{х}, 2 ^ + а2

(а е ? х + V 4T I2 е т ( a - V ^ ) х _

а е7 (a+V^S7)* + V i T P -ei (a*VT^) хjjjj

Часто решение дифференциального уравнения имеет довольно громоздкий вид, и по нему представить поведение интегральных кривых довольно сложно. В этих случа­ ях полезно построить график решения, т.е. вычертить интегральную кривую.

362

Глава 10

Пример 10.7. Построение графика решения дифференциального уравнения. Решим

*

ху

дифференциальное уравнение у'ч--— ■--= д: и построим график его решения.

Сначала с помощью функции DSolve находим решение.

sol==DSolve [у* [х]+х*у[х] / (1+хЛ2)==х, у [х] ,х]

Найдя решение, можем построить его график. Для этого придется, конечно, задать значения произвольных постоянных. В данном случае это уравнение первого порядка, и потому у него только одна произвольная постоянная: С[1]. Ее значение удобнее

всего задать подстановкой.

Plot[у[х] /.sol/. С [1 ]-> 1 , {х,-1.2,1.2}] ;

Иногда приходится строить графики решений, получающихся при различных значениях произвольных постоянных. Тогда нужно в подстановке указать список зна­ чений. Пусть, например, нужно построить графики решений для следующих значений Iпроизвольной постоянной с [ 1 ].

Range[-20,20,2]/4

Тогда это можно сделать так.

Plot[Evaluate[у[х] /.sol/.С[1]-> Range[-20,20,2]/4],{х,-3,3}];

Алгебра и анализ

363

Пример 10.8. Построение графика решения задачи Коши. Найдем решение задачи Коши для дифференциального уравнения у" = а у'+ у с параметром и построим график его решения для нескольких значений параметра.

Сначала с помощью функции DSolve находим решение задачи Коши.

soll=DSolve[{у *1[х]==а*у'[х]+у[х],у[0]==1,у'[0]==0},у,х]

{{у-» Function [{х}, 2 ^

а2

 

(а е7

* + V4 + а2 еТ

х _

а е7

х + VT7I2 еТ

*)]}}

Теперь можем построить графики.

Plot[Evaluate[у[х]/.soil/.a->Range[-10,10,1]/20],{х,-5,5}];

50

40

30

20

10

- 4 - 2 2 4

Все построенные решения проходят через точку (0, 1) и в этой точке имеют общую]

касательную, параллельную оси абсцисс.

1

i

1

Системы дифференциальных уравнений

Функция DSolve позволяет также решать системы дифференциальных уравнений.

364

Гпава Ю

Пример 10.9. Найдем решение

системы дифференциальных

уравнений

х ' = у ,

у = - а2х , удовлетворяющее начальным условиям х

= 1, у , =

0 при / = 0.

 

sol2= D Solve [ {х ' [ t ] = y [ t ]

, у ' [t] — - а А2*х [ t]

, х [0] = 1

,у [0] = 0 } , {х, у } ,

{t}]

{{x->Function[{t},Cos[a

t]],y

->Function[{t},-a

Sin[a

t]]}}

 

Теперь построим графики функций x(t) и y(t) для случая, когда параметр а прини­ мает значение 1/2.

Plot [Evaluate[{х[t],у [t]}/.sol2/.а->1/2],{t,-2Pi,2Pi}];

Чтобы построить фазовый портрет, нужно воспользоваться функцией

ParametricPlot.

ParametricPlot[Evaluate[{х[t],у [t]}/.sol2/.а->1/2], {t,-2Pi,2Pi},AspectRatio->Automatic] ;

Однако не всегда функция DSolve справляется с системами дифференциальных

уравнений.

Пример 10.10. Найдем решение системы дифференциальных уравнений ?'= ~2уу'+у,

удовлетворяющее начальным условиям у = 0, у ’ — 0, z = 0 при х = 0.

sol2=DSolve [{у1'[х]==у [х] Л2+г [х],

z*[х]==—2*у [х]*у'[х]+у[х],

У [о]==1,у *[0]==1,z [0]==0},

{у,Z},{X >]

Алгебра и анализ

365

DSolve [{у" [x] == у [x] 2 + z [x],

z'[x] == y[x] - 2 y[x] y'[x], у [0] = 1, y'[0] == 1, z [0] = 0}, {y, z}/ {x}]

Как видите, несмотря на то что в данном случае решением является пара функций y = e x, z = ех- е 1х, функция DSolve не смогла найти его. В таких случаях, как и одно

дифференциальное уравнение, так и систему дифференциальных уравнений прихо­ дится решать численно. Для этого можно воспользоваться функцией NDSolve. Вызов ее отличается от вызова функции DSolve лишь тем, что в нем нужно указать интер­

вал, на котором ищется решение.

sol2=NDSolve[{у1*[х]==у[х]A2+z[х] ,

z1[х]==-2*у[х] *у1[х]+у[х], У [0]==1, у* [0]==1, z [0]==0}, {У/ z},{х,0,10}]

{{y->InterpolatingFunction[{{0.,10.}}, <> ], z->InterpolatingFunction[{{0., 10.}}, о ] }}

В данном случае уравнения представлены в виде интерполяционных функций для у(х) и z(x) на интервале (0, 10). Хотя это и не аналитические выражения, они позво­ ляют вычислить значения наших функций — решений системы дифференциальных уравнений — в любой точке интервала (0, 10).

{У [5],z [5]}/.sol2 {{148.413,-21878. }}

Несложно представить решение и в табличном виде. Ниже, например, приведена таблица значений функций у(х) и г(х) на отрезке [1, 5].

Table[{х,у[х] ,z[x] }/.sol2, {х, 1,5,0.2}]

{{{1,2.71828,-4.67077}},{{1.2, 3.32012,-7.70305}}, {{1.4,4.0552,- 12.3894}},{{1.6,4.95303,-19.5795}},{{1.8,6.04965,- 30.5486}},{{2.,7.38906,-47.2091}},{{2.2,9.02501,- 72.4259}},{{2.4,11.0232,-110.487}},{{2.6,13.4637,- 167.808}},{{2.8,16.4446,-253.982}},{{3.,20.0855,- 383.343}},{{3.2,24.5325,-577.312}},N3.4,29.9641,- 867.883}},{{3.6,36.5982,-1302.83}},{{3.8,44.7012,- 1953.49}},{{4.,54.5981,-2926.36}},{{4.2,66.6863,- 4380.38}},{{4.4,81.4508,-6552.79}},{{4.6,99.4843,- 9797.64}},{{4.8,121.51,-14 643.3}},{{5., 148.413,-21878. }}}

Конечно, это совершенно нечитаемо, и лучше превратить это в обычную таблицу.

X

УМ

z(x)

1

2.71828

-4.67077

1.2

3.32012

-7.70305

1.4

4.0552

-12.3894

1.6

4.95303

-19.5795

1.8

6.04965

-30.5486

2.

7.38906

-47.2091

2.2

9.02501

-72.4259

2.4

11.0232

-110.487

2.6

13.4637

-167.808

2.8

16.4446

-253.982

3.

20.0855

-383.343

366

Гпава 10

3.2

24.5325

-577.312

3.4

29.9641

-867.883

3.6

36.5982

-1302.83

3.8

44.7012

-1953.49

4.

54.5981

-2926.36

4.2

66.6863

-4380.38

4.4

81.4508

-6552.79

4.6

99.4843

-9797.64

4.8

121.51

-14643.3

5.

148.413

-21878.

Эта таблица, несомненно, более читабельна, чем список, но гораздо нагляднее выглядят графики функций. Никаких проблем с их построением не возникает.

P l o t [Evaluate[{у[х],z [х]}/.sol2],{х,0,3}];

Резюме

В системе Mathematica предусмотрены все функции, необходимые для выполнения основных алгебраических и аналитических операций. Очень легко, в частности, вы­ полняются всевозможные подстановки. Их можно выполнять глобально, одновремен­ но, повторно, по образцу. Предусмотрены действия с дробями и со степенями, рас­ крытие скобок, приведение подобных. Имеются различные функции для выполнения операций над многочленами, в том числе и весьма трудоемкие для ручного счета, та­ кие как разложение на множители. Легко вычисляются наибольший общий делитель и наименьшее общее кратное полиномов, а также результант. Что касается поля ра­ циональных дробей, то для него предусмотрены не только четыре основных действия (они предусмотрены для любых выражений), но и более специфические операции вроде сокращения, раскрытия произведений и целые положительных степеней в чис­ лителе, а также разложение рациональной дроби на простейшие, разложение числите­ ля и знаменателя на множители, приведение к общему знаменателю с последующим сокращением общих множителей числителя и знаменателя в полученной сумме. Ряд Функций предназначен для упрощения результатов вычислений.

В области линейной алгебры также предусмотрен широкий набор операций: вы­ числение различных произведений (векторов и матриц), норм (векторов и матриц), матричные операции (в том числе обращение матриц и нахождение псевдобратных матриц). Есть средства решения систем линейных уравнений, в том числе и несовме­ стных (нахождение псевдорешений).

Аягебра и анализ

367

Что касается операций анализа, то и они, если не считать перехода к пределу, реализованы превосходно. Лишь при вычислении пределов нужно соблюдать осто­ рожность: в случае несовпадения односторонних пределов любой из них система Mathematica может подсунуть в качестве двустороннего. Система Mathematica весьма успешно справляется с вычислением производных (в том числе и смешанных) и ин­ тегралов (определенных и неопределенных). После вычисления производных полу­ ченный результат иногда нуждается в упрощении. Зато разложение функций в ряд

Тейлора, да и действия над рядами выполняются безукоризненно. Все это позволяет произвести довольно полное исследование функций (определить их интервалы моно­ тонности, найти локальные и глобальные экстремумы, найти интервалы выпуклости и точки перегиба) и построить их графики. При необходимости исследовать скаляр­ ные или векторные поля, задаваемые функциями нескольких переменных, можно воспользоваться функциями Outer и Inner для определения операций векторного

анализа. Легко определяются градиент, гессиан, лапласиан, якобиан и дивергенция. Впрочем, все нужные определения (причем в самых разнообразных системах коорди­ нат) имеются в пакете Calculus4VectorAnalysis4 Функциями этого пакета можно

воспользоваться и для решения других задач, например для исследования дифферен­ циальных уравнений. Для нахождения решений дифференциальных уравнений и их систем используется функция DSolve. Она может не только находить общие реше­

ния, но и учитывает дополнительные условия (начальные, граничные) и потому мо­ жет решать, например, задачу Коши. Если же функция DSolve не может найти реше­

ние в аналитическом виде, для численного решения можно воспользоваться функцией

NDSolve.

Задачи

Задача 10.1. Найти решение системы дифференциальных уравнений у ” =

z , z n- y t

удовлетворяющее начальным условиям у — 1, у' = 1, z = 1, z ' =

0 при х = 0. Построить

графики функций у(х) и г(х).

 

 

 

Задача 10.2. Найти решение системы

дифференциальных

уравнений х '= - у + г ,

у ' = z, z' = - x + z , удовлетворяющее начальным условиям х = 1, у = 1/2, z =

1/2 при

/ = 0. Построить графики функций x(l), y{t)

и z(>), а также фазовый портрет.

 

Задача 10.3. Найти решение системы

дифференциальных

уравнений

х'=х+у-

f + t - 2 , у ' = —2 x + 4 y + 2 ? - 4 t- 7 , удовлетворяющее начальным условиям х = 0, у = 2 при t = 0. Построить 1рафики функций х(1) и y(t), а также фазовый портрет.

368

Гпава 10

Глава 11

За гранью простого

Вэтой гл а в е ...

Новый вид науки

Ресурсы по системе Mathematica

Резюме

Задачи

Быть может, эти электроны — Миры, где пять материков, Искусства, знанья, войны, троны, И память сорока веков!

Еще, быть может, каждый атом — Вселенная, где сто планет; Там все, что здесь, в объеме сжатом, Но также то, чего здесь нет.

В. Я. Брюсов

Мир беспорядочно усеян упорядоченными формами.

П. Валери

Новый вид науки

j Боюсь, я несколько превысил отведенный мне лимит времени, хотя и не успел Iполностью познакомить вас ни со всей Математикой, ни со всеми функциями систе- i мыMathematica. Памятуя опыт Никола Бурбаки, я и не ставил перед собой такой заSдачи. Просто я хотел показать, что с помощью пятистрочечных программ, написанных на языке системы Mathematica, школьники, студенты, аспиранты, инженеры и науч­ ные сотрудники самых разных профилей могут успешно решать свой задачи. И если выготовы идти дальше и применять систему Mathematica в своей работе, — я достиг цели, поставленной перед написанием этой книги. Жаль, конечно, что нет такой од­

ной универсальной книги, в которой была бы изложена вся-вся Математика. Даже в этой тоненькой книжечке были затронуты вопросы, о которых пятитомная М ат ема­ тическая энциклопедия даже не упоминает. И уж тем более это справедливо для пяти­

томного (в семи книгах!) курса высшей математики, написанного В. И. Смирновым. Хотя многотомное собрание сочинений Бурбаки является, вероятно, одним из наибо­ лее полных, и оно не может рассматриваться как абсолютно полное. Впрочем, в каче­ стве одной из наиболее полных, если не самой полной, энциклопедий математики можно рассматривать, на мой взгляд, и систему Mathematica. (Конечно, она и непол­ на, и многотомна. Ведь ядро, хотя и расширяется от версии к версии, охватывает да­ леко не все разделы математики. Дополнительные сведения содержатся в пакетах.) Но это не простая, а акт ивная энциклопедия: она не просто выдает информацию, а

выполняет необходимые действия (вычисления, например). Как и при использовании любой другой, при применении этой энциклопедии требуется определенная подготов­ ка, — из этой книги вы почерпнули необходимые начальные сведения. В отношении удобства пользования система Mathematica уникальна: ею систематически' пользуется сам автор — Стив Вольфрам! Более того, именно с ее помощью Стив Вольфрам от­ крыл новый вид науки! Как это случилось? Как и все сложное, очень просто. Стив на­ чал искать ответ на вопрос: почему простые объекты могут образовывать сложную конструкцию и насколько сложным может быть поведение простых систем?

Теория универсальности, или насколько сложным

может быть поведение простой динамической системы

Дело заключается в том, что не все так просто, как может показаться на основании предыдущих рассуждений. В дей­ ствительности обстоятельства, с которыми мы сталкиваемся, кажутся на первый взгляд совершенно парадоксальными с чисто математической точки зрения и предусмотреть их можно только из физических соображений.

Жак Адамар

Возможно, заголовок кажется вам заумным. Может быть, это просто оттого, что вы никогда не слышали о динамических системах. Не беспокойтесь, все очень просто: в данном случае под динамической системой понимается любая система, в которой не­ который параметр определяется рекуррентным уравнением хп+] = Л х п, г). В частности, под динамической системой можно понимать числовую последовательность, опреде­ ляемую таким уравнением. Где встречаются такие последовательности? Да почти по­ всюду. Вот простейший пример.

Допустим, нас интересует изменение численности какого-либо вида животных в определенном районе. Один раз в год мы считаем их и получаем число х. По этим данным можно построить последовательность х и х2 ..., х„, (п = 1 соответствует пер­ вому измерению). Логично предположить, что среди этих чисел есть какая-то законо­ мерность. Естественно ожидать, что численность популяции в (я+1)-й год хл+1 зависит от того, сколько животных было год назад, т. е. от величины х„. Поэтому в простей­ шем случае хл+1 = '*)•

Здесь / — непрерывная функция; г — некий параметр, который зависит от биоло­ гических особенностей рассматриваемого вида. В популяционной генетике часто пред­ полагается, что хл+1 = rxn(N ~ x n).

Эта формула показывает, что численность вида быстро растет, пока она мала (xn« N ) , и начинает убывать, когда животных становится слишком много. Если сде­ лать замену переменных х„ = х'„ N, г = r / N , то в новых переменных наше уравнение будет иметь вид х л+1 = г'хл(1 -х л). Тем самым мы элиминировали параметр N и при­ вели уравнение к более естественной для математиков форме. Теперь по самому смыслу задачи 0< хл<1. Простоты ради опустим штрихи и займемся исследованием]

этой более простой динамической последовательности.

j

Что же будет происходить с различными видами (т.е.

с последовательностями j

хл+1 = гхп( 1-хл) с различными г) по прошествии достаточно долгого времени? Чтобы ’ ответить на этот вопрос для нашей простейшей модели, достаточно выяснить, как бу­ дет вести себя последовательность {*„} при различных значениях г. Давайте проведем численный эксперимент. Сначала дадим нужные нам определения.

х[г_][0]=0.5;

х [г_][nj:=x[r] [п]=г х[г] [п-1] (1-х[г] [п-1])

370

Глава 11