Компания ALT Linux
Опубликован: 24.03.2015 | Доступ: свободный | Студентов: 550 / 136 | Длительность: 19:00:00
Лекция 3:

Задачи высшей математики с Maxima

3.1 Операции с комплексными числами

3.1.1 Представление комплексных чисел

Значение целой положительной степени комплексного аргумента проще всего вычислять в тригонометрической форме. Если z = x + iy = r  (\cos (\varphi)  + i \sin (\varphi) )) (здесь r=\sqrt{x^2+y^2} — модуль комплексного числа, \varphi = arctg \dfrac{y}{x}— его аргумент), то для любого целого положительного числа n имеет место формула: w = f(z) = z^n =  r^n (\cos (n\varphi)  + i \sin (n\varphi) ).

Корнем n-й степени из комплексного числа z называется число w = \sqrt[n]{z} такое, что w^n = z. Для любого комплексного числа z существует n комплексных чисел w таких, что w^n = z. Значение корня, т.е. значение функции f(z) = \sqrt[n]{z} также удобно вычислять в тригонометрической форме. Если z = x + iy = r (\cos (\varphi) + i\sin (\varphi)), то для любого целого положительного числа n имеет место формула: f(z) = \sqrt[n]{z} = \sqrt[n]{r\left(\cos \varphi + i \sin \varphi \right) } = \sqrt[n]{r}\left( \cos \frac{\varphi+2k\pi}{n}  +   \sin \frac{\varphi+2k\pi}{n}  \right), т.е. функция f(z) = \sqrt[n]{z} является многозначной функцией — каждому значению аргумента отвечает n различных значений корня.

Если z = x + iy = r  (\cos (j) + i \sin (j) ), то значения функции f(z) = exp(z) вычисляются по формуле f(z) = e^z = e^{x+iy} =  e^x (\cos (y) + i \sin (y)).

Логарифмом комплексного числа z называется такое число w, что e^w = z. Значения логарифмической функции f(z) = Ln(z) вычисляются по формуле Ln(z) = ln(|z|) + i Arg z = ln(|z|) + i arg z + 2k \pi, \, k = 0, 1, 2, \dots Величину ln(|z|) + i arg z называют главным значением логарифма. Функция f(z) = Ln(z) является многозначной функцией — каждому значению аргумента отвечает бесконечное множество различных значений логарифма.

Комплексное выражение определено в Maxima посредством сложения действительной части выражения и произведения i (мнимой единицы) и мнимой части (т.е. в алгебраической форме). Например, корни из уравнения x^2 - 4*x + 13 = 0 равны 2 + 3 *  i и 2 - 3 * i. Решение в Maxima:

(%i1)	eq:x^2-4*x+13=0;
{x}^{2}-4\,x+13=0\leqno{ (\%o1) }
(%i2)	solve(eq,x);
[x=2-3\,i,x=3\,i+2]\leqno{ (\%o2) }
(%i3)	x1:%o2[1]$ x2:%o2[2];
x=3\,i+2\leqno{ (\%o3) }
(%i4)	print(x1,x2);
x=2-3\,i, x=3\,i+2 \leqno{ (\%o4) }

Более сложный пример вычисления корней алгебраического уравнения n-й степени:

(%i1)	solve(x^3=1,x);
[x=\frac{\sqrt{3}\,i-1}{2},x=-\frac{\sqrt{3}\,i+1}{2},x=1]\leqno{ (\%o1) }
(%i2)	solve(x^5=1,x);
[x={e}^{\frac{2\,i\,\pi }{5}},x={e}^{\frac{4\,i\,\pi
}{5}},x={e}^{-\frac{4\,i\,\pi }{5}},x={e}^{-\frac{2\,i\,\pi }{5}},x=1]\leqno{
(\%o2) }

Количество корней, возвращаемое Maxima, соответствует основной теореме алгебры (уравнение третьей степени имеет три корня, пятой — пять и т.д.).

Преобразование комплексных выражений может осуществляться функциями для работы с алгебраическими выражениями (radcan, expand и др.), но предусмотрен и ряд специфических функций, рассчитанных на операции именно с комплексными числами.

3.1.2 Функции для работы с комплексными числами

Упрощение частных, корней, и других функций комплексных выражений может обычно достигаться при использовании функций realpart, imagpart, rectform, polarform, abs, carg.

Вычисление модуля комплексного числа осуществляется функцией cabs. Аргумент комплексного выражения вычисляется при помощи функции carg. Комплексный аргумент — \theta в пределах [-\pi, \pi] таким образом, что r\,exp (\theta i) = z, где r — модуль комплексного числа z. Следует учитывать, что carg — вычислительная функция, не предназначенная для упрощения комплексных выражений. (в некоторых случаях удобно использовать опцию numer, установка которой заставляет представлять результаты в формате с плавающей точкой — см. пример ниже).

Пример:

(%i1)	carg (1);
0\leqno{ (\%o1) }
(%i2)	carg (1 + %i);
\frac{\pi }{4}\leqno{ (\%o2) }
(%i3)	carg (exp (%i)),numer;
1.0\leqno{ (\%o3) }
(%i4)	carg (exp (%pi * %i));
\pi \leqno{ (\%o4) }
(%i5)	carg (exp (3/2 * %pi * %i));
-\frac{\pi }{2}\leqno{ (\%o5) }

Для преобразования комплексных выражений используют также функцию demoivre. Управление её работой осуществляется флагом demoivre.

Когда переменная demoivre установлена (demoivre = true), комплексные показательные функции преобразованы в эквивалентные выражения в терминах тригонометрических функций: e^{a + i \cdot b} упрощает к виду e^a \cdot (\cos(b) + i \cdot \sin(b)) , если выражение b не содержит i. Значение по умолчанию demoivre — false.

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

Пример:

(%i1)	demoivre:true;
true\leqno{ (\%o1) }
(%i2)	demoivre (exp (3+3/2 * %pi * %i));
-{e}^{3}\,i\leqno{ (\%o2) }
(%i3)	demoivre (exp (%pi+3/2 * %pi * %i));
-{e}^{\pi }\,i\leqno{ (\%o3) }

Комплексно-сопряжённые выражения вычисляются при помощи функции conjugate(x).

Пример:

(%i1)	declare ([aa, bb], real, cc, complex, ii, imaginary);
done\leqno{ (\%o1) }
(%i2)	conjugate (aa + bb*%i);
aa-i\,bb\leqno{ (\%o2) }
(%i3)	conjugate (ii);
-ii\leqno{ (\%o3) }

Как видно из примера, функция declare позволяет объявить тип выражений: действительные, комплексные и чисто мнимые (imaginary).

Функция plog(x) представляет основную ветвь комплексного логарифма, соответствующую -\pi < carg(x) <= +\pi, например:

(%i1)	a:1+%i;
i+1\leqno{ (\%o1) }
(%i2)	plog(a);
\frac{log\left( 2\right) }{2}+\frac{i\,\pi }{4}\leqno{ (\%o2) }

Функция polarform(expr) возвращает выражение r\,e^{i\theta}, эквивалентное expr (параметры r и \theta действительны).

Преобразование комплексного выражения к алгебраической форме осуществляется функцией rectform(x).

Пример:

(%i1)	a:1+%i;
i+1\leqno{ (\%o1) }
(%i2)	polarform(a);
\sqrt{2}\,{e}^{\frac{i\,\pi }{4}}\leqno{ (\%o2) }
(%i3)	rectform(%);
i+1\leqno{ (\%o3) }

Функция residue (expr, z, z_0)) вычисляет остаток в комплексной плоскости для выражения expr, когда переменная z принимает значение z_0. Остаток — коэффициент при (z - z_0)^{-1} ряда Лорана для expr.

Пример:

(%i1) residue (s/(s**2+a**2), s, a*%i);

\frac{1}{2}\leqno{ (\%o1) }

(%i2) residue (sin(a*x)/x**4, x, 0);

-\frac{{a}^{3}}{6}\leqno{ (\%o2) }