Рубрики
Без рубрики

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

Комплексное число – любое количество формы A + Bj, где A и B являются реальными числами, а J * J = -1.

Автор оригинала: Pankaj Kumar.

Комплексное число – любое количество форм A + BJ , где А и B являются настоящими числами, а J * J = -1.

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

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

  • Мы можем напрямую использовать синтаксис A + BJ создать комплексное число.
>>> 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.imag Отказ

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

Конъюгат сложного числа

Конъюгат комплексного числа A + BJ определяется как A - BJ Отказ Мы также можем использовать Номер. Признать () метод, чтобы получить конъюгат.

>>> a
(4 + 3j)
>>> a.conjugate()
(4-3j)

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

Подобно реальным числам, комплексные числа также могут быть добавлены, вычтены, умножены и разделены. Давайте посмотрим на то, как мы могли бы сделать это в 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: '<' not supported between instances of 'complex' and 'complex'

Фаза (аргумент) сложного числа

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

Комплексное количество вектор 1

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

Он формально определяется как:

Фаза (номер) (imaginable_part/real_part)

Там, где функция Arctan – это обратная математическая функция.

В 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

Обратите внимание, что эта функция возвращает угол фазы в радианы Так что, если нам нужно преобразовать в Степени , мы можем использовать другую библиотеку, как 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)

Разные функции

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

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

Заключение

Мы узнали о сложных номерах модуля, а также различные функции, связанные с CMATH модуль.

Рекомендации