Работа с комплексными числами в Python: операции и подробные примеры
Комплексное число создается из двух действительных чисел. Комплексное число в Python можно создать с помощью функции complex(), а также с помощью оператора прямого присваивания.
Комплексные числа в основном используются, когда мы определяем что-то с помощью двух действительных чисел. Например, элемент схемы, который определяется напряжением (В) и током (I). В основном они используются в геометрии, математическом и научном расчетах.
Давайте сначала узнаем, как создавать комплексные числа в Python.
c = 1 + 2j print(type(c)) print(c) c1 = complex(2, 4) print(type(c1)) print(c1)
Вывод:
<class 'complex'> (1+2j) <class 'complex'> (2+4j)
Комплексные числа в Python относятся к сложному типу. Каждое комплексное число состоит из одной действительной и одной мнимой частей.
- Атрибуты и функции комплексных чисел
- Математические вычисления комплексных чисел
- Модуль cmath
- Фаза комплексного числа
- Полярные и прямоугольные координаты
- Константы модуля cmath
- Функции питания и журнала
- Тригонометрические функции
- Гиперболические функции
- Классификационные функции
Атрибуты и функции комплексных чисел
Давайте посмотрим на некоторые атрибуты и функции экземпляров комплексных чисел.
c = 1 + 2j print('Real Part =', c.real) print('Imaginary Part =', c.imag) print('Complex conjugate =', c.conjugate())
Вывод:
Real Part = 1.0 Imaginary Part = 2.0 Complex conjugate = (1-2j)
Математические вычисления комплексных чисел
Комплексные числа поддерживают математические вычисления, такие как сложение, вычитание, умножение и деление.
c = 1 + 2j c1 = 2 + 4j print('Addition =', c + c1) print('Subtraction =', c - c1) print('Multiplication =', c * c1) print('Division =', c1 / c)
Вывод:
Addition = (3+6j) Subtraction = (-1-2j) Multiplication = (-6+8j) Division = (2+0j)
Комплексные числа не поддерживают операторы сравнения. Если мы попытаемся выполнить c <c1, то сообщение об ошибке будет выдано, как TypeError: ‘<‘ not supported между экземплярами ‘complex’ и ‘complex’.
Модуль cmath
Модуль cmath в Python обеспечивает доступ к математическим функциям для комплексных чисел. Давайте рассмотрим некоторые важные особенности комплексных чисел и то, как мы можем использовать функцию модуля cmath для их вычисления.
Фаза комплексного числа
Фаза комплексного числа – это угол между действительной осью и вектором, представляющим мнимую часть. Изображение ниже иллюстрирует фазу комплексного числа и то, как получить это значение с помощью модулей cmath и math.
Обратите внимание, что фаза, возвращаемая модулями math и cmath, выражается в радианах, мы можем использовать функцию numpy.degrees(), чтобы преобразовать ее в градусы. Диапазон фазы – от -π до + π (от -pi до + pi) в радианах, что эквивалентно от -180 до +180 градусов.
import cmath, math, numpy c = 2 + 2j # phase phase = cmath.phase(c) print('2 + 2j Phase =', phase) print('Phase in Degrees =', numpy.degrees(phase)) print('-2 - 2j Phase =', cmath.phase(-2 - 2j), 'radians. Degrees =', numpy.degrees(cmath.phase(-2 - 2j))) # we can get phase using math.atan2() function too print('Complex number phase using math.atan2() =', math.atan2(2, 1))
Вывод:
2 + 2j Phase = 0.7853981633974483 Phase in Degrees = 45.0 -2 - 2j Phase = -2.356194490192345 radians. Degrees = -135.0 Complex number phase using math.atan2() = 1.1071487177940904
Полярные и прямоугольные координаты
Мы можем записать комплексное число в полярных координатах, которое представляет собой набор модуля и фазы комплексного числа.
Мы можем использовать функцию cmath.rect(), чтобы создать комплексное число в прямоугольном формате, передав модуль и фазу в качестве аргументов.
c = 1 + 2j modulus = abs(c) phase = cmath.phase(c) polar = cmath.polar(c) print('Modulus =', modulus) print('Phase =', phase) print('Polar Coordinates =', polar) print('Rectangular Coordinates =', cmath.rect(modulus, phase))
Вывод:
Modulus = 2.23606797749979 Phase = 1.1071487177940904 Polar Coordinates = (2.23606797749979, 1.1071487177940904) Rectangular Coordinates = (1.0000000000000002+2j)
Константы модуля cmath
В модуле cmath есть множество констант, которые используются при вычислении комплексных чисел.
print('π =', cmath.pi) print('e =', cmath.e) print('tau =', cmath.tau) print('Positive infinity =', cmath.c = (-3.074932320639359+6.71884969742825j) log2(c) = (1.5000000000000002+1.1330900354567985j) log10(c) = (0.4515449934959718+0.3410940884604603j) sqrt(c) = (1.5537739740300374+0.6435942529055826j)
Тригонометрические функции
c = 2 + 2j print('arc sine =', cmath.asin(c)) print('arc cosine =', cmath.acos(c)) print('arc tangent =', cmath.atan(c)) print('sine =', cmath.sin(c)) print('cosine =', cmath.cos(c)) print('tangent =', cmath.tan(c))
Вывод:
arc sine = (0.7542491446980459+1.7343245214879666j) arc cosine = (0.8165471820968505-1.7343245214879666j) arc tangent = (1.311223269671635+0.2388778612568591j) sine = (3.4209548611170133-1.5093064853236156j) cosine = (-1.5656258353157435-3.2978948363112366j) tangent = (-0.028392952868232294+1.0238355945704727j)
Гиперболические функции
c = 2 + 2j print('inverse hyperbolic sine =', cmath.asinh(c)) print('inverse hyperbolic cosine =', cmath.acosh(c)) print('inverse hyperbolic tangent =', cmath.atanh(c)) print('hyperbolic sine =', cmath.sinh(c)) print('hyperbolic cosine =', cmath.cosh(c)) print('hyperbolic tangent =', cmath.tanh(c))
Вывод:
inverse hyperbolic sine = (1.7343245214879666+0.7542491446980459j) inverse hyperbolic cosine = (1.7343245214879666+0.8165471820968505j) inverse hyperbolic tangent = (0.2388778612568591+1.311223269671635j) hyperbolic sine = (-1.5093064853236156+3.4209548611170133j) hyperbolic cosine = (-1.5656258353157435+3.2978948363112366j) hyperbolic tangent = (1.0238355945704727-0.028392952868232294j)
Классификационные функции
Есть несколько разных функций, чтобы проверить, является ли комплексное число конечным, бесконечным или нан. Также есть функция проверки близости двух комплексных чисел.
print(cmath.isfinite(2 + 2j)) # True print(cmath.isfinite(cmath.inf + 2j)) # False print(cmath.isinf(2 + 2j)) # False print(cmath.isinf(cmath.inf + 2j)) # True print(cmath.isinf(cmath.nan + 2j)) # False print(cmath.isnan(2 + 2j)) # False print(cmath.isnan(cmath.inf + 2j)) # False print(cmath.isnan(cmath.nan + 2j)) # True print(cmath.isclose(2+2j, 2.01+1.9j, rel_tol=0.05)) # True print(cmath.isclose(2+2j, 2.01+1.9j, abs_tol=0.005)) # False
Комплексные числа и работа с ними
Домашнее задание №3 для потока ТОА-224, 225, 227, 228 и МСС-226 (4 семестр, 2011-2012 учебный год)
З а д а н и е 1. Самостоятельно изучить тему: «Комплексные числа и работа с ними». Написать конспект.
З а д а н и е 2. Выполнить расчетное
задание по теме «Представление
синусоидальных функций комплексными
числами и векторами на комплексной
плоскости» (стр. 13).
Срок сдачи: до 20 апреля 2012 года.
Примечание: Для выполнения расчетного задания использовать теоретический материал, приведенный тексте задания и материал лекций по теме «Представление синусоидальных функций с помощью комплексных величин» и «Векторные диаграммы».
Введение понятия комплексного числа. Представление комплексного числа на плоскости
Комплексные числа являются расширением множества действительных чисел. В результате расширения множества действительных чисел было введено понятие мнимой единицы , которая существует на множестве комплексных чисел, но не существует на множестве действительных. Мнимая единица удовлетворяет равенству:
(1)
Комплексное число можно представить в виде:
(2)
где носит название действительной
части или реальной части и обозначается ,
а носит название мнимой части
и обозначается как .
Пример 1. Для каждого из заданных комплексных чисел найти действительную и мнимую части.
1). ;
Действительная часть: ;
Мнимая часть: .
2).
Действительная часть: ;
Мнимая часть: .
3).
Действительная часть: ;
Мнимая часть: .
4)
Действительная часть: ;
Мнимая часть: .
5).
Действительная часть: ;
Мнимая часть: .
Графически все множество действительных чисел можно представить на бесконечной числовой прямой, при этом комплексные числа можно трактовать как расширение числовой прямой до комплексной плоскости, а каждое комплексное число можно представить как точку на комплексной плоскости (рис. 1). При этом все множество действительных чисел будет представляться прямой на комплексной плоскости.
Рис. 1: Представление комплексного числа на плоскости
Комплексная плоскость делится прямыми реальной
части (прямой действительных чисел) и прямой
мнимых чисел на четыре четверти.
Если из начала координат комплексной плоскости к точке восстановить вектор, то можно вычислить длину этого вектора как
(3)
— действительное число, характеризующее длину вектора, и называется модулем комплексного числа. При этом сам вектор комплексного числа повернут относительно оси на некоторый угол , называемый фазой (аргументом) комплексного числа. Связь реальной и мнимой частей комплексного числа с его амплитудой и фазой представлено следующим выражением:
(4)
Тогда комплексное число можно представить в тригонометрической форме:
(5)
Связь угла поворота вектора комплексного числа с реальной и мнимой частью комплексного числа:
(6)
тогда
, (7)
где учитывает четверть комплексной плоскости, в которой расположено число :
(8)
а) б)
в) г)
Рис. 2: Вычисление угла
поворота вектора комплексного числа
Для того чтобы понять смысл функции рассмотрим четыре варианта как это показано на рисунке 2.
Рисунок 2.а. , и , вектор в первой четверти плоскости. В этом случае .
Рисунок 2.б. , и , вектор во второй четверти плоскости. В этом случае. .
Рисунок 2.в. , и вектор в третьей четверти плоскости. В этом случае .
Рисунок 2.г. , и вектор в четвертой четверти плоскости. В этом случае
.
Показательная форма комплексного числа. Существует также показательная форма комплексного числа связанная с тригонометрической по формуле Эйлера:
. (9)
Рассмотрим более подробно мнимую единицу в четной и нечетной степенях. Выражение (1) задало , тогда , в свою очередь . Таким образом можно рекуррентно записать:
. (10)
Построим аналогичным образом рекуррентное соотношение для нечетных степеней: тогда , в свою очередь , получим:
(11)
Сделаем несколько важных замечаний.
Замечание 1:
(12)
Замечание 2:
. (13)
Замечание3:
. (14)
Формы записи комплексного числа. Любое комплексное число можно записать в одной из форм:
Перевод из одной формы записи в другую определяется формулами, приведенными выше. Для упрощения перевода из одной формы в другую изобразим комплексное число на комплексной плоскости (рис. 3).
Рис. 3. Различные формы записи комплексного числа
Из рисунка легко получить переход от одной формы записи комплексного числа в другую. Например,
— из алгебраической – в показательную
,
где
— из показательной – в алгебраическую:
и т. д.
Перевод из одной формы записи в другую необходим при аналитических расчета с комплексными числами. Рассмотрим операции с комплексными числами.
Пример 2. Задано комплексное число . Представить его в тригонометрической и показательной формах.
Решение
Модуль комплексного числа
.
Фаза (аргумент):
.
Тригонометрическая форма:
.
Показательная форма:
.
Пример 3. Задано комплексное число . Представить его в тригонометрической и показательной формах.
Решение
Модуль комплексного числа
.
Фаза (аргумент):
.
Тригонометрическая форма:
.
Показательная форма:
.
Пример 4. Задано комплексное число .
Представить его в тригонометрической
и показательной формах.
Решение
Модуль комплексного числа
.
Фаза (аргумент):
.
Тригонометрическая форма:
.
Показательная форма:
.
Пример 5. Задано комплексное число . Представить его в алгебраической форме.
Решение
Алгебраическая форма:
.
Операции над комплексными числами. Сложение комплексных чисел.
Сумма двух комплексных чисел и есть также комплексное число :
. (15)
Как следует из выражения (15) при сложении комплексных реальные и мнимые части комплексного числа также складываются.
На комплексной плоскости
операцию сложения можно реализовать
как сложение векторов комплексных чисел
по правилу параллелограмма (рис. 4).
Рис. 4 Сложение комплексных чисел
Операции над комплексными числами. Вычитание комплексных чисел.
Разность двух комплексных чисел и есть также комплексное число :
. (15)
Как следует из выражения (15) при вычитании комплексных чисел реальные и мнимые части комплексного числа также вычитаются.
На комплексной плоскости операцию вычитания можно реализовать как вычитание векторов комплексных чисел по правилу параллелограмма (рис.5). На первом шаге из вектора формируется вектор , после чего вектор складывается с вектором по правилу параллелограмма.
Рис. 5. Вычитание комплексных чисел
Как работать с комплексными числами на TI-84 Plus
К счастью, ваш калькулятор TI-84 Plus умеет работать с комплексными числами. Комплексные числа имеют вид a + b i , где a — действительная часть, а b — мнимая часть.
В начале вашего математического путешествия вам, вероятно, говорили, что вы не можете извлечь квадратный корень из отрицательного числа. Затем учитель поразил вас, сказав, что вы действительно можете извлечь квадратный корень из отрицательного числа, и результат будет содержать мнимое число 9.0007 я .
Установка режима комплексных чисел
Попробуйте вычислить квадратный корень из –1 на своем калькуляторе. На главном экране нажмите [2nd][ x 2 ][(-)][1][ENTER]. Скорее всего, вы получите сообщение ОШИБКА: НЕРЕАЛЬНЫЕ ОТВЕТЫ, как показано на первом экране. .
В реальном режиме ваш калькулятор обычно возвращает ошибку для комплексного числа. Исключением является случай, когда вы вводите свое выражение с помощью 9.0003 я . В этом случае ваш калькулятор выдает комплексное число независимо от режима. Хорошей новостью является то, что вы можете вообще избежать этой ошибки, установив режим калькулятора на a + b i .
Чтобы установить режим a + b i , выполните следующие действия:
Нажмите [MODE] для доступа к экрану режимов.
Несколько раз нажмите клавишу со стрелкой вниз, чтобы перейти к восьмой строке.
Нажмите клавишу со стрелкой вправо, чтобы выделить a + bi .
Нажмите [ENTER], чтобы изменить режим (см. второй экран).
Теперь попробуйте еще раз вычислить квадратный корень из –1 на своем калькуляторе.
Нажмите клавишу со стрелкой вверх, чтобы просмотреть предыдущие расчеты. Когда предыдущая запись или ответ выделены, нажмите e, чтобы вставить ее в текущую строку ввода.
Успех! Смотрите результат на третьем скрине.
Ввод комплексных чисел на TI-84 Plus
Вы можете ввести выражение, включающее мнимое число, i , нажав [2nd][.]. Где-то по пути вы, вероятно, узнали, что i 2 = –1. Интересно, что ваш калькулятор не только знает, что i 2 = –1, но и автоматически упрощает любой результат, который имел бы и 2 в нем.
Например, умножение (2 + I ) (2 + I ) даст триномиальный, 4 + 4 I + I 2 . Конечно, этот ответ можно упростить до 3 + 4 i . Ваш калькулятор показывает только упрощенный ответ, как показано на первом экране.
Комплексные числа нельзя использовать с шаблоном дроби n/d. Вместо этого вводите комплексные числа в виде дробей, используя круглые скобки и клавишу деления. Нажмите [MATH][ENTER][ENTER], чтобы отобразить комплексный ответ в виде дроби. Смотрите второй экран.
В режиме a + b i вы можете взять логарифм или квадратный корень из отрицательных чисел! Часто использование вашего калькулятора защищает вас от ошибок, которые слишком распространены среди студентов. Например, учитывая выражение,
многие студенты ошибочно думают, что ответ равен 4. Прежде чем применять порядок операций, всегда упрощайте отрицательное значение внутри квадратного корня! Вот математическая прогрессия, которую ваш калькулятор использовал для упрощения данного выражения,
Довольно круто, да?
Интерпретация странно выглядящих результатов для вычислений комплексных чисел
Обычное занятие по математике в классе — изучение степени мнимого числа, i . Математика занимается поиском закономерностей, и есть интересная закономерность, которая возникает, когда вы исследуете силы i . Результаты первых четырех степеней i образуют повторяющийся образец как i последовательно возводится в более высокие степени. Смотрите первый экран.
С помощью калькулятора происходит нечто неожиданное, когда вы вычисляете i 7 . Вы можете ожидать ответа, – i . Вместо этого калькулятор отобразил –3 E –13– i , как показано на втором экране.
Чтобы расшифровать этот странный результат, нужно сначала вспомнить, что комплексные числа записываются в виде а + б и . Используя круглые скобки для разделения реальной и мнимой частей, вычисленный результат выглядит следующим образом: (–3 E –13) – ( i ). Теперь вспомните, что –3 E –13 равно –3*10 –13 в экспоненциальном представлении. Это крайне мало!
Что вы можете узнать из этого странного результата? Вы должны быть осторожны с расчетными результатами, которые чрезвычайно малы! Скорее всего, ваш калькулятор должен был выдать нулевой результат. Реальность такова, что ваш калькулятор постоянно имеет дело с приблизительными результатами. Обычно вы этого не замечаете, потому что калькулятор регулярно выдает результаты, которые вы ожидаете.
Функции комплексных чисел в Excel
Если вы выполняете какие-либо инженерные вычисления, связанные с комплексными числами, вы, вероятно, оцените функции комплексных чисел, встроенные в Excel. В Excel есть множество функций для работы с комплексными числами, но здесь мы рассмотрим лишь некоторые из них.
Функция | Описание |
КОМПЛЕКС | Создает комплексный номер |
ВООБРАЖАЕМЫЙ | Извлекает мнимый коэффициент из комплексного числа |
НЕРЕАЛЬНОСТЬ | Извлекает действительный коэффициент из комплексного числа |
ИМДИВ | Делит комплексные числа |
ПРОДУКЦИЯ | Умножает комплексные числа |
ИМСУБ | Вычитает комплексные числа |
ИМСУММ | Добавляет комплексные числа |
Вы можете просмотреть другие функции для комплексных чисел, выбрав Формулы > Дополнительные функции > Инженерное дело . Прокрутите вниз, чтобы найти функции, названия которых начинаются с «IM». Наведите курсор на каждую функцию, чтобы получить краткое описание. Вы также можете просмотреть справку Excel для получения дополнительной информации.
Функция КОМПЛЕКС принимает действительные и мнимые коэффициенты и создает комплексное число в форме x+yi или x+yj . Синтаксис следующий:
COMPLEX(real_num, i_num, [суффикс])
real_num: действительная часть комплексного числа (x)
i_num: мнимая часть комплексного числа (y)
суффикс: (необязательно) суффикс для мнимой части — либо «i» (по умолчанию), либо «j»
Если вы не укажете суффикс, Excel будет использовать i по умолчанию. Важно заключать «i» и «j» в двойные кавычки в аргументе суффикса.
Функцию IMAGINARY можно использовать для нахождения мнимой части существующего комплексного числа – y в x+yi – и возврата ее в ячейку. У этой функции есть только один аргумент — комплексное число. Функция IMREAL извлечет действительную часть комплексного числа ( x ).
Вы не можете напрямую складывать, вычитать, умножать или делить комплексные числа в Excel, используя символы (+, — и т. д.). Для выполнения этих операций с комплексными числами вам понадобятся следующие специальные функции: ИМДИВ , ИМПРОДУКТ , ИМСУБ и ИМСУММ .
Типичным примером в технике, в котором используются комплексные числа, является цепь переменного тока. В рабочем листе 03j есть пример, который требует арифметики комплексных чисел:
Сначала введите указанное напряжение (45+10j) в виде комплексного числа. Действительная часть напряжения равна 45 — это будет первый аргумент. Мнимая часть равна 10, второй аргумент. Укажем «j» в третьем аргументе, чтобы не путать «i» с текущим. Поэтому запись для напряжения будет =КОМПЛЕКС(45,10”j”) .