Turunan mengukur laju perubahan — dan hampir semua hukum fisika ditulis dalam bahasa turunan. Pada artikel ini kita meninjau makna turunan, aturan-aturan diferensiasi, lalu menghitung turunan secara simbolik dengan SymPy dan memvisualkannya untuk dua kasus nyata: difraksi celah tunggal dan potensial Lennard-Jones.
Makna Geometris Turunan
Turunan f′(a) adalah kemiringan garis singgung kurva di titik a. Ia diperoleh dari limit kemiringan tali busur ketika jaraknya menyusut:
f'(a) = lim [ f(a + Δx) - f(a) ] / Δx
Δx→0
Aturan Diferensiasi
Dalam praktik, kita jarang memakai limit; kita memakai aturan berikut (dengan f, g fungsi dan a, b konstanta):
| Jenis fungsi | Turunan |
|---|---|
| Konstanta | d/dx (a) = 0 |
| Jumlah | d/dx (a·f + b·g) = a·f' + b·g' |
| Hasil kali | d/dx (f·g) = f'·g + g'·f |
| Hasil bagi | d/dx (f/g) = (f'·g − g'·f) / g² |
| Rantai | d/dx f(u) = (df/du)·(du/dx) |
| Pangkat | d/dx (xⁿ) = n·xⁿ⁻¹ |
| Eksponen & log | d/dx eˣ = eˣ ; d/dx ln x = 1/x |
| Trigonometri | d/dx sin x = cos x ; d/dx cos x = −sin x |
Diferensiasi Simbolik dengan SymPy
SymPy menerapkan aturan-aturan itu secara otomatis. Turunan pertama dengan diff(f, x), turunan kedua dengan diff(f, x, 2).
from sympy import symbols, diff, sin
x = symbols('x')
f = sin(x) * x**2
print(diff(f, x)) # x**2*cos(x) + 2*x*sin(x)
print(diff(f, x, 2)) # turunan kedua
Contoh 1 — Difraksi Celah Tunggal
Intensitas cahaya pada difraksi celah tunggal adalah I(φ) = I₀ · sin²φ / φ², dengan φ sudut fase. Kita ambil I₀ = 1, lalu hitung turunan pertama dan kedua secara simbolik dan plot ketiganya.
from sympy import symbols, sin, diff, lambdify
import numpy as np, matplotlib.pyplot as plt
phi = symbols('phi', real=True)
I = sin(phi)**2 / phi**2
dI = diff(I, phi)
d2I = diff(I, phi, 2)
fI = lambdify(phi, I, 'numpy')
fdI = lambdify(phi, dI, 'numpy')
fd2I= lambdify(phi, d2I,'numpy')
p = np.linspace(-10, 10, 500)
plt.plot(p, fI(p), label='I(φ)')
plt.plot(p, fdI(p), '--', label='dI/dφ')
plt.plot(p, fd2I(p),'-.', label='d²I/dφ²')
plt.legend(); plt.show()
Mengapa lambdify? Hasil diff berupa rumus SymPy. lambdify mengubahnya menjadi fungsi numerik yang bisa dihitung untuk seluruh array φ dan diplot Matplotlib. Puncak pusat pada φ = 0 (nilai limit I = 1) diapit puncak-puncak sekunder yang makin kecil.
Contoh 2 — Potensial Lennard-Jones
Potensial Lennard-Jones memodelkan energi interaksi dua atom netral terhadap jaraknya r:
V(r) = 4ε [ (σ/r)¹² − (σ/r)⁶ ]
Suku (σ/r)¹² adalah tolakan yang naik tajam saat atom berdekatan; suku −(σ/r)⁶ adalah tarikan (gaya dispersi London) yang lebih landai. Dengan ε = σ = 1:
import numpy as np, matplotlib.pyplot as plt
r = np.linspace(0.9, 3.0, 400)
V = 4*((1/r)**12 - (1/r)**6)
plt.plot(r, V); plt.xlabel('r/σ'); plt.ylabel('V/ε')
plt.show()
Gaya antar-atom: F = −dV/dr
Gaya adalah negatif turunan energi terhadap jarak. Kita cari juga jarak kesetimbangan (saat gaya nol) secara simbolik.
from sympy import symbols, diff, solve
r, eps, sig = symbols('r epsilon sigma', positive=True)
V = 4*eps*((sig/r)**12 - (sig/r)**6)
F = -diff(V, r)
print(solve(diff(V, r), r)) # [2**(1/6)*sigma]
Fisika di balik matematika. Kesetimbangan terjadi di dasar sumur potensial, yaitu saat turunan energi nol (F = 0). SymPy menyelesaikannya secara eksak: r = 21/6σ ≈ 1,122σ, dengan energi minimum V = −ε. Inilah jarak ikatan yang disukai kedua atom.
Penutup
Dengan SymPy kita menurunkan fungsi secara eksak, dan dengan lambdify + Matplotlib kita memvisualkannya. Dua contoh — difraksi dan Lennard-Jones — menunjukkan bahwa turunan bukan sekadar latihan kalkulus, melainkan alat untuk menemukan puncak intensitas, jarak kesetimbangan, dan gaya dalam sistem fisis nyata.
Ingin mengulang dasar Matplotlib & SymPy? Baca Visualisasi & Komputasi Simbolik: Matplotlib, SymPy, dan lambdify.
Catatan: seluruh contoh ditulis untuk Python 3 dengan berbagai editor seperti Spyder atau Visual Studio dan memerlukan numpy, matplotlib, serta sympy (tersedia di Anaconda). Gambar pada artikel ini dihasilkan langsung oleh kode di atas.
File Download: --File Download PDF--
