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

Maple для студентов физиков. Часть 1. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

Глава 3. Графика

Задача 2.12

Еще одна задача для развлечения. В показанной выше команде построения полярного графика рассмотрите два числа j и k как подгоночные параметры, и посмотрите, какого вида картинки вы можете создать.

Особенно интересны дробные значения j – в случае если вы используете большие значения k.

> j:=3;k:=2;

(Учтите, что в этом графике оси отключены, поэтому внешнее это выглядит своеобразно.)

> plot([cos(j*s),s,s=0..k*Pi],coords=polar,scaling=constrained,axes=none);

Специальные функции

Кроме известных вам элементарных математических функций вроде тригонометрических, экспоненты, логарифма и т. п. существуют и широко применяются в физике так называемые специальные функции. С некоторыми вы, возможно уже знакомы, с другими познакомитесь позже. Запрос об этих функциях ?inifcns. Графика позволят увидеть реальный вид этих функций.

Задача 2.14: Полиномы Лежандра / Legendre polynomials

Эти функции появляются в задачах электромагнетизма и квантовой механики в сферических координатах. Обозначаются Pn(x) и являются просто полиномом по х. В интервале [–1,1] они обладают очень необычными свойствами:

(1)Для нечетных значений целочисленного индекса n полиномы Лежандра нечетны, а для четного n – четны.

(2)Pn(1) = 1 и Pn(–1) = (–1)n.

(3)При росте n они все больше и больше колеблются, но в интер-

вале (–1,1) их амплитуды не превышают 1.

Задание: нарисуйте восемь первых полиномов Лежандра один над другим с помощью команды plot.

Можно написать все восемь внутри команды, а можно применить команду последовательности seq, работа которой показана ниже.

71

Maple для студентов физиков

Пусть вам надо генерировать последовательность функций xn для n = 1..8. Это делается так:

> seq(x^n,n=1..8);

Так же можно сделать и для P(n,x) в команде plot ниже:

>with(orthopoly);

>seq(P(n,x),n=0..8);

Поставьте правильно эту последовательность команд в команду plot так, чтобы появлялись все функции от n = 0 до n = 8.

> plot(................

,x=-1..1);

Задача 2.15: Гамма-функция / The Gamma function

Гамма-функция – это аналитическое продолжение на действительные числа факториальной функции целых чисел. Связь записывается так:

 

(n + 1) = n!

Эта функция возникает в разных областях физики. Она обладает необычными свойствами при отрицательных значениях аргумента. Нарисуйте ее график для области –5..5 и проверьте правильность чисел при положительных целых и посмотрите как необычно выглядит эта функция на отрицательной полуоси. Команда: GAMMA(x);

Задача 2.16: Полные эллиптические интегралы / Complete elliptic integrals

Функции полного эллиптического интеграла K(k) и E(k) определяются определенными интегралами

 

1

 

 

 

K(k) 02

 

d ;

E(k) 02

1 k2 sin( )2 d .

 

 

 

1 k

2

2

 

 

sin( )

 

 

 

Команды Maple: EllipticK(k) и EllipticE(k).

Обычно применяют эти функции для k в диапазоне 0..1, но можно аналитически продолжить на полную комплексную плоскость. Для k = 0 обе функции K(k) и E(k) равны /2. При k = 1, K(k) имеет логарифмическую сингулярность, а E(k) = 1.

72

z e x2 dx,

Глава 3. Графика

Нарисуйте на одном графике обе эти функции в этом диапазоне при numpoints=200 и 1000; нужно, чтобы вы посмотрели насколько слаба логарифмическая сингулярность. Вы поймете, что при изменении numpoints почти ничего не изменяется , кроме вертикального диапазона (немного). Чтобы понять, причину и то, что такое поведение означает слабую сингулярность, сравните с сильной сингулярностью на паре графиков (см. ниже). Обратите внимание на числа на оси у:

>plot(1/(1-x),x=0..1,numpoints=200);

>plot(1/(1-x),x=0..1,numpoints=1000);

Задача 2.17: Функция ошибок / The error function

Эта функция из теории вероятностей, называется erf(x), команда erf(x).

Гауссово распределеие веростности пропорционально e x2 , и вероятсность того, что переменная x находится между – и z пропорциональна

что есть в точности функция ошибок erf(z).

Но по ряду причин решено, что базовую функцию erf следует определить как интеграл от 0, а не от – , поэтому:

2 0z e( x2 ) dx erf(z)= .

Вероятность того, что гауссова переменная находится между – и

z дается формулой 1 erf(z) . 2

Нарисуйте оба графика erf(x) и (1+erf(x))/2 в диапазоне –3..3.

Анимации / Animations

Наиболее впечатляющая графика Maple – это анимации. Рассмотрим два примера для простой волны.

73

Maple для студентов физиков

Фомула для распространяющейся волны y(x, t) = A sin(kx t). С помощью команды animate Maple может показать, как работает эта формула.

Сначала зададим численные значения A, k, , затем анимируем функцию путем рисования многих графиков по х в последовательные промежутки времени, как в кино.

ПРЕДУПРЕЖДЕНИЕ: при выполнении этой группы команд вы увидите график, но не анимированный, а застывший на месте. Чтобы заставить его двигаться, щелкните на нем и затем запустите его с помощью элементов управления, которые появятся на панели управления (значок «воспроизведение», как на плеере). Посмотрите, что означают значки управления анимацией. Найдите значок для повторного циклического воспроизведения.

>restart:with(plots):

>A:=1.5;k:=3*Pi/2.;omega:=Pi/2.;

>animate(A*cos(k*x-omega*t),x=0..20,t=0..20,numpoints=50,frames =10);

Задача 2.18

В предыдущей задаче измените команду animate так, чтобы функция была глаже по х и по времени и запускалась бы с другими параметрами numpoints и frames. С помощью вашей анимации покажите, что скорость, с которой движется верхушка волны (эта скорость называется фазовой скоростью) задается так:

v . k

Покажите, что изменение знака k изменяет направление движения волны.

Задача 2.19

В предыдущей задаче измените анимацию так, чтобы вместо этого рисовалась стоячая волна: y(x, t) = A sin(kx) sin( t). Используйте диапазон x, в котором стоячая волна имеет три нуля между конечными точками и ее концы фиксированы.

74

Глава 3. Графика

Задача 2.20

С помощью анимации покажите, что сумма двух волн равной амплитуды и распространяющихся в противоположных направлениях есть стоячая волна.

Волновые пакеты (продолжение)

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

Волновойпакетсоздаетсятак: беретсянаборволнвидаAsin(kx t) с разными k, и они складываются, как в разделе о Фурье-анализе при рассмотрениипринципанеопределенности. Чтобысоздатьвпростран-

стве волновой пакет с длиной 2 и шириной x мы делаем в точности k0

тоже самое с k, используя амплитудную функцию A(k) с центром в k0 и шириной k. Новым является то, что этот пакет движется и странным образом переливается. Его поведение определяется дисперсионным соотношением = (k) для складывающихся волн.

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

Пусть дисперсионные соотношения будут такими же, какие управляют светом и звуком (т. е. не дисперсионные): = kv, где v – фазовая скорость волн. Тогда в суперпозиции каждая волна движется в точности с той же скоростью, как и остальные, поэтому каждая часть волнового пакета движется со скоростью v, как показано на примере ниже.

Определим дисперсионное соотношение:

>v:=1;w:=k->k*v;

>ko:=1;A:=k-> exp(-(k-ko)^2*40);

Теперь посмотрим на волновой пакет при t = 0:

> f:=(x,t)-> sum(sin((ko-.5+n/40)*x-w(ko-.5+n/40)*t)*A(ko-.5+n/40),n=0..40);

75

Maple для студентов физиков

> with(plots):plot(f(x,0),x=-60..60);

Теперь мы готовы к тому, чтобы он двигался с помощью команды animate.

> animate(f(x,t),x=-60..60,t=0..180,frames=80,numpoints=400,color=navy);

Задача 2.21

Более интересные вещи происходят, если дисперсионные соотношения – нелинейная функция (т. е. не как выше = kv).

Первое – это то, что волны в пакете и пакет как целое более не движутся с одной скоростью.

Попробуем новые дисперсионные соотношения в виде

kv 1 ak . k0

В Фурье-анализе можно показать, что гребень волны движется с

фазовой скоростью vphase , а пакет как целое движется с групповой k

скоростью vgroup d . d k

(a) Найдите фазовую и групповую скорости для введенного в

этой задаче дисперсионного соотношения (Maple поможет). Выберите k = k0 и получите v и vg (это стандартные обозначения фазовой и групповой скоростей) как функций параметра a. Модифицируйте дисперсионные соотношения в группе Maple, которая дана в первой части задачи и запустите ее с a = 1. Постарайтесь увидеть, что гребни волны движутся медленнее, чем волновой пакет как целое (вы увидите гребни волн, которые движутся назад сквозь пакет, потому что групповая скорость больше фазовой скорости). Чтобы это увидеть, вам надо замедлить анимацию с помощью элементов управления на панели. Вам надо также перейти в непрерывный режим воспроизведения и подогнать время моделирования, чтобы оно длилось достаточно долго для того, чтобы групповая скорость покрывала расстояние от x = 0 до x = 60.

Предупреждение: будьте терпеливы, так как это занимает время.

76

Глава 3. Графика

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

Задача 2.22

В части (b) задачи 2.21 вы увидели, что, хотя волновой пакет не движется сколько-нибудь значительно, он немного изменяет форму. Причина в том, что из-за диффузии этот волновой пакет может расплываться во времени, в точности как из-за термической диффузии расплывается малое пятно горячего масла на металле. Для расширяющегося волнового пакета коэффициент диффузии пропорционален амплитуде второй производной (по k) дисперсионного соотношения. Это означает, что если дисперсионные соотношения не имеют равной нулю второй производной, то волновой пакет расплывется во времени. Но чтобы увидеть это в реальности, вам понадобится запустить симулирующую анимацию на достаточно долгое время, чтобы действие стартового эффекта стало реально меньшим. Это время порядка нескольких времен абсолютного значения 1/( '' k^2) в этой задаче, где ∆k это ширина A(k) (т. е. FWHM). Рассчитайте '' и проверьте, что оно не равно нулю, а затем запустите анимацию для задачи 2.21 на достаточно долгое время, чтобы вы могли увидеть расплывание.

Задача 2.23

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

Визуализация векторных полей

Команде fieldplot позволяет визуализировать векторные поля в двух измерениях.

Пусть имеем магнитное поле, задаваемое формулами Bx B0y и a

By B0 x . Для визуализации линий поля необходимо сделать следую- a

щее (для упрощения цифр, положим B0 = 1 и a = 1).

77

Maple для студентов физиков

>restart;with(plots):

>fieldplot([y,-x],x=-1..1,y=-1..1,grid=[20,20],color=red,arrows=SLIM);

Заметьте, что в квадратных скобках указаны компоненты поля в порядке [Bx,By].

Также есть команда fieldplot3d, которая делает то же самое в трех измерениях , как с ней работать – см. запрос ?fieldplot3d.

Задача 2.24

(a) Примените fieldplot для визуализации электрического поля ли-

нейного заряда E

осям х и у.

(b) Примените

(xi yj)

, где i и j – это единичные векторы по

2 (x2 y2 )

 

fieldplot

для визуализации магнитного поля

длинной проволоки B 0l( yi xj) . Поэкспериментируйте с различ- 2 (x2 y2 )

ными настройками сетки и выбором для опции arrows (см. запрос

?fieldplot).

Внимание: не надо использовать большие цифры для опции grid в команде. Это сделает работу Maple неудачной. Не нужно задавать больше 30×30, а лучше бы 16×16 – это зачастую правильный выбор. Не используйте для сетки нечетные числа, поскольку это поставит точку сетки на начало координат, где поле бесконечно (в этих примерах).

3D-поверхности и контурные графики

Для визуализации двумерных данных в виде функции f(x,y) Maple дает вам две возможности на выбор:

(1)нарисовать значения функции как высоту поверхности над плоскостью xy, или

(2)нарисовать контуры постоянного (значения) f(x,y) в плоскости xy. Что лучше – решается проверкой и на ваш вкус.

Примеры для обоих вариантов.

78

Глава 3. Графика

Рассмотрим функцию

 

 

 

x sin(y)

 

 

 

 

 

 

x

 

 

 

0.4

 

 

 

 

 

 

 

 

 

f (x,y) e

 

 

 

 

 

 

0.2cos

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

1

0.3 y

2

,

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

функция типа «горный рельеф» (неважно, откуда она; это просто пример).

Трехмерный график создается с помощью команды plot3d

>restart;

>f:=exp(-abs(x-sin(y)))*(1+.2*cos(x/2))*(1 + .4/(.3+y^2));

>plot3d(f,x=-6..6,y=-6..6);

Это смотрится весьма интересно, но детали слишком грубые, и чтобы посмотреть, что происходит, надо применять различные углы обзора. Этоконтролируютопциикоманды, которыеможнопосмотреть по запросу ?plot3d[option], или просто щелкните на фигуре и тащите курсор, удерживая левую кнопку мыши, пока не повернете куда надо. Если зайти в меню Options на панели и заменить отображение с inline на window, вы получите рисунок со своим набором инструментов, которые помогут изменить множество элементов.

Вот улучшенный график с опцией внутри команды:

>plot3d(f,x=-6..6,y=-6..6,grid=[60,60],labels=[“x”,”y”,”f”],orientation= [45,30], axes=boxed,shading=xy,view=0..3);

>

Сетка контролируется опцией grid=[m,n], надписи – опцией labels,

и угол обзора – orientation.

Предупреждение: разработчики Maple используют как угол сферических координат вместе с осью z и азимутальным углом (ху поворот).

В физике углы обозначаются с точностью до наоборот. По-

этому форма опции ориентации orientation=[φ, θ] противоположна тому, что вы, прочли в Maple help. Вдобавок, угол φ указывает направление, вдоль которого смотрит наблюдатель, а не угловое положение наблюдателя. Это необычно, и требует поэкспериментировать, чтобы привыкнуть и получать из опций именно то, что хочется.

Вертикальный размер контролируется опцией view=zmin..zmax.

79

Maple для студентов физиков

Тени задаются shading=z, shading=xy, shading=xyz.

Другие параметры можно посмотреть по запросу ?plot3d. Попробуйте и посмотрите, что делают опции на панели управле-

ния, которые появляются после щелчка по графику.

Посмотрите контурный рисунок этих же гор, или топографическую карту (не забывайте, что для применения команды нужно сказать: with(plots))

>restart;

>with(plots):

>f:=exp(-abs(x-sin(y)))*(1+.2*cos(x/2))*(1 + .4/(.3+y^2));

>contourplot(f,x=-6..6,y=-6..6,contours=40,grid=[30,30],coloring=[green, blue]);

Учтите, что опция coloring=[green,blue] рисует малые значения функции зеленым, большие – синим, а остальное – переходными цветами. Для подробной справки посмотрие запрос ?plot[color])

> ?plot[color]

Общие правила синтаксиса команд графики

Простые графики

Графики действительных величин expr или функций f(x), f(x, y), x [x1, x2], (x, y) [x1, x2] × [y1, y2].

f:=expr;

plot(f, xl..x2);

f:=x->expr;

plot(f(x),x= x1..x2, ops);

f:=(x,y)->expr;

plot3d(f(x,y),x=xl..x2,y=yl..y2,ops);

Сложные графики

Несколько графиков на одном рисунке list и set.

L1:=[f1(x),...,fn(x)]:

L2:=[Fl,...,Fn]:

 

S1:={f1(x),...,fn(x)}:

S2:={F1,...,Fn}:

plot(L1,x=a..b);

plot(S1,x=a..b);

plot(L2,x=a..b);

plot(S2,x=a..b);

80