Panduan Lengkap Turunan Numerik: Konsep, Rumus Beda Hingga, dan Contoh Python
Dalam kalkulus, kita terbiasa mencari turunan fungsi secara analitik. Misalnya, jika diketahui \(f(x) = x^2\), maka turunannya pasti \(f'(x) = 2x\). Mudah, bukan?
Namun, di dunia nyata (engineering, sains data, pemodelan fisika), kita sering menghadapi dua masalah utama:
- Fungsi Sangat Rumit: Fungsi yang tidak mungkin atau sangat sulit diturunkan secara manual.
- Data Diskrit: Kita tidak memiliki fungsinya, melainkan hanya sekumpulan data hasil pengamatan (tabulasi data).
Di sinilah Turunan Numerik berperan. Komputer tidak memahami konsep "limit mendekati nol", tetapi komputer sangat cepat menghitung operasi aritmatika dasar. Kita mengubah konsep limit tersebut menjadi hitungan selisih (beda) menggunakan langkah kecil yang disebut \(h\).
Konsep Dasar: Hampiran Selisih (Finite Difference)
Definisi turunan secara kalkulus adalah:
$$f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}$$Dalam metode numerik, kita tidak mengambil \(h \to 0\), melainkan mengambil nilai \(h\) yang sangat kecil (misalnya 0.1, 0.01, atau 0.001).
Ada tiga pendekatan utama untuk menghitung turunan pertama menggunakan Deret Taylor, yaitu:
1. Selisih Maju (Forward Difference)
Metode ini menggunakan titik data saat ini (\(x_i\)) dan titik data di depannya (\(x_{i+1}\)). Metode ini biasanya digunakan jika kita menghitung turunan di awal rentang data.
$$f'(x_i) \approx \frac{f(x_{i+1}) - f(x_i)}{h}$$
2. Selisih Mundur (Backward Difference)
Kebalikan dari selisih maju, metode ini menggunakan titik data saat ini (\(x_i\)) dan titik data sebelumnya (\(x_{i-1}\)). Cocok digunakan untuk menghitung turunan di ujung akhir data.
$$f'(x_i) \approx \frac{f(x_i) - f(x_{i-1})}{h}$$
3. Selisih Pusat (Central Difference)
Metode ini memanfaatkan titik sebelum (\(x_{i-1}\)) dan sesudah (\(x_{i+1}\)), tanpa melibatkan titik \(x_i\) itu sendiri secara langsung dalam pembilang. Secara geometris, ini adalah rata-rata dari kemiringan dua titik di sekeliling \(x\).
$$f'(x_i) \approx \frac{f(x_{i+1}) - f(x_{i-1})}{2h}$$
Contoh Kasus Perhitungan Manual
Mari kita coba hitung turunan pertama dari fungsi \(f(x) = e^x\) pada titik \(x = 1\) dengan langkah \(h = 0.1\).
- Nilai Sebenarnya (Analitik): \(f'(x) = e^x \rightarrow f'(1) = e^1 \approx 2.71828\)
- Data yang dibutuhkan:
- \(x_{i-1} = 0.9 \rightarrow f(0.9) = e^{0.9} \approx 2.45960\)
- \(x_i = 1.0 \rightarrow f(1.0) = e^{1.0} \approx 2.71828\)
- \(x_{i+1} = 1.1 \rightarrow f(1.1) = e^{1.1} \approx 3.00417\)
1. Hitungan Selisih Maju:
\(f'(1) \approx \frac{3.00417 - 2.71828}{0.1} = 2.8589\) (Error cukup besar)
2. Hitungan Selisih Mundur:
\(f'(1) \approx \frac{2.71828 - 2.45960}{0.1} = 2.5868\) (Error cukup besar)
3. Hitungan Selisih Pusat:
\(f'(1) \approx \frac{3.00417 - 2.45960}{2(0.1)} = \frac{0.54457}{0.2} = 2.72285\) (Sangat mendekati nilai asli 2.71828!)
Implementasi Kode Python
Untuk Anda yang mengambil mata kuliah Metode Numerik atau sedang belajar computational science, berikut adalah implementasi sederhana menggunakan Python tanpa library rumit.
import numpy as np
def fungsi(x):
return np.exp(x) # Contoh fungsi f(x) = e^x
def turunan_numerik(x, h, metode):
if metode == 'maju':
return (fungsi(x + h) - fungsi(x)) / h
elif metode == 'mundur':
return (fungsi(x) - fungsi(x - h)) / h
elif metode == 'pusat':
return (fungsi(x + h) - fungsi(x - h)) / (2 * h)
else:
return None
# Parameter
x_titik = 1.0
h_step = 0.1
# Hitung
hasil_maju = turunan_numerik(x_titik, h_step, 'maju')
hasil_pusat = turunan_numerik(x_titik, h_step, 'pusat')
nilai_asli = np.exp(1.0)
print(f"Nilai Asli (Analitik) : {nilai_asli:.5f}")
print(f"Metode Selisih Maju : {hasil_maju:.5f} (Error: {abs(hasil_maju - nilai_asli):.5f})")
print(f"Metode Selisih Pusat : {hasil_pusat:.5f} (Error: {abs(hasil_pusat - nilai_asli):.5f})")
Kesimpulan
Dari pembahasan di atas, kita bisa menyimpulkan:
- Turunan numerik mengubah persoalan kalkulus (kontinu) menjadi aritmatika (diskrit).
- Semakin kecil nilai \(h\), hasil umumnya semakin akurat (hingga batas round-off error komputer).
- Metode Selisih Pusat memberikan akurasi terbaik dibandingkan selisih maju atau mundur untuk jumlah komputasi yang sebanding.
Semoga bermanfaat! Jangan lupa bagikan post ini jika membantu.
Comments
Post a Comment
terima kasih