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

 

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

Элементарные комплексные функции

Начнем с экспоненты.

Формула Эйлера e(iθ) = cos(θ) + isin(θ) известна, и поэтому ez (z = x + iy) можно переписать так: e(x+iy) = excos(y) + isin(y). Для изображения Re и Im частей этой функции нужна трехмерная графика plot3d.

  • restart;
  • plot3d(Re(exp(x+I*y)),x=-6..6,y=-6..6,shading=z,axes=framed,
    labels=["x","y","Re(f)"],orientation=[-60,60],title="Real Part");
  • plot3d(Im(exp(x+I*y)),x=-6..6,y=-6..6,shading=z,axes=framed,
    labels=["x","y","Im(f)"],orientation=[-60,60],title="Imaginary Part");

Заметьте, что для отрицательных х функция очень мала, а для положительных очень велика. Так ведет себя ex. Для y: функция просто осциллирует как косинус и синус, каковой она и является.

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

Задача 4.2 о проверке равенств

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

(a) , (b) ,
(c) cos(ix) = cosh(x), (d) sin(ix) = isinh(x).
Описание команды evalc (из справки Maple)

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) полагает, что ureal, но assume(v^2<1) и assume(abs(v)<1) не подразумевают, что vreal.

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

Когда 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.3 о графиках в комплексной плоскости

(a) Сделайте 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= rp + eipθ. Для целых степеней p ее поведение несложно изобразить. Амплитуда увеличивается с ростом p, а при изменении полярного угла комплексная экспонента осциллирует быстрее.

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

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

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

  • 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=framed,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 в комплексной плоскости. Это уступ (cliffface) в Im-части графика, а линия в комплексной плоскости, где он расположен, называется разрезом (branchcut). Подробнее об этих особенностях сказано в курсе ТФКП. Эта проблема возникает для всех дробных степеней, например для функции ln(z).

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