Тип данных complex относится к категории неизменяемых и хранит пару значений типа float,
одно из которых представляет действительную часть комплексного числа, а другое - мнимую.
Литералы комплексных чисел записываются как действительная и мнимая части,
объединенные знаком "+" или "-", а за мнимой частью следует символ j.
3.5+2j
0.5j - если действительная часть равна 0, ее можно вообще опустить.
4+0j
-1-3.7j
Отдельные части комплексного числа доступны в виде атрибутов real и imag:
>>> z = -89.5+2.125j
>>> z.real, z.imag
(-89.5, 2.125)
За исключением //, %, divmod и версии pow() с тремя аргументами все остальные арифметические операторы и функции,
которые используются для работы с целыми числами, также могут использоваться и для работы с комплексными числами.
Значения типа complex имеют метод:
conjugate()
который изменяет знак мнимой части.
>>> z = -89.5+2.125j
>>> z.conjugate()
(-89.5-2.125j)
>>> 3-4j.conjugate()
(3+4j)
>>> 4j.real
0.0
>>> 4j.imag
4.0
>>> 4j+3+2j
(3+6j)
Тип данных complex может вызываться как функция complex()
без аргументов она вернет:
>>> complex()
0j
с аргументами типа complex она вернет копию аргумента:
>>> complex(9+3j)
(9+3j)
с аргументом любого другого типа она попытается преобразовать указанный объект в значение типа complex:
>>> complex(0)
0j
>>> complex(1)
(1+0j)
>>> complex(0,1)
1j
При использовании для преобразования функция complex() принимает:
либо единственный строковый аргумент
либо одно или два значения типа float
Если ей передается единственное значение типа float, возвращается комплексное число с мнимой частью равной 0j.
Функции в модуле math не работают с комплексными числами.
Если возникает необходимость использовать комплексные числа, можно воспользоваться модулем cmath,
который содержит комплексные версии больштнства тригонометрических и логарифмических функций,
присутствующих в модуле math, плюс ряд функций специально предназначенных для работы с комплексными числами, таких как:
cmath.phase()
cmath.polar()
cmath.rect()
а также константы:
cmath.pi
cmath.e
которые хранят те же самые значения типа float, что и родственные им константы в модуле math.
К сожалению в Python отсутствуют средства прямого форматирования комплексных чисел.
Однако мы легко можем решить эту проблему, форматируя действительную и мнимую части как отдельные числа с плавающей точкой.
>>> "{0.real:.3f}{0.imag:+.3f}j".format(4.75917+1.2042j)
'4.759+1.204j'
>>> "{0.real:.3f}{0.imag:+.3f}j".format(4.75917-1.2042j)
'4.759-1.204j'
В этом примере мы обращаемся к каждому атрибуту комплексного числа по отдельностки и формируем их как числа с плавающей
точкой с тремя знаками после запятой.
Кроме того, мы принудительно выводим знак мнимой части, добавляя символ j.
одно из которых представляет действительную часть комплексного числа, а другое - мнимую.
Литералы комплексных чисел записываются как действительная и мнимая части,
объединенные знаком "+" или "-", а за мнимой частью следует символ j.
3.5+2j
0.5j - если действительная часть равна 0, ее можно вообще опустить.
4+0j
-1-3.7j
Отдельные части комплексного числа доступны в виде атрибутов real и imag:
>>> z = -89.5+2.125j
>>> z.real, z.imag
(-89.5, 2.125)
За исключением //, %, divmod и версии pow() с тремя аргументами все остальные арифметические операторы и функции,
которые используются для работы с целыми числами, также могут использоваться и для работы с комплексными числами.
Значения типа complex имеют метод:
conjugate()
который изменяет знак мнимой части.
>>> z = -89.5+2.125j
>>> z.conjugate()
(-89.5-2.125j)
>>> 3-4j.conjugate()
(3+4j)
>>> 4j.real
0.0
>>> 4j.imag
4.0
>>> 4j+3+2j
(3+6j)
Тип данных complex может вызываться как функция complex()
без аргументов она вернет:
>>> complex()
0j
с аргументами типа complex она вернет копию аргумента:
>>> complex(9+3j)
(9+3j)
с аргументом любого другого типа она попытается преобразовать указанный объект в значение типа complex:
>>> complex(0)
0j
>>> complex(1)
(1+0j)
>>> complex(0,1)
1j
При использовании для преобразования функция complex() принимает:
либо единственный строковый аргумент
либо одно или два значения типа float
Если ей передается единственное значение типа float, возвращается комплексное число с мнимой частью равной 0j.
Функции в модуле math не работают с комплексными числами.
Если возникает необходимость использовать комплексные числа, можно воспользоваться модулем cmath,
который содержит комплексные версии больштнства тригонометрических и логарифмических функций,
присутствующих в модуле math, плюс ряд функций специально предназначенных для работы с комплексными числами, таких как:
cmath.phase()
cmath.polar()
cmath.rect()
а также константы:
cmath.pi
cmath.e
которые хранят те же самые значения типа float, что и родственные им константы в модуле math.
К сожалению в Python отсутствуют средства прямого форматирования комплексных чисел.
Однако мы легко можем решить эту проблему, форматируя действительную и мнимую части как отдельные числа с плавающей точкой.
>>> "{0.real:.3f}{0.imag:+.3f}j".format(4.75917+1.2042j)
'4.759+1.204j'
>>> "{0.real:.3f}{0.imag:+.3f}j".format(4.75917-1.2042j)
'4.759-1.204j'
В этом примере мы обращаемся к каждому атрибуту комплексного числа по отдельностки и формируем их как числа с плавающей
точкой с тремя знаками после запятой.
Кроме того, мы принудительно выводим знак мнимой части, добавляя символ j.
Спасибо
ОтветитьУдалитьСложно)
ОтветитьУдалить