- Python Complex Numbers
- Create a Complex Number in Python
- Real and Imaginary Parts in Complex Number
- Conjugate of a Complex Number
- Arithmetic Operations on Complex Numbers
- Phase (Argument) of a Complex Number
- Rectangular and Polar Coordinates
- Constants in the cmath Module
- Trigonometric Functions
- Hyperbolic Functions
- Exponential and Logarithmic Functions
- Miscellaneous Functions
- Conclusion
- References
- Комплексные числа Python
- Реальные и мнимые части в комплексном числе
- Сопряжение комплексного числа
- Арифметические операции
- Фаза (аргумент)
- Прямоугольные и полярные координаты
- Константы в модуле cmath
- Тригонометрические функции
- Гиперболические функции
- Экспоненциальные и логарифмические функции
- Другие
Python Complex Numbers
A Complex Number is any number of the form a + bj , where a and b are real numbers, and j*j = -1.
In Python, there are multiple ways to create such a Complex Number.
Create a Complex Number in Python
>>> a = 4 + 3j >>> print(a) (4+3j) >>> print(type(a))
>>> a = complex(4, 3) >>> print(type(a)) >>> print(a) (4+3j)
Real and Imaginary Parts in Complex Number
Every complex number ( a + bj ) has a real part ( a ), and an imaginary part ( b ).
To get the real part, use number.real , and to get the imaginary part, use number.imag .
>>> a (4+3j) >>> a.real 4.0 >>> a.imag 3.0
Conjugate of a Complex Number
The conjugate of a complex number a + bj is defined as a — bj . We can also use number.conjugate() method to get the conjugate.
Arithmetic Operations on Complex Numbers
Similar to real numbers, Complex Numbers also can be added, subtracted, multiplied and divided. Let us look at how we could do this in 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)
NOTE: Unlike real numbers, we cannot compare two complex numbers. We can only compare their real and imaginary parts individually, since they are real numbers. The below snippet proves this.
>>> a (4+3j) >>> b (4+6j) >>> a < b Traceback (most recent call last): File "", line 1, in TypeError: 'Phase (Argument) of a Complex Number
We can represent a complex number as a vector consisting of two components in a plane consisting of the real and imaginary axes. Therefore, the two components of the vector are it’s real part and it’s imaginary part.
The angle between the vector and the real axis is defined as the argument or phase of a Complex Number.
It is formally defined as :
phase(number) = arctan(imaginary_part / real_part)
where the arctan function is the tan inverse mathematical function.
In Python, we can get the phase of a Complex Number using the cmath module for complex numbers. We can also use the math.arctan function and get the phase from it’s mathematical definition.
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.6435011087932844Note that this function returns the phase angle in radians , so if we need to convert to degrees , we can use another library like 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.86989764584402Rectangular and Polar Coordinates
A Complex Number can be written in Rectangular Coordinate or Polar Coordinate formats using the cmath.rect() and cmath.polar() functions.
>>> 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)Constants in the cmath Module
There are special constants in the cmath module. Some of them are listed below.
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 = nanjTrigonometric Functions
Trigonometric functions for a complex number are also available in the cmath module.
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)Hyperbolic Functions
Similar to Trigonometric functions, Hyperbolic Functions for a complex number are also available in the cmath module.
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)Exponential and Logarithmic Functions
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)Miscellaneous Functions
There are some miscellaneous functions to check if a complex number is finite, infinite or nan . There is also a function to check if two complex numbers are close.
>>> 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)) FalseConclusion
We learned about the Complex Numbers module, and various functions associated with the cmath module.
References
Комплексные числа 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