Lewati ke konten utama

Eksponen di Python: Panduan Komprehensif untuk Pemula

Kuasai eksponen di Python menggunakan berbagai metode, dari fungsi bawaan hingga pustaka kuat seperti NumPy, dan manfaatkan dalam skenario dunia nyata untuk pemahaman yang lebih mendalam.
· 9 mnt Baca

Jelajahi bersama AI

Pemangkatan (eksponensiasi) adalah konsep dasar di berbagai bidang pemrograman, dari analisis data hingga perancangan algoritme. Penerapannya mencakup analisis pola eksponensial pada kumpulan data besar seperti tren media sosial dan melakukan perhitungan matematika seperti pertumbuhan majemuk atau tingkat bunga.

Selain itu, pemangkatan berperan penting dalam Machine Learning (ML) dan Artificial Intelligence (AI), khususnya pada jaringan saraf dan pengenalan gambar. Oleh karena itu, memahami cara melakukan perhitungan dengan eksponen secara efektif di Python sangatlah penting.

Dalam panduan ini, kita akan mengeksplorasi berbagai metode untuk melakukan pemangkatan di Python. Kita akan meninjau fungsi bawaan, fungsi dari modul math, dan fungsi dari pustaka Numpy. Setiap metode memiliki keunggulannya masing-masing. Untuk memperkuat pemahaman Anda dan menjadi ahli, daftar ke jalur keterampilan Python Programming Fundamentals kami. 

Eksponen di Python

Python menyediakan beberapa cara untuk menghitung eksponen:

  • **: Operator asteris ganda (**) adalah opsi paling sederhana dan mendasar untuk pemangkatan. Misalnya, x ** y menghitung x dipangkatkan dengan y.

  • pow(): Fungsi bawaan ini menerima dua argumen: basis dan eksponen. Fungsi ini mengembalikan hasil pemangkatan basis dengan eksponen. Fungsi ini juga memungkinkan argumen ketiga opsional untuk pemangkatan modular. Contoh: pow(x, y).

  • math.pow(): Fungsi dari modul math ini mirip dengan pow(), tetapi selalu mengembalikan hasil bertipe floating point. Fungsi ini menerima dua argumen, yang keduanya bisa berupa float atau integer. Contoh: math.pow(x, y).

  • math.exp(): Fungsi lain dari modul math, mengembalikan eksponensial natural dari sebuah angka, yaitu e dipangkatkan dengan argumen. Contoh: math.exp(argument).

  • np.power(): Fungsi dari pustaka NumPy ini dirancang untuk bekerja dengan array atau matriks. Fungsi ini melakukan pemangkatan secara element-wise. Contoh: np.power(array, exponent).

Dasar-Dasar Eksponen di Python

Operator asteris ganda (**) adalah cara paling langsung di Python untuk menghitung pemangkatan. Operator ini memangkatkan operand kiri (basis) dengan operand kanan (eksponen). Operator ini juga disebut operator pangkat atau operator eksponen.

Jika Anda ingin meningkatkan keterampilan pemrograman Python dan belajar menulis kode seperti programmer sejati, lihat kursus Python Programming.

Eksponen positif

Dalam potongan kode ini, kami menunjukkan cara menghitung pemangkatan menggunakan eksponen positif. Misalnya, 2 dipangkatkan 3 dihitung sebagai 2 × 2 × 2, menghasilkan 8. Demikian pula, -10 dipangkatkan 4 dihitung sebagai -10 × -10 × -10 × -10, menghasilkan 10000.

base = 2
exponent = 3
print(base**exponent)  # Output: 8

base = -10
exponent = 4
print(base**exponent)  # Output: 10000

Eksponen negatif

Kode ini menghitung hasil pemangkatan basis dengan eksponen negatif. Misalnya, 5 dipangkatkan -2 sama dengan 0,04. Demikian pula, 25 dipangkatkan -5 menghasilkan nilai sangat kecil yang direpresentasikan dalam notasi ilmiah (1.024e-07).

base = 5
exponent = -2
print(base**exponent) # 0.04

base = 25
exponent = -5
print(base**exponent) # 1.024e-07

Memangkatkan suatu bilangan dengan eksponen negatif setara dengan mengambil kebalikan dari bilangan tersebut yang dipangkatkan dengan eksponen positif.

Memangkatkan bilangan dengan eksponen negatif

Di Python, operator ** mengembalikan ZeroDivisionError jika Anda memangkatkan 0.0 dengan pangkat negatif karena pembagian dengan nol tidak terdefinisi.

base = 0
exponent = -5
print(base**exponent)

Keluaran yang dihasilkan adalah:

ZeroDivisionError di Python

Eksponen bilangan pecahan

Contoh kode menunjukkan bahwa Python menghitung dengan benar hasil pemangkatan basis positif seperti 2 dengan eksponen pecahan seperti 1,5. Namun, menggunakan basis negatif dengan eksponen pecahan menghasilkan bilangan kompleks.

base = 2
exponent = 1.5
print(base**exponent) # 2.8284271247461903

base = -0.25
exponent = 1.25
print(base**exponent) # (-0.12500000000000003-0.125j)

Lebih Dalam: Fungsi Bawaan

Python menyediakan berbagai fungsi bawaan untuk menghitung eksponen, tetapi kita akan fokus pada dua fungsi: pow() dan math.pow(). Sekilas, kedua fungsi ini tampak serupa, namun terdapat beberapa perbedaan penting.

pow()

Fungsi pow() menerima dua argumen wajib: basis dan eksponen. Secara opsional, pow() menerima argumen ketiga untuk menghitung modulus dari nilai eksponensial. Sintaksnya adalah: pow(base, exp, mod), di mana 'mod' mewakili modulus. Fungsi ini mengembalikan sisa dari pemangkatan.

Pemangkatan dasar

Untuk perhitungan dasar, cukup berikan basis dan eksponen ke fungsi, yang bekerja mirip dengan operator **.

r = pow(2, 3)
print(r) # 8

r = pow(4, -10)
print(r) # 2.56e-06

Pemangkatan floating point

Pada kode di bawah, kita menggunakan bilangan floating point untuk basis dan eksponen, beberapa di antaranya negatif. Pendekatan ini bekerja mirip dengan operator **.

r = pow(3.5, 2)
print(r)  # 12.25

r = pow(3.5, -2)
print(r)  # 0.08163265306122448

r = pow(3.5, 3.2)
print(r)  # 55.08301986166747

r = pow(-3.5, -3.3)
print(r)  # (-0.009414432347757688+0.012957854474952653j)

r = pow(-3.5, 3.3)
print(r)  # (-36.698070584660925-50.510560868902246j)

Catatan: Jika Anda menangani pemangkatan dasar tanpa perlu perhitungan modular, operator ** adalah solusi yang lebih ringkas dan mudah dibaca dibandingkan fungsi pow().

Pemangkatan modular

Parameter modulus opsional dari fungsi pow() sangat berguna saat bekerja dengan pemangkatan modular. Ini sangat bermanfaat dalam kriptografi atau saat menangani angka besar, karena pemangkatan modular menawarkan efisiensi yang lebih baik. Misalnya, saat menghitung 3 dipangkatkan 4 modulo 5, hasilnya adalah 1, karena 81 modulo 5 sama dengan 1.

r = pow(3, 4, 5)
print(r)  # 1

r = pow(123, 456, 789)
print(r)  # 699

r = pow(2, -3, 7)
print(r)  # 1

r = pow(-13, 8, 62)
print(r)  # 7

Anda mungkin bertanya-tanya mengapa menggunakan pow() langsung untuk pemangkatan modular lebih efisien daripada pow(base, exp) % mod atau (base**exp) % mod. Fungsi bawaan pow() dirancang khusus untuk operasi ini, sedangkan metode lain melakukan perhitungan perantara yang tidak perlu. Hal ini dapat berdampak signifikan pada kinerja, terutama dengan nilai yang besar.

import timeit

start_pow_mod = timeit.default_timer()
pow(500000000, 3000, 4000)
stop_pow_mod = timeit.default_timer()

pow_mod_time = stop_pow_mod - start_pow_mod

print("Time using pow(base, exp, mod): ", pow_mod_time)

start_pow_other = timeit.default_timer()
pow(500000000, 3000) % 4000
stop_pow_other = timeit.default_timer()

pow_other_time = stop_pow_other - start_pow_other

print("Time using pow(base, exp) % mod:", pow_other_time)


start_aestrisk = timeit.default_timer()
(500000000**3000) % 4000
stop_aestrisk = timeit.default_timer()

aestrisk_time = stop_aestrisk - start_aestrisk

print("Time using (base ** exp) % mod: ", aestrisk_time)


print(
    f"Speed comparison: pow(base, exp, mod) was {pow_other_time / pow_mod_time} times faster than pow(base, exp) % mod and {aestrisk_time/pow_mod_time} times faster than (base ** exp) % mod"
)

Keluaran yang dihasilkan adalah:

pemangkatan modular di Python

Fungsi pow() dapat memunculkan berbagai error bergantung situasinya.

# Mencoba mengambil modulo dari bilangan kompleks akan memunculkan ValueError.
print(pow(2 + 3j, 4, 5))  # ValueError: complex modulo

# Argumen ketiga tidak diizinkan jika argumen kedua bernilai negatif.
print(pow(10, -11, 4))  # ValueError: base is not invertible for the given modulus

# Jika argumen pertama atau kedua adalah float, argumen ketiga tidak diizinkan.
print(pow(2.4, 3, 4))  # TypeError: pow() 3rd argument not allowed unless all arguments are integers

# Memberikan argumen bertipe string akan menghasilkan TypeError.
print(pow(2, 4, '3'))  # TypeError: unsupported operand type(s) for pow(): 'int', 'int', 'str'

math.pow()

Fungsi math.pow(x, n) memangkatkan x dengan n. Fungsi math.pow() mengonversi argumen menjadi float dan mengembalikan hasil sebagai pemangkatan floating point yang presisi. Presisi ini menjadi krusial di bidang seperti analisis data dan komputasi ilmiah, di mana akurasi sangat penting.

Berikut kode sederhananya. Fungsi math.pow() mengembalikan nilai bertipe floating point, sedangkan fungsi pow() mengembalikan nilai bertipe integer.

import math
print(math.pow(6, 3))  # 216.0
print(pow(6, 3))  # 216

Fungsi math.pow() tidak menerima bilangan imajiner.

TypeError tidak dapat mengonversi complex ke float di Python

math.pow() tidak menerima basis negatif dengan eksponen pecahan karena akan memunculkan ValueError.

ValueError math domain error di Python

Memanfaatkan Pustaka untuk Pemangkatan Lanjutan

Untuk menangani tugas pemangkatan tingkat lanjut, seperti mencari nilai eksponensial suatu angka atau menghitung pemangkatan secara element-wise pada array atau matriks, Anda dapat memanfaatkan dua fungsi: np.power() dan math.exp().

np.power()

Di Python, pemangkatan tidak terbatas pada fungsi bawaan. Python memiliki pustaka kuat bernama NumPy, yang memungkinkan berbagai operasi matematika pada array. Terkadang, Anda perlu menangani pemangkatan di seluruh array, dan di sinilah np.power() berperan. Fungsi ini dirancang untuk pemangkatan secara element-wise pada array.

import numpy as np
r = np.power([2, 4, 8], 2)
print(r)  # [4, 16, 64]

r = np.power([2, 4, 8], [1, 2, 3])
print(r)  # [4 64 4096]

r = np.power([[2, 3, 4], [5, 6, 7]], [1, 2, 3])
print(r) # [[2 9 64] [5 36 343]]

Fungsi np.power() tidak menerima eksponen negatif.

import numpy as np
r = np.power([2, 4, 8], -2)
print(r)

Keluaran yang dihasilkan adalah:

ValueError saat mencoba pemangkatan di Python

Jika Anda mencoba memangkatkan bilangan negatif dengan pangkat non-integer, NumPy akan mengembalikan nilai NaN (Not a Number).

image7.png

math.exp()

Fungsi math.exp(x) menghitung nilai eksponensial dari x, yang setara dengan memangkatkan bilangan Euler e dengan x. Bilangan Euler kira-kira sama dengan 2,71828, dan dalam notasi matematika operasi ini dituliskan sebagai e^x.

import math
x = 2
r = math.exp(x)
print("Exponential of", x, ":", r) # 7.38905609893065

Fitur penting dari math.exp(x) adalah adaptabilitasnya. Fungsi ini dapat menangani bilangan positif, bilangan negatif, dan bahkan bilangan floating point.

import math
print(math.exp(-2))  # 0.1353352832366127
print(math.exp(-2.5))  # 0.0820849986238988
print(math.exp(2.5))  # 12.182493960703473

Penerapan dan Contoh Praktis

Pemangkatan adalah operasi dasar dalam matematika dengan banyak penerapan dalam analisis data dan komputasi ilmiah.

Jika Anda ingin menguasai dasar-dasar analisis data dengan Python, lihat kursus Introduction to Python for Data Science.

Misalkan Anda memiliki file CSV yang berisi data pokok pinjaman, suku bunga, dan periode investasi untuk beberapa baris. Anda dapat menghitung bunga majemuk untuk setiap baris menggunakan salah satu metode yang dibahas di atas.

Principal,Rate,Years
1000,0.05,5
2000,0.03,10
1500,0.08,3
3000,0.06,7
2500,0.04,9
1800,0.07,4
2200,0.025,6
3500,0.09,2
2800,0.035,8
4000,0.02,5

Berikut kodenya:

import csv


def compound_interest(principal, rate, years):
    return principal * (1 + rate) ** years


# Read data from CSV file

data = []
with open("data.csv", newline="") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        row["Compound Interest"] = compound_interest(
            float(row["Principal"]), float(row["Rate"]), int(row["Years"])
        )
        data.append(row)
# Write data to a new CSV file with compound interest column

output_file = "data.csv"
fieldnames = ["Principal", "Rate", "Years", "Compound Interest"]

with open(output_file, mode="w", newline="") as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for row in data:
        writer.writerow(row)
print("Compound interest calculations saved to", output_file)

Hasilnya adalah:

menghitung bunga majemuk di Python

Mantap! Anda telah menghitung bunga majemuk untuk semua baris dan menyimpannya di kolom terpisah. Anda dapat menggunakan data ini untuk analisis lebih lanjut. Demikian pula, ada ratusan kasus penggunaan lain di mana pemangkatan digunakan secara ekstensif, seperti pemodelan pertumbuhan populasi dari waktu ke waktu.

Kesimpulan

Dalam panduan ini, kita mengeksplorasi lima metode berbeda untuk menghitung eksponen di Python, masing-masing menawarkan keunggulan unik. Anda dapat menggunakannya untuk berbagai skenario praktis, seperti mencari bunga majemuk, memodelkan pertumbuhan populasi, dan lainnya.

  • Operator asteris ganda (**): Sederhana dan langsung untuk penggunaan sehari-hari.
  • pow(): Serbaguna dengan trik "modulus" opsional.
  • math.pow(): Hasil presisi sebagai angka floating point.
  • np.power(): Kuat untuk menangani array dengan pengecekan error.
  • math.exp(): Alat khusus untuk menghitung nilai eksponensial.

Jika Anda ingin mengembangkan keterampilan statistik dan belajar cara mengumpulkan, menganalisis, dan menarik kesimpulan yang akurat dari data menggunakan Python, lihat kursus Introduction to Statistics in Python.

Satyam Tripathi

Penulis

Satyam Tripathi

FAQ Eksponen Python

Kapan saya harus menggunakan math.pow() alih-alih operator ** di Python?

Gunakan math.pow() saat Anda memerlukan hasil floating point yang presisi untuk tujuan ilmiah atau analisis data. Jika tujuan Anda adalah kesederhanaan dan perhitungannya tidak membutuhkan presisi floating point, operator ** sudah memadai.

Apakah Python dapat menangani eksponen negatif atau eksponen pecahan?

Ya, Python mendukung eksponen negatif dan eksponen pecahan:

  • Eksponen negatif: Gunakan operator ** atau pow() untuk menghitung kebalikan dari suatu bilangan yang dipangkatkan dengan pangkat positif.
  • Eksponen pecahan: Gunakan operator ** atau math.pow(). Perhatikan bahwa basis negatif dengan eksponen pecahan menghasilkan bilangan kompleks.
Bagaimana pemangkatan modular diimplementasikan di Python, dan mengapa efisien?

Pemangkatan modular dapat dilakukan menggunakan fungsi pow() dengan tiga argumen: pow(base, exp, mod). Ini lebih efisien dibanding menghitung (base**exp) % mod karena pow() dioptimalkan untuk angka besar, sehingga mengurangi perhitungan perantara.

Mengapa np.power() di NumPy mengembalikan error untuk eksponen negatif?

np.power() dirancang untuk komputasi array dan tidak mendukung eksponen negatif karena menyiratkan pembagian, yang tidak kompatibel dengan semua tipe array. Gunakan metode alternatif seperti ** atau pow() untuk perhitungan tersebut.

Topik

Terkait

blogs

Tutorial Korelasi di R

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai