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

 

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

Комплексная арифметика

В этой главе – обзор того, что можно сделать на комплексной плоскости: арифметика, расчеты, специальные функции вроде J0(z) и Г(z).

Рассмотрим, что можно делать с комплексными числами. Во-первых, простое сложение-вычитание. Правила – как при сложении векторов на плоскости (ху):

  • z1:=5+3*I;
  • z2:=1-6*I;
  • z3:=z2+z1;

Представим задачу о сложении на комплексной плоскости, определив комплексные числа как стрелки-векторы (заодно поучимся их строить). На картинке векторы, представляющие комплексные числа, изображены разными цветами: вектор L1 (аналог числа z1) – зеленым, вектор L2 (аналог числа z2) – синим, а их сумма нарисована красным (аналог числа z3).

  • with(plottools):
    L1:= arrow([0,0], [5,3], .2, .5, .1, color=green):
    L2:= arrow([0,0], [1,-6], .2, .5, .1, color=blue):
    L3 := arrow([0,0], [6,-3],.2,.5,.1,color=red):
  • plots[display](L1,L2,L3, axes=normal,view=[-10..10,-10..10]);

OK, но умножение и деление не похожи на операции с векторами. Комплексное умножение выполняется путем обычного алгебраического умножения Re и Im частей каждого из чисел, при этом I2 = – 1. А вот пример умножения:

(5 + 3I) * (1 – 6I) = (5 + 3I – 30I + 18) = 23 – 27I (использован дистрибутивный закон).

  • z1*z2;

Деление комплексных чисел выполняется исходя из идеи комплексного сопряжения (комплексно сопряженное – это число с противоположным знаком перед мнимой частью):

  • conjugate(6+4*I);

Сопряженные величины полезны из-за того, что произведение числа на сопряженное ему есть действительное число:

  • conjugate(6+4*I)*(6+4*I);
  • assume(x,real);assume(y,real);
  • conjugate(x+y*I)*(x+y*I);
  • expand(%);

А оно равно квадрату амплитуды комплексного числа, рассматриваемого как вектор. Ответ 62 + 42 = 52.

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

Для описания операции умножения придется перейти в иное представление комплексных чисел. В комплексной плоскости декартовы координаты заменим на полярные. Тогда число представляется в виде пары (модуль числа, угол). Угол отсчитывается против часовой стрелки, а модуль вычисляется как модуль длины вектора. Например, для числа 5 + 4I амплитуда равна

  • with(plottools):
    L1:=arrow([0,0], [5,4], .2, .5, .1, color=green):
    L2:=arc([0,0],4,0..arctan(.8),color=red):
  • plots[display](L1,L2, axes=normal,view=[-5..5,-5..5],
    scaling=constrained);

Комплексные числа хорошо изображать в полярных координатах. Связь между декартовыми (x + iy) и полярными (r, θ) координатами простая:

x = r cos(θ) и y = r sin(θ).

Для комплексной экспоненты есть формула Эйлера:

e(iθ) = cos(θ) + isin(θ).

Тогда связь декартовой и полярной форм представления комплексных чисел:

x + iy = re(iθ).

С ее помощью перепишем заново правила умножения и деления чисел.

Для умножения: если и , то

Умножение означает произведение амплитуд и сложение углов исходных векторов, что и нарисовано ниже (так же, как и в задаче о сложении векторов – см. выше, – векторы, соответствующие числам и , нарисуем зелеными, а произведение – красным).

  • with(plottools):
    L1:= arrow([0,0], [1,2], .1, .3, .1, color=green):
    L1a:= arc([0,0],1.5,0..arctan(2),color=green):
  • L2:= arrow([0,0], [1,.8], .1, .3, .1, color=green):
    L2a:= arc([0,0],.75,0..arctan(.8),color=green):
  • L3:= arrow([0,0], [-.6,2.8], .1, .3, .1, color=red):
    L3a:= arc([0,0],2.5,0..arctan(2.8,-.6),color=red):
  • plots[display](L1,L2,L3,L1a,L2a,L3a, axes=normal,
    view=[-3..3,-3..3],scaling=constrained);

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

Это – простая арифметика.

В Maple есть удобные команды для ручной работы с комплексными числами:

  • Re(z) извлекает действительную часть числа z,
  • Im(z) – мнимую,
  • abs(z) дает амплитуду,
  • arctan(Im(z),Re(z)) дает угол:
  • z:=5-3*I;
  • Re(z);Im(z);abs(z);arctan(Im(z),Re(z));

В Maple есть команда, которая конвертирует декартову форму в полярную, но ее результат сложно использовать в последовательных расчетах:

  • polar(z);

Лучше применять форму arctan.

В Maple также есть команда conjugate для получения комплексно сопряженного числа:

  • conjugate(3+4*I);
Задача 4.1

Выполните операции с комплексными числами и и представьте ответ в декартовой и полярной форме. Команда polar упрощает эти действия.

Определим z1 и z2:

  • z1:=3-5*I;z2:=-2+3*I;

(a) + ,

(b) ,

(c) ,

(d) ,

(e) покажите стрелками на графике (как выше), что поворот комплексного числа на угол θ в комплексной плоскости сопровождается умножением на множитель e(iθ). Для этого вначале определите комплексное число z1 и нарисуйте его как стрелку, умножьте z1 на e(iθ) для некоторого угла θ по вашему выбору и затем нарисуйте этот новый вектор как стрелку. Работайте внимательно и используйте в аргументах команды arrow только числа с плавающей запятой. Maple вернет ответы, содержащие квадратные корни из целых чисел, и если их просто скопировать в команду arrow, то никакая стрелка не появится. Поможет старая знакомая – команда evalf и команды Re(z), Im(z), которые вставят Re и Im части комплексного числа в команду arrow.