Η Python έχει έναν τυπικό τύπο για το χειρισμό σύνθετων αριθμών, τον τύπο COMPLEX. Αν θέλετε να κάνετε μόνο απλούς υπολογισμούς, δεν χρειάζεται να εισαγάγετε καμία ενότητα, αλλά αν εισαγάγετε την τυπική βιβλιοθήκη cmath, μπορείτε επίσης να χρησιμοποιήσετε μαθηματικές συναρτήσεις (εκθετικές, λογαριθμικές, τριγωνομετρικές κ.λπ.) που αντιστοιχούν σε μιγαδικούς αριθμούς.
Τα ακόλουθα περιεχόμενα εξηγούνται εδώ με δείγμα κώδικα.
- Δημιουργία σύνθετων μεταβλητών
- Πάρτε πραγματικά και φανταστικά μέρη:
real
,imag
χαρακτηριστικό - Λήψη συζυγών μιγαδικών αριθμών:
conjugate()
μέθοδος - Λήψη απόλυτης τιμής (μέγεθος):
abs()
λειτουργία (π.χ. μαθηματικά, προγραμματισμός, προγραμματισμός) - Αποκτήστε την απόκλιση (φάση):
math
,cmath
ενότητα - Μετασχηματισμός πολικών συντεταγμένων (αναπαράσταση πολικής μορφής):
math
,cmath
ενότητα - Υπολογισμός μιγαδικών αριθμών (τετραγωνισμός, δυνάμεις, τετραγωνικές ρίζες)
- Δημιουργία σύνθετων μεταβλητών
- Πάρτε το πραγματικό και το φανταστικό μέρος των μιγαδικών αριθμών: real, imagχαρακτηριστικό
- Λήψη συζυγών μιγαδικών αριθμών: conjugate()
- Λάβετε την απόλυτη τιμή (μέγεθος) ενός μιγαδικού αριθμού: abs()
- Λάβετε την απόκλιση (φάση) ενός μιγαδικού αριθμού: math, cmathενότητα
- Μετασχηματισμός πολικών συντεταγμένων μιγαδικών αριθμών (πολική τυπική αναπαράσταση): math, cmathενότητα
- Υπολογισμός μιγαδικών αριθμών (τετραγωνισμός, δυνάμεις, τετραγωνικές ρίζες)
Δημιουργία σύνθετων μεταβλητών
Συμβολίζουμε τη φανταστική μονάδα με j και γράφουμε τα εξής, σημειώνοντας ότι δεν είναι i.
c = 3 + 4j
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Εάν το φανταστικό μέρος είναι 1, η παράλειψή του οδηγεί σε σφάλμα NameError. Εάν μια μεταβλητή με όνομα j ορίζεται πρώτη, θεωρείται ότι είναι αυτή η μεταβλητή.
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)
Το πραγματικό και το φανταστικό μέρος μπορούν να καθοριστούν ως κινητής υποδιαστολής τύπου float. Ο εκθετικός συμβολισμός είναι επίσης αποδεκτός.
c = 1.2e3 + 3j
print(c)
# (1200+3j)
Μπορεί επίσης να δημιουργηθεί από έναν κατασκευαστή τύπου «complex», όπως στο «complex(real part, imaginary part)».
c = complex(3, 4)
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
Πάρτε το πραγματικό και το φανταστικό μέρος των μιγαδικών αριθμών: real, imagχαρακτηριστικό
Το πραγματικό και το φανταστικό μέρος ενός σύνθετου σύνθετου τύπου μπορούν να ληφθούν με τα χαρακτηριστικά real και imag αντίστοιχα. Και οι δύο είναι τύποι float κινητής υποδιαστολής.
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()
Για να λάβετε συζυγείς μιγαδικούς αριθμούς, χρησιμοποιήστε τη μέθοδο conjugate().
c = 3 + 4j
print(c.conjugate())
# (3-4j)
Λάβετε την απόλυτη τιμή (μέγεθος) ενός μιγαδικού αριθμού: abs()
Για να λάβετε την απόλυτη τιμή (μέγεθος) ενός μιγαδικού αριθμού, χρησιμοποιήστε την ενσωματωμένη συνάρτηση abs().
c = 3 + 4j
print(abs(c))
# 5.0
c = 1 + 1j
print(abs(c))
# 1.4142135623730951
Λάβετε την απόκλιση (φάση) ενός μιγαδικού αριθμού: math, cmathενότητα
Για να λάβετε την απόκλιση (φάση) ενός μιγαδικού αριθμού, χρησιμοποιήστε την ενότητα math ή cmath.
Η ενότητα cmath είναι μια ενότητα μαθηματικών συναρτήσεων για μιγαδικούς αριθμούς.
Μπορεί να υπολογιστεί με τη συνάρτηση αντίστροφης εφαπτομένης math.atan2(), όπως ορίζεται, ή να χρησιμοποιηθεί η cmath.phase(), η οποία επιστρέφει την απόκλιση (φάση).
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
Και στις δύο περιπτώσεις, η μονάδα της γωνίας που μπορεί να ληφθεί είναι ακτίνια. Για να μετατρέψετε σε μοίρες, χρησιμοποιήστε την math.degrees().
print(math.degrees(cmath.phase(c)))
# 45.0
Μετασχηματισμός πολικών συντεταγμένων μιγαδικών αριθμών (πολική τυπική αναπαράσταση): math, cmathενότητα
Όπως αναφέρθηκε παραπάνω, η απόλυτη τιμή (μέγεθος) και η απόκλιση (φάση) ενός μιγαδικού αριθμού μπορούν να ληφθούν, αλλά χρησιμοποιώντας την cmath.polar(), μπορούν να ληφθούν μαζί ως πλειάδα (απόλυτη τιμή, απόκλιση).
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
Η μετατροπή από πολικές συντεταγμένες σε καρτεσιανές συντεταγμένες γίνεται με τη χρήση της cmath.rect(). Η cmath.rect(absolute value, deviation) και παρόμοια ορίσματα μπορούν να χρησιμοποιηθούν για τη λήψη τιμών του ισοδύναμου τύπου complex complex complex.
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)
Το πραγματικό και το φανταστικό μέρος είναι ισοδύναμα με τα αποτελέσματα που υπολογίζονται από το συνημίτονο math.cos() και το ημίτονο math.sin() από τις απόλυτες τιμές και τις γωνίες απόκλισης.
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, αλλά εισάγει σφάλμα. Η cmath.sqrt() μπορεί να χρησιμοποιηθεί για τον υπολογισμό της ακριβούς τιμής.
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
Μπορεί επίσης να εκτελεί αριθμητικές πράξεις με σύνθετους τύπους, τύπους int και τύπους float.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)