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

 

Версия для печати

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

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

Задача 4.4. Специальные функции

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

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

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

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

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

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

С фазовыми сдвигами трудно работать, поскольку они внутри косинуса или синуса, и, чтобы получить простой ответ, нужно знать тригонометрию. Но если вспомнить, что (знак – это Maple-овский значок для Re, действительной части), то можно упростить множество формул.

Вот пример. Есть 12 разных колебаний, подчиняющихся закону причем все интерферируют друг с другом. Пусть n-я волна имеет фазовый сдиг Сложим эти колебания и получим:

  • restart;
  • s1:=Sum(cos(omega*t+2*Pi*'n'/13),'n'=1..12);
  • s1:=value(s1);
  • simplify(s1);

Это не очень красивый ответ. Попробуем упростить его и решим задачу с помощью комплексной плоскости. Вместо сложения 12 косинусов сложим 12 экспонент. Поскольку действительная часть каждой есть косинус, можно выполнить комплексное суммирование, а в конце взять действительную часть, и получится то же самое, как если бы сложили 12 косинусов. Единственная разница в том, что ответ будет приятно выглядеть. Сначала вручную сделаем небольшой анализ. Вот сумма:

В конце решения возьмем ее действительную часть. Общий множитель вынесем за знак суммы, а оставшаяся часть примет вид:

Так что сумма получится такой:

где

  • z:=exp(I*2*Pi/13);
  • s:=Sum(z^n,n=1..12);
  • s:=simplify(value(s));

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

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

Задача 4.5 об источниках света перед экраном

Два источника света расположены на расстоянии 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
  • 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]);

Для возможно большей точности при изучении интерференции зададим поле от каждого источника в виде Два расстояния задаются в виде: и  Чтобы получить полное поле на экране, сложим оба поля и получим сумму. Определим функции для 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(%);
  • 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.

А теперь займемся интенсивностью.

  • 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) зависит от 2t, и его среднее по времени равно 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);

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

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

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

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

Первый минимум от точки y = 0 находится в месте, где kdsin(θ) = π (угол θ определен выше: y = Ltan(θ)). Проверьте правильность этого утверждения на рисунке, получившемся в предыдущей задаче. Расстояния у измеряйте от центра и пересчитайте у в угол θ. (Оцените положение 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.6. Электростатика с линейными зарядами

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

Можно показать, что для линейного заряда длиной λ, локализованного в плоскости xy в комплексной точке z0, электростатический потенциал описывается действительной частью комплексной функции:

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

С такими функциями Maple позволяет быстро визуализировать эквипотенциальные поверхности и линии поля разнообразных конфигураций линейных зарядов. Заодно посмотрим, как Maple строит контурные графики (contourplot).

Покажем, как для единичного линейного заряда 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). Если игнорировать эту деталь рисунка, график – хороший. (Другой способ визуализировать электрическое поле безо всяких ненужных уступов – применить команду fieldplot. В меню Edit щелкните по Find и затем задайте fieldplot.)

Задача 4.7. Линейные заряды

Создайте контурные графики (вроде предыдущего) для:

(a) двух линейных зарядов одинаковой плотности, один в z = i, другой в z = –i;

(b) двух линейных зарядов с одинаковыми амплитудами плотности, но разного знака, находящихся там же, где и в задаче (а);

(c) поместите линейный заряд величиной 2 в z = –i и один величиной 1 в z = i.

Понадобится более тонкая сетка и больше контуров, чтобы увидеть, что происходит.

Посмотрите, можете ли вы указать точку, где электрическое поле = 0.

Можно использовать комплексные функции для изучения поведения потенциала и напряженности поля вблизи проводящих углов. Рассмотрим контурный график для функции iz2:

  • restart:with(plots):
  • p1:=contourplot(Re(I*(x+I*y)^2),x=0..5,y=0..5,grid=[30,30],contours=40,coloring=[cyan,blue]):
  • p2:=contourplot(Im(I*(x+I*y)^2),x=0..5,y=0..5,grid=[30,30],contours=40,coloring=[red,red]):
  • plots[display]([p1,p2],scaling=constrained);

Потенциал дается действительной частью, а поле – комплексной частью. Получаем: На графике голубым – эквипотенциальные поверхности, красным – линии поля. При V = – xy заземляются обе оси (x и y), а мы смотрим на поведение электрического поля в заземленном правом углу. Видно, что в углу красные линии поля находятся далеко друг от друга, показывая, что здесь электрическое поле = 0. А как ведет себя электрическое поле, если мы приближаемся к углу?

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

  • restart:with(plots):
  • p1:=contourplot(Re(exp(-I*Pi/6)*(x+I*y)^(2/3)),
    x=-5..5,y=-5..5,grid=[30,30],contours=40,coloring=[blue,blue]):
  • p2:=contourplot(Im(exp(-I*Pi/6)*(x+I*y)^(2/3)),
    x=-5..5,y=-5..5,grid=[30,30],contours=40,coloring=[red,red]):
  • plots[display]([p1,p2],scaling=constrained);

Чтобы увидеть, что это поле угла, игнорируем третий квадрант и посмотрим на 1-й, 2-й, 4-й квадранты. Голубые линии – это эквипотенциальные поверхности. Они сильно сгущаются вокруг угла, а красные линии электрического поля радиально исходят из угла. В цилиндрических координатах этот потенциал пропорционален , поэтому электрическое поле (производная от потенциала) пропорционально , что дает в углу бесконечное значение.