Умножение комплексных чисел python

Комплексные числа Python

Комплексное число — это любое число в форме a + bj , где a и b — действительные числа, а j*j = -1.

В Python есть несколько способов создать такое комплексное число.

>>> a = 4 + 3j >>> print(a) (4+3j) >>> print(type(a))

>>> a = complex(4, 3) >>> print(type(a)) >>> print(a) (4+3j)

Реальные и мнимые части в комплексном числе

Каждое комплексное число ( a + bj ) имеет действительную часть ( a ) и мнимую часть ( b ).

Чтобы получить действительную часть, используйте number.real , а для получения мнимой части используйте number.imag .

>>> a (4+3j) >>> a.real 4.0 >>> a.imag 3.0

Сопряжение комплексного числа

Сопряжение комплексного числа a + bj определяется как a — bj . Мы также можем использовать number.conjugate() для получения конъюгата.

Арифметические операции

Подобно действительным числам, комплексные числа также можно складывать, вычитать, умножать и делить. Давайте посмотрим, как мы могли бы это сделать в Python.

a = 1 + 2j b = 2 + 4j print('Addition =', a + b) print('Subtraction =', a - b) print('Multiplication =', a * b) print('Division =', a / b)
Addition = (3+6j) Subtraction = (-1-2j) Multiplication = (-6+8j) Division = (2+0j)

ПРИМЕЧАНИЕ. В отличие от действительных чисел, мы не можем сравнивать два комплексных числа. Мы можем сравнивать только их действительную и мнимую части по отдельности, поскольку это действительные числа. Приведенный ниже фрагмент доказывает это.

>>> a (4+3j) >>> b (4+6j) >>> a < b Traceback (most recent call last): File "", line 1, in TypeError: '

Фаза (аргумент)

Мы можем представить комплексное число как вектор, состоящий из двух компонентов на плоскости, состоящей из real и imaginary осей. Следовательно, две составляющие вектора — это действительная и мнимая части.

Вектор Комплексных Чисел

Угол между вектором и действительной осью определяется как argument или phase комплексного числа.

Формально это определяется как:

фаза (число) = arctan (мнимая_часть / действительная_часть)

где функция arctan является обратной математической функцией tan.

В Python мы можем получить фазу комплексного числа, используя модуль cmath для комплексных чисел. Мы также можем использовать функцию math.arctan и получить фазу из ее математического определения.

import cmath import math num = 4 + 3j # Using cmath module p = cmath.phase(num) print('cmath Module:', p) # Using math module p = math.atan(num.imag/num.real) print('Math Module:', p)
cmath Module: 0.6435011087932844 Math Module: 0.6435011087932844

Обратите внимание, что эта функция возвращает фазовый угол в radians , поэтому, если нам нужно преобразовать в degrees , мы можем использовать другую библиотеку, например numpy .

import cmath import numpy as np num = 4 + 3j # Using cmath module p = cmath.phase(num) print('cmath Module in Radians:', p) print('Phase in Degrees:', np.degrees(p))
cmath Module in Radians: 0.6435011087932844 Phase in Degrees: 36.86989764584402

Прямоугольные и полярные координаты

Комплексное число может быть записано в формате прямоугольных или полярных координат с помощью cmath.rect() и cmath.polar() .

>>> import cmath >>> a = 3 + 4j >>> polar_coordinates = cmath.polar(a) >>> print(polar_coordinates) (5.0, 0.9272952180016122) >>> modulus = abs(a) >>> phase = cmath.phase(a) >>> rect_coordinates = cmath.rect(modulus, phase) >>> print(rect_coordinates) (3.0000000000000004+3.9999999999999996j)

Константы в модуле cmath

В модуле cmath есть специальные константы. Некоторые из них перечислены ниже.

print('π =', cmath.pi) print('e =', cmath.e) print('tau =', cmath.tau) print('Positive infinity =', cmath.inf) print('Positive Complex infinity =', cmath.infj) print('NaN =', cmath.nan) print('NaN Complex =', cmath.nanj)
π = 3.141592653589793 e = 2.718281828459045 tau = 6.283185307179586 Positive infinity = inf Positive Complex infinity = infj NaN = nan NaN Complex = nanj

Тригонометрические функции

Тригонометрические функции для комплексного числа также доступны в модуле cmath .

import cmath a = 3 + 4j print('Sine:', cmath.sin(a)) print('Cosine:', cmath.cos(a)) print('Tangent:', cmath.tan(a)) print('ArcSin:', cmath.asin(a)) print('ArcCosine:', cmath.acos(a)) print('ArcTan:', cmath.atan(a))
Sine: (3.853738037919377-27.016813258003936j) Cosine: (-27.034945603074224-3.8511533348117775j) Tangent: (-0.0001873462046294784+0.999355987381473j) ArcSin: (0.6339838656391766+2.305509031243477j) ArcCosine: (0.9368124611557198-2.305509031243477j) ArcTan: (1.4483069952314644+0.15899719167999918j)

Гиперболические функции

Подобно тригонометрическим функциям, гиперболические функции для комплексного числа также доступны в модуле cmath .

import cmath a = 3 + 4j print('Hyperbolic Sine:', cmath.sinh(a)) print('Hyperbolic Cosine:', cmath.cosh(a)) print('Hyperbolic Tangent:', cmath.tanh(a)) print('Inverse Hyperbolic Sine:', cmath.asinh(a)) print('Inverse Hyperbolic Cosine:', cmath.acosh(a)) print('Inverse Hyperbolic Tangent:', cmath.atanh(a))
Hyperbolic Sine: (-6.5481200409110025-7.61923172032141j) Hyperbolic Cosine: (-6.580663040551157-7.581552742746545j) Hyperbolic Tangent: (1.000709536067233+0.00490825806749606j) Inverse Hyperbolic Sine: (2.2999140408792695+0.9176168533514787j) Inverse Hyperbolic Cosine: (2.305509031243477+0.9368124611557198j) Inverse Hyperbolic Tangent: (0.11750090731143388+1.4099210495965755j)

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

import cmath a = 3 + 4j print('e^c =', cmath.exp(a)) print('log2(c) =', cmath.log(a, 2)) print('log10(c) =', cmath.log10(a)) print('sqrt(c) =', cmath.sqrt(a))
e^c = (-13.128783081462158-15.200784463067954j) log2(c) = (2.321928094887362+1.3378042124509761j) log10(c) = (0.6989700043360187+0.4027191962733731j) sqrt(c) = (2+1j)

Другие

Есть несколько разных функций, чтобы проверить, является ли комплексное число конечным, бесконечным или nan . Также есть функция проверки близости двух комплексных чисел.

>>> 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

Источник

Комплексные числа в Python

Комплексное число создается из двух действительных чисел. Комплексное число в Python можно создать с помощью функции complex(), а также с помощью оператора прямого присваивания.

Комплексные числа в основном используются, когда мы определяем что-то с помощью двух действительных чисел. Например, элемент схемы, который определяется напряжением (В) и током (I). В основном они используются в геометрии, математическом и научном расчетах.

Давайте сначала узнаем, как создавать комплексные числа в Python.

c = 1 + 2j print(type(c)) print(c) c1 = complex(2, 4) print(type(c1)) print(c1)

Комплексные числа в Python относятся к сложному типу. Каждое комплексное число состоит из одной действительной и одной мнимой частей.

Атрибуты и функции комплексных чисел

Давайте посмотрим на некоторые атрибуты и функции экземпляров комплексных чисел.

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)

Модуль 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.inf) print('Positive Complex infinity =', cmath.infj) print('NaN =', cmath.nan) print('NaN Complex =', cmath.nanj)
π = 3.141592653589793 e = 2.718281828459045 tau = 6.283185307179586 Positive infinity = inf Positive Complex infinity = infj NaN = nan NaN Complex = nanj

Функции питания и журнала

Есть несколько полезных функций для логарифмических и степенных операций.

c = 2 + 2j print('e^c =', cmath.exp(c)) print('log2(c) =', cmath.log(c, 2)) print('log10(c) =', cmath.log10(c)) print('sqrt(c) =', cmath.sqrt(c))
e^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

Источник

Читайте также:  Designing menus in html
Оцените статью