Питхон има стандардни тип за руковање комплексним бројевима, тип ЦОМПЛЕКС. Ако само желите да радите једноставне прорачуне, не морате да увозите никакве модуле, али ако увезете стандардну библиотеку цматх, можете користити и математичке функције (експоненцијалне, логаритамске, тригонометријске, итд.) које одговарају комплексним бројевима.
Следећи садржај је овде објашњен са примером кода.
- Генеришите комплексне варијабле
- Добијте стварне и имагинарне делове:
real
,imag
атрибут - Добити коњуговане комплексне бројеве:
conjugate()
методом - Добијте апсолутну вредност (величину):
abs()
функција (нпр. математика, програмирање, програмирање) - Добити деклинацију (фаза):
math
,cmath
модул - Трансформација поларних координата (представа поларног облика):
math
,cmath
модул - Рачунање комплексних бројева (квадратура, степен, квадратни корен)
- Генеришите комплексне варијабле
- Добити стварне и имагинарне делове комплексних бројева:real,imagатрибут
- Добити коњуговане комплексне бројеве:conjugate()
- Добити апсолутну вредност (величину) комплексног броја:abs()
- Добити деклинацију (фазу) комплексног броја:math,cmathмодул
- Трансформација поларних координата комплексних бројева (поларно формално представљање):math,cmathмодул
- Рачунање комплексних бројева (квадратура, степен, квадратни корен)
Генеришите комплексне варијабле
Означите имагинарну јединицу са ј и напишите следеће, приметите да то није и.
c = 3 + 4j
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Ако је имагинарни део 1, његово изостављање доводи до НамеЕррор. Ако се прва дефинише променљива под именом ј, сматра се да је та променљива.
1j
То би требало експлицитно навести на овај начин.
# c = 3 + j
# NameError: name 'j' is not defined
c = 3 + 1j
print(c)
# (3+1j)
Ако је прави део 0, може се изоставити.
c = 3j
print(c)
# 3j
Ако желите да дефинишете вредност са имагинарним делом 0 као сложени сложени тип, напишите 0 експлицитно. Као што је описано у наставку, операције се могу изводити између сложеног типа и типа целог броја или типа са покретним зарезом.
c = 3 + 0j
print(c)
# (3+0j)
Реални и имагинарни делови се могу специфицирати као тип са плутајућим зарезом. Експоненцијална нотација је такође прихватљива.
c = 1.2e3 + 3j
print(c)
# (1200+3j)
Такође се може генерисати помоћу конструктора типа „комплекс“, као у „сложени (стварни део, имагинарни део)“.
c = complex(3, 4)
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Добити стварне и имагинарне делове комплексних бројева:real,imagатрибут
Реални и имагинарни делови комплексног комплексног типа могу се добити са реалним и имагинарним атрибутима, респективно. Оба су типови са помичним зарезом.
c = 3 + 4j
print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>
print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>
Само се чита и не може се мењати.
# c.real = 5.5
# AttributeError: readonly attribute
Добити коњуговане комплексне бројеве:conjugate()
Да бисте добили коњуговане комплексне бројеве, користите метод коњугат().
c = 3 + 4j
print(c.conjugate())
# (3-4j)
Добити апсолутну вредност (величину) комплексног броја:abs()
Да бисте добили апсолутну вредност (величину) комплексног броја, користите уграђену функцију абс().
c = 3 + 4j
print(abs(c))
# 5.0
c = 1 + 1j
print(abs(c))
# 1.4142135623730951
Добити деклинацију (фазу) комплексног броја:math,cmathмодул
Да бисте добили деклинацију (фазу) комплексног броја, користите модул математике или цматх.
Модул цматх је модул математичке функције за комплексне бројеве.
Може се израчунати помоћу функције инверзне тангенте матх.атан2() како је дефинисано, или користити цматх.пхасе(), која враћа деклинацију (фазу).
import cmath
import math
c = 1 + 1j
print(math.atan2(c.imag, c.real))
# 0.7853981633974483
print(cmath.phase(c))
# 0.7853981633974483
print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True
У оба случаја, јединица угла која се може добити је радијани. Да бисте претворили у степене, користите матх.дегреес().
print(math.degrees(cmath.phase(c)))
# 45.0
Трансформација поларних координата комплексних бројева (поларно формално представљање):math,cmathмодул
Као што је горе поменуто, апсолутна вредност (величина) и деклинација (фаза) комплексног броја се могу добити, али коришћењем цматх.полар(), они се могу добити заједно као (апсолутна вредност, деклинација) скуп.
c = 1 + 1j
print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>
print(cmath.polar(c)[0] == abs(c))
# True
print(cmath.polar(c)[1] == cmath.phase(c))
# True
Конверзија из поларних координата у картезијанске координате се врши помоћу цматх.рецт(). цматх.рецт(апсолутна вредност, девијација) и слични аргументи се могу користити за добијање вредности еквивалентног комплексног комплексног типа.
print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)
print(cmath.rect(1, 0))
# (1+0j)
print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)
Реални и имагинарни делови су еквивалентни резултатима израчунатим помоћу косинус матх.цос() и синус матх.син() из апсолутних вредности и углова деклинације.
r = 2
ph = math.pi
print(cmath.rect(r, ph).real == r * math.cos(ph))
# True
print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True
Рачунање комплексних бројева (квадратура, степен, квадратни корен)
Четири аритметичке операције и прорачуни снаге могу се извршити коришћењем уобичајених аритметичких оператора.
c1 = 3 + 4j
c2 = 2 - 1j
print(c1 + c2)
# (5+3j)
print(c1 - c2)
# (1+5j)
print(c1 * c2)
# (10+5j)
print(c1 / c2)
# (0.4+2.2j)
print(c1 ** 3)
# (-117+44j)
Квадратни корен се може израчунати са **0,5, али уноси грешку. цматх.скрт() се може користити за израчунавање тачне вредности.
print((-3 + 4j) ** 0.5)
# (1.0000000000000002+2j)
print((-1) ** 0.5)
# (6.123233995736766e-17+1j)
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
Такође може да изводи аритметичке операције са сложеним типовима, инт типовима и типовима са пловком.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)