Użycie liczb zespolonych w Pythonie [zamknięte]


111

Jestem nowicjuszem w matematyce. Teraz wchodzę głębiej w typy danych Pythona. Nie rozumiem, jak używać liczby zespolonej. Proszę o przykłady użycia liczb zespolonych w Pythonie.


1
Skoro mówisz, że nie znasz matematyki, czy możesz napisać, co chcesz robić w notacji matematycznej?
mmmmmm

14
Nie sądzę, żeby to było zamknięte. Uznałem również za mylące, że Python używał urojonej składni „j”, powszechnej w inżynierii, zamiast bardziej intuicyjnej składni „i”, powszechnej w matematyce, statystykach, R itp. Pierwsza odpowiedź poniżej wykonała dobrą robotę, wprowadzając to.
Mittenchops

Wydaje się, że jest to uzasadniony błąd roboczy w Pythonie, help(complex)który nie pokazuje żadnych przykładów, w przeciwieństwie np. Do `import decimal; help (decimal) `
smci

Odpowiedzi:


188

W Pythonie możesz wstawić `` j '' lub `` J '' po liczbie, aby uczynić ją wyimaginowaną, dzięki czemu możesz łatwo pisać złożone literały:

>>> 1j
1j
>>> 1J
1j
>>> 1j * 1j
(-1+0j)

Przyrostek „j” pochodzi z elektrotechniki, gdzie zmienna „i” jest zwykle używana do określenia prądu. ( Rozumowanie znalezione tutaj. )

Typ liczby zespolonej tocomplex i jeśli wolisz, możesz użyć tego typu jako konstruktora:

>>> complex(2,3)
(2+3j)

Liczba zespolona ma kilka wbudowanych metod dostępu:

>>> z = 2+3j
>>> z.real
2.0
>>> z.imag
3.0
>>> z.conjugate()
(2-3j)

Kilka wbudowanych funkcji obsługuje liczby zespolone:

>>> abs(3 + 4j)
5.0
>>> pow(3 + 4j, 2)
(-7+24j)

Standardowy modułcmath ma więcej funkcji obsługujących liczby zespolone:

>>> import cmath
>>> cmath.sin(2 + 3j)
(9.15449914691143-4.168906959966565j)

8
„i” jest również używane przez matematyków, fizyków i prawie wszystkich innych naukowców. Jeśli to nie jest wystarczająco zagmatwane, niektórzy używają „i” do przedstawienia „dodatniego” pierwiastka kwadratowego z jedności, podczas gdy „j” jest „ujemnym” pierwiastkiem z jedności. Zatem i == -j. FYJ ...
jvriesem

13

Poniższy przykład liczb zespolonych powinien być zrozumiały i zawierać komunikat o błędzie na końcu

>>> x=complex(1,2)
>>> print x
(1+2j)
>>> y=complex(3,4)
>>> print y
(3+4j)
>>> z=x+y
>>> print x
(1+2j)
>>> print z
(4+6j)
>>> z=x*y
>>> print z
(-5+10j)
>>> z=x/y
>>> print z
(0.44+0.08j)
>>> print x.conjugate()
(1-2j)
>>> print x.imag
2.0
>>> print x.real
1.0
>>> print x>y

Traceback (most recent call last):
  File "<pyshell#149>", line 1, in <module>
    print x>y
TypeError: no ordering relation is defined for complex numbers
>>> print x==y
False
>>> 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.