Элементарные комплексные функции
Начнем с экспоненты.
Формула Эйлера 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: функция просто осциллирует как косинус и синус, каковой она и является.
Комбинация экспоненты с синусом и косинусом дает несколько интересных формул, проверке которых посвящена следующая задача.
Используйте Maple для проверки следующих функциональных равенств. Сначала сделайте запрос ?evalc, прочтите его, поищите примеры, а затем примените эту команду для проверки равенств.
(a) |
(b) |
(c) cos(ix) = cosh(x), | (d) sin(ix) = isinh(x). |
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 к комплексному ряду тоже будет ряд, коэффициенты которого имеют канонический вид (как выше).
Когда 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].
Вызовите справку, чтобы посмотреть примеры.
(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) есть в командах графики.