- Python complex
- Комплексное число простыми словами
- Действительная и мнимая часть комплексного числа
- Равные комплексные числа
- Комплексные числа в Python
- Параметры метода complex()
- Возвращаемое значение
- Комплексные числа Python
- Реальные и мнимые части в комплексном числе
- Сопряжение комплексного числа
- Арифметические операции
- Фаза (аргумент)
- Прямоугольные и полярные координаты
- Константы в модуле cmath
- Тригонометрические функции
- Гиперболические функции
- Экспоненциальные и логарифмические функции
- Другие
Python complex
Метод Python complex — возвращает нам комплексное число при наличии действительной, мнимой частей. Другими словами, метод complex() преобразует строку в комплексное число.
Комплексное число простыми словами
Для более лучшего понимания, разобьем статью на три части:
- Действительная и мнимая часть комплексного числа
- Мнимая единица
- Равные комплексные числа
Действительная и мнимая часть комплексного числа
Действительное число a называется действительной частью комплексного числа z = a +bi , и обозначается real (действительный). Действительное число b называется мнимой частью z= a + bi и обозначается b = Im (imag = мнимый) .
Например, для комплексного числа z = 3- 7i действительное часть a = 3 , а мнимая часть b = 7 . В случае если действительная часть комплексного числа z = a+bi равна нулю, то в таком случае комплексное число называю мнимым. К примеру z = -2i . Величина i называется мнимой единицей, и удовлетворяет i в квадрате = -1 .
Равные комплексные числа
Два комплексных числа z1 = a1+bi1 и z2=a2+b2i являются равными, если равны их действительные и мнимые части. На этом небольшой экскурс в математику мы завершим, а более подробное о комплексных числах советую все же почитать.
На самом деле, комплексные числа, имеют огромный охват сфер в математике. Комплексные числа используется при анализе данных, при расчет электрических цепей, при решений дифференциальных уравнений, в любом случае, это довольно не простая тема, по этому, переходите по вышеуказанной ссылке, и обновляйте свои знания по этой теме. В моей практике, мне не приходилось сталкиваться с задачами, где необходимо использовать данный вид чисел. Но, описывая функции Python, я не мог пройти мимо данной функции.
Комплексные числа в Python
Параметры метода complex()
В целом метод complex() принимает два параметра:
- Real — действительная часть, в случае если данный параметр не передается, то он по умолчанию равен нулю.
- Imag — Мнимая часть, тк же как и в случае с параметром Real, если Imag не передается, то он по умолчанию тоже равен нулю.
Возвращаемое значение
Как вы уже поняли, метод complex() возвращает комплексное число. В случае, если переданное значение не является допустимым значением, то мы получим ошибку исключения ValueError . Строка, которая передается методу комплекс, должна иметь форму real+imagj или real+imagJ
Комплексные числа 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