Kuasai kemampuan angka kompleks Python, dari aritmetika dasar hingga keanggunan bentuk polar, untuk aplikasi matematika dan rekayasa tingkat lanjut.
Angka Kompleks Python: Menguasai Operasi Matematika dan Bentuk Polar
Dalam ranah matematika dan komputasi ilmiah, angka kompleks adalah fundamental. Mereka memperluas konsep angka riil dengan menyertakan komponen imajiner, yang direpresentasikan oleh unit i, di mana i² = -1. Python, bahasa pemrograman serbaguna yang banyak digunakan di seluruh industri global dan disiplin akademis, menawarkan dukungan kuat untuk angka kompleks, membuat operasi matematika yang rumit dapat diakses dan efisien.
Panduan komprehensif ini akan menyelami penanganan angka kompleks di Python, menjelajahi representasi aljabar standar dan bentuk polarnya yang kuat. Kami akan membahas operasi matematika penting dan menunjukkan cara memanfaatkan koordinat polar untuk pemahaman dan manipulasi angka kompleks yang lebih intuitif dalam berbagai aplikasi, mulai dari pemrosesan sinyal hingga mekanika kuantum.
Memahami Angka Kompleks di Python
Angka kompleks umumnya diekspresikan dalam bentuk persegi panjang (atau Kartesius) sebagai a + bi, di mana a adalah bagian riil dan b adalah bagian imajiner. Python secara native mendukung angka kompleks menggunakan notasi a + bj ini, di mana j digunakan sebagai pengganti i untuk menghindari kebingungan dengan arus dalam konteks teknik elektro. Namun, tipe angka kompleks Python berfungsi secara identik apakah Anda menggunakan j atau i sebagai unit imajiner dalam kode Anda.
Membuat Angka Kompleks di Python
Membuat angka kompleks di Python sangat mudah. Anda dapat menggunakan fungsi bawaan complex()
atau langsung menggunakan sintaks a + bj.
- Menggunakan fungsi
complex()
:
Fungsi complex()
dapat mengambil dua argumen: bagian riil dan bagian imajiner. Jika hanya satu argumen yang diberikan, itu diperlakukan sebagai bagian riil, dan bagian imajiner secara default adalah nol. Jika tidak ada argumen yang diberikan, itu membuat 0j.
# Creating complex numbers using complex()
complex_num1 = complex(3, 5) # Real part 3, Imaginary part 5
print(f"Complex number 1: {complex_num1}")
complex_num2 = complex(7) # Real part 7, Imaginary part 0
print(f"Complex number 2: {complex_num2}")
complex_num3 = complex(0, -2) # Real part 0, Imaginary part -2
print(f"Complex number 3: {complex_num3}")
complex_num4 = complex() # Real part 0, Imaginary part 0
print(f"Complex number 4: {complex_num4}")
- Menggunakan sintaks a + bj:
Ini adalah cara yang lebih umum dan seringkali lebih mudah dibaca untuk mendefinisikan angka kompleks di Python.
# Creating complex numbers using a + bj syntax
complex_num_a = 4 + 6j
print(f"Complex number A: {complex_num_a}")
complex_num_b = -2 - 3j
print(f"Complex number B: {complex_num_b}")
complex_num_c = 9j # Real part is 0
print(f"Complex number C: {complex_num_c}")
complex_num_d = 1 + 1j # Equivalent to 1 + j
print(f"Complex number D: {complex_num_d}")
Mengakses Bagian Riil dan Imajiner
Setelah Anda memiliki objek angka kompleks, Anda dapat dengan mudah mengakses komponen riil dan imajinernya menggunakan atribut .real
dan .imag
, secara berurutan. Atribut ini selalu mengembalikan angka floating-point.
my_complex = 5.5 + 2.3j
print(f"The complex number is: {my_complex}")
print(f"Real part: {my_complex.real}")
print(f"Imaginary part: {my_complex.imag}")
Tipe Angka Kompleks
Tipe angka kompleks Python berbeda. Anda dapat memeriksa tipenya menggunakan type()
.
z = 3 + 4j
print(f"Type of z: {type(z)}")
Operasi Matematika dengan Angka Kompleks dalam Bentuk Persegi Panjang
Python mendukung operasi aritmetika standar secara langsung pada angka kompleks, membuat perhitungan matematika menjadi intuitif. Hasil dari operasi ini juga berupa angka kompleks.
Penjumlahan dan Pengurangan
Menjumlahkan atau mengurangi angka kompleks melibatkan penambahan atau pengurangan bagian riil dan imajiner yang sesuai.
Formula:
(a + bi) + (c + di) = (a + c) + (b + d)i
(a + bi) - (c + di) = (a - c) + (b - d)i
z1 = 2 + 3j
z2 = 1 - 5j
# Addition
sum_result = z1 + z2
print(f"{z1} + {z2} = {sum_result}")
# Subtraction
diff_result = z1 - z2
print(f"{z1} - {z2} = {diff_result}")
Perkalian
Mengalikan angka kompleks mengikuti properti distributif, mengingat bahwa j² = -1.
Formula:
(a + bi) * (c + di) = ac + adi + bci + bdi² = (ac - bd) + (ad + bc)i
z1 = 2 + 3j
z2 = 1 - 5j
# Multiplication
prod_result = z1 * z2
print(f"{z1} * {z2} = {prod_result}")
Pembagian
Pembagian angka kompleks melibatkan perkalian pembilang dan penyebut dengan konjugat penyebut untuk merasionalkan penyebut.
Formula:
(a + bi) / (c + di) = ((a + bi) * (c - di)) / ((c + di) * (c - di)) = ((ac + bd) + (bc - ad)i) / (c² + d²)
z1 = 2 + 3j
z2 = 1 - 5j
# Division
div_result = z1 / z2
print(f"{z1} / {z2} = {div_result}")
# Division by zero will raise a ZeroDivisionError
# zero_complex = 0 + 0j
# print(z1 / zero_complex)
Konjugat
Konjugat dari angka kompleks a + bj adalah a - bj. Di Python, metode .conjugate()
mengembalikan konjugat kompleks.
z = 4 + 7j
conjugate_z = z.conjugate()
print(f"The conjugate of {z} is {conjugate_z}")
Magnitudo (Nilai Mutlak)
Magnitudo atau nilai mutlak dari angka kompleks a + bj adalah jaraknya dari titik asal di bidang kompleks, dihitung sebagai sqrt(a² + b²). Fungsi bawaan Python abs()
menghitung ini.
Formula:
|a + bi| = sqrt(a² + b²)
z = 3 + 4j
magnitude_z = abs(z)
print(f"The magnitude of {z} is {magnitude_z}")
Eksponensiasi Angka Kompleks
Memangkatkan angka kompleks juga didukung. Untuk pangkat bilangan bulat, itu mudah. Untuk pangkat pecahan atau kompleks, hasilnya bisa multi-nilai dan biasanya ditangani menggunakan logaritma.
z = 1 + 1j
# Squaring a complex number
squared_z = z ** 2
print(f"{z} squared is {squared_z}")
# Raising to a higher power
cubed_z = z ** 3
print(f"{z} cubed is {cubed_z}")
# Fractional power (can lead to multiple results)
# Python typically returns the principal value
sqrt_z = z ** 0.5
print(f"The square root of {z} is (principal value) {sqrt_z}")
Kekuatan Bentuk Polar
Meskipun bentuk persegi panjang (a + bj) intuitif untuk aritmetika dasar, bentuk polar menawarkan keuntungan signifikan untuk memahami rotasi, perkalian, pembagian, dan eksponensiasi, terutama dalam rekayasa dan fisika.
Angka kompleks juga dapat direpresentasikan dalam bentuk polar sebagai r(cos θ + i sin θ), atau lebih ringkas menggunakan rumus Euler, reiθ. Di sini:
- r (modulus): Magnitudo atau jarak dari titik asal (sama dengan nilai mutlak yang dihitung sebelumnya).
- θ (argumen): Sudut (dalam radian) yang dibentuk oleh segmen garis dari titik asal ke angka kompleks dengan sumbu riil positif.
Mengonversi dari Bentuk Persegi Panjang ke Bentuk Polar
Diberikan angka kompleks z = a + bj, kita dapat mengonversinya ke bentuk polar:
- Modulus (r):
r = abs(z)
- Argumen (θ):
θ = atan2(b, a)
. Fungsiatan2(y, x)
dari modulmath
(ataucmath
) sangat penting karena secara akurat menentukan sudut di keempat kuadran, tidak sepertiatan(b/a)
sederhana.
Modul cmath
Python menyediakan fungsi untuk bekerja langsung dengan koordinat polar.
import cmath
z_rect = 3 + 4j
# Convert to polar coordinates
polar_coords = cmath.polar(z_rect)
radius = polar_coords[0] # This is 'r'
angle_radians = polar_coords[1] # This is 'theta'
print(f"Rectangular: {z_rect}")
print(f"Polar: Radius = {radius:.2f}, Angle (radians) = {angle_radians:.2f}")
# For degrees, convert radians to degrees
angle_degrees = cmath.degrees(angle_radians)
print(f"Polar: Angle (degrees) = {angle_degrees:.2f}")
Mengonversi dari Bentuk Polar ke Bentuk Persegi Panjang
Diberikan angka kompleks dalam bentuk polar r(cos θ + i sin θ) atau reiθ, kita dapat mengonversinya kembali ke bentuk persegi panjang:
- Bagian riil (a):
a = r * cos(θ)
- Bagian imajiner (b):
b = r * sin(θ)
Modul cmath
Python memiliki fungsi cmath.rect()
untuk ini.
import cmath
radius = 5.0
angle_radians = 0.927 # Approximately 53.13 degrees
# Convert from polar to rectangular coordinates
rectangular_coords = cmath.rect(radius, angle_radians)
print(f"Polar: Radius = {radius}, Angle (radians) = {angle_radians:.2f}")
print(f"Rectangular: {rectangular_coords}")
# Using degrees with cmath.rect is not direct; convert degrees to radians first
angle_degrees_example = 45.0
angle_radians_example = cmath.radians(angle_degrees_example)
rect_from_deg = cmath.rect(1.0, angle_radians_example)
print(f"Polar (45 deg): {rect_from_deg}")
Operasi dalam Bentuk Polar
Kekuatan sejati bentuk polar muncul saat melakukan perkalian, pembagian, dan eksponensiasi. Operasi ini menjadi jauh lebih sederhana dibandingkan dengan rekanan persegi panjangnya.
Perkalian dalam Bentuk Polar
Untuk mengalikan dua angka kompleks dalam bentuk polar, Anda mengalikan modulusnya dan menambahkan argumennya.
Formula:
Jika z1 = r1(cos θ1 + i sin θ1) dan z2 = r2(cos θ2 + i sin θ2), maka
z1 * z2 = (r1 * r2) * [cos(θ1 + θ2) + i sin(θ1 + θ2)]
Modul cmath
Python tidak memiliki fungsi perkalian langsung yang mengambil input polar dan menghasilkan output polar dalam satu langkah. Anda biasanya akan mengonversi ke persegi panjang, mengalikan, dan kemudian mengonversi kembali jika diperlukan, atau secara manual mengimplementasikan logikanya.
import cmath
z1_rect = 2 + 3j
z2_rect = 1 - 5j
# Convert to polar
r1, theta1 = cmath.polar(z1_rect)
r2, theta2 = cmath.polar(z2_rect)
# Perform multiplication in polar domain
product_r = r1 * r2
product_theta = theta1 + theta2
# Convert the result back to rectangular
product_rect_polar_method = cmath.rect(product_r, product_theta)
# For comparison, direct multiplication in rectangular form
product_rect_direct = z1_rect * z2_rect
print(f"z1 = {z1_rect}, Polar: r={r1:.2f}, theta={cmath.degrees(theta1):.2f} deg")
print(f"z2 = {z2_rect}, Polar: r={r2:.2f}, theta={cmath.degrees(theta2):.2f} deg")
print(f"Product (Polar Method): {product_rect_polar_method}")
print(f"Product (Direct Method): {product_rect_direct}")
# Note: Small floating-point differences might occur
Pembagian dalam Bentuk Polar
Untuk membagi dua angka kompleks dalam bentuk polar, Anda membagi modulusnya dan mengurangi argumennya (argumen pembilang dikurangi argumen penyebut).
Formula:
Jika z1 = r1(cos θ1 + i sin θ1) dan z2 = r2(cos θ2 + i sin θ2), maka
z1 / z2 = (r1 / r2) * [cos(θ1 - θ2) + i sin(θ1 - θ2)]
import cmath
z1_rect = 2 + 3j
z2_rect = 1 - 5j
# Convert to polar
r1, theta1 = cmath.polar(z1_rect)
r2, theta2 = cmath.polar(z2_rect)
# Perform division in polar domain
quotient_r = r1 / r2
quotient_theta = theta1 - theta2
# Convert the result back to rectangular
quotient_rect_polar_method = cmath.rect(quotient_r, quotient_theta)
# For comparison, direct division in rectangular form
quotient_rect_direct = z1_rect / z2_rect
print(f"Quotient (Polar Method): {quotient_rect_polar_method}")
print(f"Quotient (Direct Method): {quotient_rect_direct}")
Eksponensiasi (Teorema De Moivre)
Memangkatkan angka kompleks dalam bentuk polar ke pangkat bilangan bulat n disederhanakan oleh Teorema De Moivre:
Formula:
[r(cos θ + i sin θ)]ⁿ = rⁿ(cos(nθ) + i sin(nθ))
Teorema ini sangat berguna untuk menghitung akar angka kompleks dan menyelesaikan persamaan polinomial. Untuk pangkat kompleks, ini meluas menggunakan logaritma.
import cmath
z_rect = 1 + 1j
# Convert to polar
r, theta = cmath.polar(z_rect)
n = 5 # The power
# Calculate z^n using De Moivre's Theorem
hesized_r = r ** n
hesized_theta = n * theta
# Convert the result back to rectangular
hesized_rect_polar_method = cmath.rect(hesized_r, hesized_theta)
# For comparison, direct exponentiation in Python
hesized_rect_direct = z_rect ** n
print(f"z = {z_rect}, Polar: r={r:.2f}, theta={cmath.degrees(theta):.2f} deg")
print(f"{z_rect}^{n} (Polar Method): {hesized_rect_polar_method}")
print(f"{z_rect}^{n} (Direct Method): {hesized_rect_direct}")
# Calculating roots (e.g., cube root, n=1/3)
n_root = 1/3
r_root = r ** n_root
theta_root_principal = n_root * theta
# The principal root
principal_root = cmath.rect(r_root, theta_root_principal)
print(f"Principal cube root of {z_rect}: {principal_root}")
# Note: For roots, there are 'n' distinct values. De Moivre's theorem applied directly
# usually gives the principal root. To find all roots, you'd add multiples of 2*pi/n to the angle.
for k in range(3):
current_angle = (theta + 2 * cmath.pi * k) / 3
root_k = cmath.rect(r_root, current_angle)
print(f"Cube root {k+1}: {root_k}")
Fungsi Angka Kompleks Umum di cmath
Modul cmath
menyediakan banyak fungsi matematika canggih yang beroperasi pada angka kompleks, termasuk fungsi trigonometri, hiperbolik, dan logaritma.
cmath.sqrt(z)
: Menghitung akar kuadrat dari angka kompleks. Mengembalikan akar kuadrat utama.cmath.exp(z)
: Menghitung e dipangkatkan z.cmath.log(z[, base])
: Menghitung logaritma z. Jikabase
ditentukan, ia menghitung logaritma dengan basis tersebut. Jika tidak, ia menghitung logaritma natural.cmath.sin(z)
,cmath.cos(z)
,cmath.tan(z)
: Fungsi trigonometri untuk angka kompleks.cmath.sinh(z)
,cmath.cosh(z)
,cmath.tanh(z)
: Fungsi hiperbolik untuk angka kompleks.
import cmath
z = 1 + 1j
# Square root
print(f"sqrt({z}) = {cmath.sqrt(z)}")
# Exponential
print(f"exp({z}) = {cmath.exp(z)}")
# Natural logarithm
print(f"log({z}) = {cmath.log(z)}")
# Sine
print(f"sin({z}) = {cmath.sin(z)}")
Aplikasi Angka Kompleks
Angka kompleks, dan representasi polarnya, sangat diperlukan di berbagai bidang ilmiah dan rekayasa:
- Teknik Elektro: Digunakan secara luas dalam analisis sirkuit AC, impedansi, dan pemrosesan sinyal. Bentuk polar alami untuk menggambarkan magnitudo dan fasa arus dan tegangan bolak-balik.
- Pemrosesan Sinyal: Transformasi Fourier, yang menguraikan sinyal menjadi frekuensi konstituennya, sangat bergantung pada eksponensial kompleks (eiωt), yang secara alami diekspresikan dalam bentuk polar.
- Mekanika Kuantum: Persamaan fundamental mekanika kuantum, seperti persamaan Schrödinger, melibatkan fungsi gelombang kompleks.
- Sistem Kontrol: Menganalisis stabilitas sistem dan respons frekuensi sering melibatkan angka kompleks dalam domain Laplace.
- Dinamika Fluida: Masalah tertentu dalam mekanika fluida dapat disederhanakan menggunakan teori potensi kompleks.
- Geometri Fraktal: Fraktal seperti himpunan Mandelbrot dihasilkan dengan mengulang fungsi kompleks.
Contoh Global: Transformasi Fourier dalam Pemrosesan Audio
Pertimbangkan pemrosesan sinyal audio di seluruh dunia. Saat menganalisis gelombang suara, insinyur dan ilmuwan data menggunakan Discrete Fourier Transform (DFT) atau implementasi efisiennya, Fast Fourier Transform (FFT). DFT mengonversi sinyal domain waktu (bagaimana tekanan suara berubah seiring waktu) menjadi representasi domain frekuensinya. Representasi ini adalah serangkaian angka kompleks, di mana setiap angka kompleks sesuai dengan frekuensi tertentu. Magnitudo angka kompleks menunjukkan amplitudo (kenyaringan) komponen frekuensi tersebut, dan argumennya (sudut) menunjukkan fasanya. Ini memungkinkan tugas-tugas seperti pengurangan kebisingan, ekualisasi, dan sintesis musik, yang merupakan standar di seluruh produksi dan analisis audio global.
Praktik Terbaik untuk Menggunakan Angka Kompleks di Python
- Pilih Bentuk yang Tepat: Untuk aritmetika dasar (penjumlahan, pengurangan), bentuk persegi panjang seringkali lebih sederhana. Untuk perkalian, pembagian, dan eksponensiasi/akar, terutama yang melibatkan sudut dan rotasi, bentuk polar (atau menggunakan fungsi
cmath
yang mengabstraksikannya) biasanya lebih efisien dan secara konseptual lebih jelas. - Manfaatkan
cmath
: Selalu gunakan modulcmath
untuk matematika angka kompleks di luar aritmetika dasar. Ini menangani kasus-kasus khusus dan menyediakan fungsi-fungsi canggih dengan andal. - Perhatikan Presisi Floating-Point: Seperti semua perhitungan floating-point, hasil yang melibatkan angka kompleks dapat memiliki kesalahan presisi kecil. Berhati-hatilah saat membandingkan angka kompleks untuk kesetaraan yang tepat.
- Pahami Radian: Fungsi trigonometri dalam modul
math
dancmath
Python beroperasi dengan radian. Pastikan sudut Anda dalam satuan yang benar. - Gunakan `atan2` untuk Sudut: Saat menghitung argumen secara manual dari bagian riil dan imajiner, gunakan
math.atan2(imaginary, real)
ataucmath.phase(complex_number)
untuk penentuan kuadran yang akurat.
Kesimpulan
Dukungan bawaan Python untuk angka kompleks, yang dilengkapi dengan modul cmath
yang kuat, menyediakan perangkat komprehensif untuk mengatasi berbagai tantangan matematika dan ilmiah. Apakah Anda melakukan manipulasi aljabar langsung atau menyelami dunia koordinat polar yang elegan untuk operasi seperti rotasi dan penskalaan, Python memberdayakan Anda dengan kejelasan dan efisiensi.
Dengan memahami interaksi antara bentuk persegi panjang dan polar, dan dengan secara bijaksana menerapkan fungsi-fungsi yang disediakan oleh pustaka standar, pengembang dan peneliti di seluruh dunia dapat membuka kemungkinan baru di berbagai bidang mulai dari telekomunikasi dan kedirgantaraan hingga pemodelan keuangan dan komputasi kuantum. Menguasai konsep-konsep ini tidak diragukan lagi akan meningkatkan kemampuan pemecahan masalah Anda di dunia yang semakin kompleks dan saling terhubung.