Maple для студентов физиков. Часть 1. Учебное пособие
.pdf
Глава 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
