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

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

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

Глава 5. Комплексные числа и функции

Для y: функция просто осциллирует как косинус и синус, которыми она и является.

Это смешивание экспоненты вместе с синусом и косинусом дает несколько интересных формул, которые вы проверите в следующей задаче.

Задача 4.4

Используйте Maple для проверки следующих функциональных равенств.

Сначала сделайте запрос ?evalc, прочтите его и поищите примеры, а затем примените эту команду для проверки этих равенств.

(a) cos(x)

e(ix) e( ix)

(b) sin(x)

e(ix) e( ix)

2

2i

 

 

(c) cos(ix) = cosh(x)

(d) sin(ix) = isinh(x)

Описание команды evalc (из справки)

evalc применяется для работы с комплексными выражениями вида sin(a+I*b), путем разделения их на Re и Im части. По возможности вывод результатов evalc делается в канонической форме expr1 + I*expr2.

Основное предположение, заложенное в evalc – что неизвестные переменные представлены в виде действительных величин. Напри-

мер, evalc(Re(a+I*b)) = a и evalc(Im(a+b)) = 0. Более того, evalc также предполагает, что неизвестная функция действительной переменной – тоже действительная функция.

Для переопределения этих, задаваемых по умолчанию, предположений можно применить команду assume. Например, assume(u::complex) говорит evalc, что u не обязательно real. Учтите, что некоторые варианты использования команда assume неявно подразумевают real и только, а другие – нет. Например, assume(u<1) пола-

гает, что u – real, но assume(v^2<1) и assume(abs(v)<1) не подразуме-

вают, что v – real.

Команда evalc отображается на списки, множества, уравнения и отношения. Применение evalc к комплексному ряду тоже будет рядом, коэффициенты которого имеют канонический вид (как выше).

111

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

Когда evalc работает с функцией, разложение которой на Re и Im части неизвестно (как для f(1+I) с неопределенной f), то она пытается представить аргументы в канонической форме.

evalc распознает стандартные функции Re, Im, abs, и conjugate. Когда при обращении к evalc вызываются эти функции, то к ним применяются упомянутые выше предположения.

Например, evalc(abs(a+I*b)) = sqrt(a^2+b^2).

Комплексное выражение можно представить в evalc в виде polar(r,theta), где r – модуль и theta – аргумент выражения.

Полный список функций, известных evalc, см. evalc[functions]. Вызовите справку, чтобы посмотреть примеры.

Задача 4.5

Сделать 3D графики поверхности в комплексной плоскости Re ча-

стей cos(z) и sin(z) и Im части tan(z), где z = x + iy.

Для sin и cos диапазон x -9..9, для y -5..5; для tan: -5..5 и -3..3. По-

смотрите на них...

Для тангенса вам придется иметь дело с сингулярностями. Применитеопциюview ввидеview=-5..5. ЭтопредохранитMaple отпопытокрисовать до бесконечности. Для более тонкой сетки примените grid=[30,30].

Перейдем к степенной функции zp в комплексной плоскости. Для ее изображения легче использовать полярное представление: zp = rpe(ip ). Для целых степеней ее поведение несложно изобразить. Амплитуда увеличивается с ростом , а при изменении полярного угла комплексная экспонента осциллирует быстрее.

Задача 4.6

Создайте 3D графики Re частей функций z2 и z5 в диапазоне -3..3 по х и у для z2 и в меньшем диапазоне для z5.

Для нецелых степеней ситуация сложнее.

Рассмотрим на примере квадратного корня = 1/2. Ниже представлены 3D графики этой функции.

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

112

Глава 5. Комплексные числа и функции

plot3d(abs((x+I*y)^(1/2)),x=-1..1,y=-1..1,shading=z,axes=framed,labels= ["x","y","|f|"],orientation=[-60,45],title="Magnitude",grid=[40,40]);

>plot3d(Re((x+I*y)^(1/2)),x=-1..1,y=-1..1,shading=z,axes=framed,labels= ["x","y","Re(f)"],orientation=[-60,35],title="Real Part",grid=[40,40]);

>plot3d(Im((x+I*y)^(1/2)),x=-1..1,y=-1..1,shading=z,axes=frame

d,labels=["x","y","Im(f)"],orientation=[-60,35],title="Imaginary Part",grid=[40,40]);

>

Новедьобычныефункциинемогуттаксебявести? Конечно, онимогут находиться в комплексной плоскости. Здесь – проблема. Maple определяет полярный угол в диапазоне - .. . Посмотрим, что даст квадратный корень из двух разных значений z: z1 = e(iπ) и z2 = e(–iπ). Первое – обе величины z1 и z2 в точности = -1. Второе – квадратный корень из первой функции дает i а из второй -i! Т. е. квадратный корень из -1 имеет разные значения в зависимости от того, какой угол берется чтобы получить -1 в комплекснойплоскости. Этоначалоразреза(cliff face) вIm частиграфика, а линия в комплексной плоскости, где оказывается разрез, называется (branch cut). Подробнее об этих особенностях сказано в курсе ТФКП.

Эта проблема возникает для всех дробных степеней, например, как для функции ln(z). Это вы скоро увидите.

Задача 4.7

Сделайте то же самое, что и с корнем квадратным, с функцией ln(z). Локализуйте положение разреза (branch cut) и, основываясь на рассуждениях, аналогичных предыдущему, объясните, почему он находится в этом месте (вставьте комментарий). Удостоверьтесь, что функция ln(x + Iy) есть в командах графики.

Задача 4.8

Во второй части Пособия.

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

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

113

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

Задача 4.9

Примените Maple, чтобы показать, что функции Бесселя J0(z) и I0(z) связаны в комплексной плоскости. Для этого рассчитайте J0(ix) и I0(ix). То же сделайте для более высоких порядков функций Бесселя, скажем, n = 1,2,3. Затем – для функции Бесселя Y0. Во втором случае Maple не даст вам ничего особенно интересного. Приятно будет вам сказать, что

Y0 (ix) iI0 (x)

2K0 (x)

, но без доказательства. Чтобы удостовериться в

 

 

 

том, что Maple знает, что делает, просто проверьте это равенство численно. Используйте z = Ix для нескольких действительных значений x.

Задача 4.10

Проверьте в 3D графике поведение эллиптического интеграла K(z) в комплексной плоскости. Команда вызова EllipticK(z). Рассмотрите Re и Im части в диапазонах x и y = -2..2.

Интерференция волн

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

Вначале дадим определение термину фаза.

Фазой называют добавку к аргументу синуса или косинуса. Например, если колебания зависят от времени как cos( t), то говорят, что фаза колебаний линейно зависит от времени: t. Если колебания сдвинуты во времени так, что описываются функцией cos( t + ), то новая фаза колебаний есть t + , и мы говорим, что относительно предыдущих колебаний они сдвинуты на фазовый угол (сдвиг) .

Фазовыми сдвигами трудно управлять, поскольку они внутри косинуса или синуса, и чтобы получить простой ответ нужно знать тригонометрию. Но если вы вспомните, что cos( t) = (e(i t)) (знак – это мепловский значок для представления Re, действительной части), то можно упростить множество формул.

Вот пример. Пусть есть 12 разных колебаний, подчиняющихся закону cos( t + n), причем все интерферируют друг с другом. Пусть n

114

Глава 5. Комплексные числа и функции

волна имеет фазовый сдвиг n 2n . Применив Maple, можно сло13

жить эти колебания вместе и получить:

>restart;

>s1:=Sum(cos(omega*t+2*Pi*’n’/13),’n’=1..12);

>s1:=value(s1);

>simplify(s1);

Это не очень симпатичный ответ, и надо попробовать упростить

его.

Теперь сделаем то же с помощью комплексной плоскости. Вместо сложения 12 косинусов мы сложим 12 экспонент. Посколь-

ку действительная часть каждой есть косинус, мы можем выполнить комплексное суммирование, а в конце взять действительную часть и получится то же самое, как если бы мы сложили 12 косинусов. Единственная разница в том, что ответ будет симпатичней.

Теперьперейдемкделу. Сначаласделаемнебольшойанализвручную. Вот сумма, действительную часть которой мы получим в конце

12

e(i t i n ). n 1

Мы вынесем общий множитель e(i t) (учтите, что временной множитель выносится – что является основанием для применения комплексной экспоненты), а оставшуюся часть перепишите так:

 

i2 n

 

 

i2 ) n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

13

 

 

13

.

 

 

 

e

 

 

 

 

Так что наша сумма примет вид:

 

 

12

 

i2

i t

 

 

 

 

 

e

zn , где

z e

13 .

 

 

n 1

 

 

 

 

Завершим работу:

>z:=exp(I*2*Pi/13);

>s:=Sum(z^n,n=1..12);

>s:=simplify(value(s));

115

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

Теперь вернем вынесенный множитель e(i t), возьмем Re часть и узнаем, что большая смесь косинусов оказалась равной просто:

12

 

 

2 n

 

cos

t

 

 

cos( t).

 

n 1

 

 

13

 

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

Не страшно, если сразу ответ не получится. Чтобы помочь Maple, примените знания комплексной математики.

Задача 4.11

В этой задаче просто следуйте инструкциям и выполняйте команды, обращая внимание на то, что получается.

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

Есть два источника света на расстоянии d между ними и экран на расстоянииL понормаликлиниимеждуисточниками. Надоопределить интенсивность волны на экране, как функцию расстояния по экрану.

Центр находится между источниками на экране, см. рисунок ниже (заодно покажем как рисовать картинки в Maple. См. справку – см. за-

прос ?plottools).

>restart:with(plots):

>l1:= listplot([[0,0],[2,0]]): # расстояние до экрана

>t1:= textplot([1,-.1,"L"]): # точка L

>l2 := listplot([[-.08,-.2],[-.1,-.2],[-.1,.2],[-.08,.2]]): # скобка d

>t2:= textplot([-.15,0,"d"]): # точка d

>p1:= pointplot([0,-.2],symbol=circle): # нижний источник

>p2:= pointplot([0,.2],symbol=circle): # верхний источник

>l3:= listplot([[2,-1.25],[2,1.25]]): # экран

>t3:= textplot([2.08,.5,"y"]): # точка y

>l4:= listplot([[0,.2],[2,.6]]): # верхний луч

>t4:= textplot([1.5,.6,"r1"]): # точка r1

116

Глава 5. Комплексные числа и функции

>l5:= listplot([[0,-.2],[2,.6]]): # нижний луч

>t5:= textplot([1.5,.3,"r2"]): # точка r2

>plots[display]([l1,t1,l2,t2,p1,p2,l3,t3,l4,t4,l5,t5],axes=none,thickness=3, view=[-.5..2.1,-1.25..1.25],font=[HELVETICA,14]);

Для возможно большей точности при изучении интерференции

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

i kr t

 

 

 

 

зададим поле от каждого источника в виде

 

 

 

 

 

 

. Два расстояния

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d 2

2

 

 

d 2

2

 

задаются в виде r1

y

 

 

L

и r2

y

 

 

 

L

. Чтобы полу-

 

 

 

 

 

2

 

 

 

2

 

 

 

 

чить полное поле на экране, сложим оба поля и получим сумму, которую обработаем с помощью Maple:

Определим функции для r1(y) и r2(y)

>R1:=y-> sqrt((y-d/2)^2+L^2);

>R2:=y-> sqrt((y+d/2)^2+L^2);

Теперь просто складываем две волны от источников, берем Re часть и возводим ее в квадрат, чтобы получить интенсивность:

>Intensity:= y-> Re( exp(I*k*R1(y)-I*omega*t)/R1(y) + exp(I*k*R2(y)- I*omega*t)/R2(y))^2;

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

ность, усредненную по времени.

Полезно знать, чему равны усредненные по времени синус или косинус и их произведение:

>Int(sin(t),t=0..2*Pi)/(2*Pi);value(%);

>Int(cos(t),t=0..2*Pi)/(2*Pi);value(%);

>Int(cos(t)*sin(t),t=0..2*Pi)/(2*Pi);

>value(%);

117

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

>Int(cos(t)^2,t=0..2*Pi)/(2*Pi);

>value(%);

>Int(sin(t)^2,t=0..2*Pi)/(2*Pi);value(%);

Следует запомнить, что: усреднение по времени sin(t), cos(t) и sin(t)cos(t) = 0, усредненные по времени

sin2(t), cos2(t) = 1/2.

Теперь можем заняться интенсивностью. Вот какое выражение для интенсивности дает Maple:

>assume(k,real,r1,real,r2,real,omega,real,t,real);

>Intense:= Re( exp(I*k*r1-I*omega*t)/r1 + exp(I*k*r2-I*omega*t)/r2)^2;

Чтобы упростить вычисления, переопределим аргументы синуса и косинуса как x1 и x2, соответственно:

>Intense:=(cos(x1)/r1+cos(x2)/r2)^2;

Теперь разложим так

>Intense:=expand(Intense);

и затем усредним по времени каждый член.

> combine(cos(x1)*cos(x2));

(Замечание: для получения тригонометрических равенств попро-

буйте применить expand, simplify, combine.)

Член с x1+x2 зависит от 2 t и его среднее по времени равно 0, тогда как член с x1-x2 не зависит совсем от времени, и его усреднение по времени даст его самого. Получаем

> Intense:= 1/(2*r1^2)+cos(x1-x2)/(r1*r2)+1/(2*r2^2);

После усреднения по времени мы можем переопределить нашу функцию интенсивности по y

>Intensity:=y->1/(2*R1(y)^2)+cos(k*R1(y)-k*R2(y))/(R1(y)*R2(y))+ 1/(2*R2(y)^2);

118

Глава 5. Комплексные числа и функции

теперь определим детали физической картины для d=.01мм, L=1м, и красного света с длиной волны 600 нм

> d:=1e-5;L:=1;k:=2*Pi/600e-9;

Окончательно: чтобы увидеть, как будет выглядеть картинка на экране, мы можем нарисовать интенсивность как функцию y. Окно обзора зададим размером 1 м.

> plot(Intensity(y),y=-0.5..0.5);

Задача 4.12

Первый минимум от точки y = 0 находится в месте, где kd sin( ) = , где угол определен выше (y = L tan( )). Проверьте правильность этого утверждения на рисунке, получившемся в предыдущей задаче. Расстояния у измеряйте от центра и пересчитайте у в угол . (Оцените положение x на рисунке, затем выберите самый узкий диапазон по x, для более точного определения.) Значения переменной – те же самые, что в предыдущей задаче:

>restart:with(plots):

>l1:= listplot([[0,0],[2,0]]): # расстояние до экрана

>t1:= textplot([1,-.1,"L"]): # точка L

>l3:= listplot([[2,-1.25],[2,1.25]]): # экран

>t3:= textplot([2.08,.5,"y"]): # точка y

>l4:= listplot([[0,0],[2,.6]]): # гипотенуза

>t4:= textplot([.6,.1,"q"]): # угол θ

>p1:=plots[display]([l1,t1,l3,t3,l4],axes=none,thickness=3,view=[-.5..2.1, -1.25..1.25],font=[HELVETICA,14]):

>p2:=plots[display]([t4],axes=none,thickness=3,view=[-.5..2.1,- 1.25..1.25],font=[SYMBOL,20]):

>display(p1,p2);

Задача 4.13

См. вторую часть Пособия.

119

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

Электростатика с линейными зарядами

Комплексная плоскость – это великолепное место для визуализации электрических полей и эквипотенциальных поверхностей.

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

Можно показать, что для действительная часть комплексной функ-

ции F(z) ln(z z0 ) – это электростатический потенциал линейного

2 0

заряда, чей заряд/длина локализованы в плоскости xy в комплексной точке z0, и что линии в комплексной плоскости, где мнимая часть – константа – есть линии электрического поля. (Это называется конформными отображениями, подробнее о них можно почитать в книгах по ТФКП и теории электричества).

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

Мы также посмотрим, как Maple строит контурные графики

(contour plot).

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

>restart:with(plots):

>p1:=contourplot(Re(-ln(x+I*y)),x=-5..5,y=-5..5,grid=[30,30],contours=30, coloring=[cyan,blue]):

>p2:=contourplot(Im(-ln(x+I*y)),x=-5..5,y=-5..5,grid=[30,30],contours=30, coloring=[red,red]):

>plots[display]([p1,p2],scaling=constrained);

Смотрится неплохо, за исключением смешивания в электрическом поле вдоль отрицательных x. Это – разрез логарифмической функции, которая изображается как клюв (cliff). Если игнорировать эту деталь

120