Sepanjang section ini kita mengumpulkan perkakas: fzero untuk akar, trapz dan integral untuk luas, gradient untuk turunan, interp1 untuk nilai antar titik, polyfit untuk model, fminbnd untuk minimum. Masalah baru muncul ketika semuanya berdiri di depan kita: mana yang dipakai? Memilih metode numerik yang tepat menentukan tiga hal sekaligus — presisi hasil, waktu komputasi, dan keandalan kode. Chapter penutup ini merangkum kerangka keputusan praktis lalu mendemokannya tuntas pada satu studi kasus: peluruhan karbon-14.

Tiga Pertanyaan Sebelum Memilih #

Setiap keputusan metode numerik bermuara pada tiga pertanyaan sederhana. Pertama, presisi seperti apa yang benar-benar dibutuhkan? Pengukuran lapangan dengan galat 5% tidak memerlukan integrator orde tinggi. Kedua, seberapa besar datanya? Metode yang cepat untuk 100 titik bisa timpang untuk 10 juta titik. Ketiga, seberapa mahal fungsi dievaluasi? Simulasi satu evaluasi bisa saja memakan menit — di situ grid search 4001 titik jelas boros, sementara fminbnd yang hanya mengevaluasi belasan kali menjadi satu-satunya pilihan masuk akal.

Diagram di atas adalah alur kerja, bukan hukum mati. Putaran G-I di bagian bawah adalah inti uji konvergensi: jika galat masih besar, perhalus diskretisasi lalu ukur ulang — jangan berganti metode sebelum presisi saat ini diukur.

Peta Metode per Masalah #

MasalahMetode manualBuiltin MATLABCatatan pemakaian
Akar fungsibisection, Newton-Raphsonfzerofzero butuh bracket atau tebakan awal
Integraltrapezoid, Simpsontrapz, integraltrapz untuk data tabel; integral untuk function handle
Turunanforward/backward differencegradientcentral difference bawaan gradient berorde O(h^2)
Interpolasilinear manualinterp1, interp2pchip pilihan aman untuk kubik
Fittingleast squares manualpolyfit + polyvalnonlinear: fminsearch, toolbox: fit
Minimumgrid searchfminbnd, fminsearchconstraint: fmincon (Optimization Toolbox)

Kolom metode manual bukan hiasan: saat berhitung di lingkungan tanpa MATLAB, atau saat belajar mekanisme di balik builtin, metode manual itulah pegangan. Kolom builtin adalah default produksi — diuji, stabil, dan biasanya lebih cepat daripada kode tulisan sendiri.

Aturan Praktis #

Empat aturan yang menyelamatkan proyek numerik dari galat senyap:

  1. Mulai dari builtin. Tulis metode manual hanya untuk belajar atau saat builtin tidak tersedia; hasil builtin lalu dijadikan pembanding untuk implementasi manual.
  2. Verifikasi dengan solusi analitik. Sebelum memakai metode pada masalah berat, uji pada kasus kecil yang jawabannya diketahui persis — integral polinomial, akar kuadrat yang jelas, setengah umur peluruhan.
  3. Uji konvergensi h dan N. Jalankan metode pada dua grid (misalnya h dan h/10), lalu bandingkan: galat trapezoid harus turun sekitar 100 kali lipat karena metode ini berorde O(h^2). Jika galat tidak turun, ada bug atau metode tidak cocok.
  4. Dokumentasikan toleransi. Catat toleransi yang dipakai (TolX, ambang konvergensi) dan galat akhir yang terukur — angka tanpa konteks presisi bukanlah hasil ilmiah.

Studi Kasus: Peluruhan Karbon-14 #

Satu masalah, empat metode. Modelnya sederhana: N(t) = N0 * exp(-lambda*t) dengan lambda = ln(2)/5730 per tahun — setengah umur karbon-14 tepat 5730 tahun, dan integral turunannya pun punya bentuk analitik. Kita kerjakan akar, integral, turunan, dan fitting sekaligus lalu membandingkan semuanya dengan jawaban eksak:

matlab
lambda = log(2)/5730;
N0 = 100;
N = @(t) N0*exp(-lambda*t);

tSetengah = fzero(@(tt) N(tt) - 50, [1 20000]);
fprintf('setengah umur fzero   : %.6f tahun\n', tSetengah);
fprintf('setengah umur analitik: %.6f tahun\n', log(2)/lambda);

t100 = 0:100:20000;                      % grid kasar, h = 100
t10  = 0:10:20000;                       % grid halus, h = 10
Ieksak   = N0/lambda*(1 - exp(-lambda*20000));
Itrap100 = trapz(t100, N(t100));
Itrap10  = trapz(t10,  N(t10));
Iadapt   = integral(N, 0, 20000);
fprintf('integral eksak        : %.4f\n', Ieksak);
fprintf('trapz h=100           : %.4f (galat %.4f)\n', ...
        Itrap100, Itrap100 - Ieksak);
fprintf('trapz h=10            : %.4f (galat %.4f)\n', ...
        Itrap10, Itrap10 - Ieksak);
fprintf('integral adaptif      : %.4f\n', Iadapt);

Output yang Dihasilkan:

text
setengah umur fzero   : 5730.000000 tahun
setengah umur analitik: 5730.000000 tahun
integral eksak        : 753109.0139
trapz h=100           : 753118.1976 (galat 9.1837)
trapz h=10            : 753109.1057 (galat 0.0918)
integral adaptif      : 753109.0139

Mari kita bedah baris-baris kode di atas:

  1. Baris 5 (tSetengah = fzero(@(tt) N(tt) - 50, ...)): mencari akar fungsi “jumlah tersisa dikurangi 50 gram” — akarnya adalah waktu ketika sampel tinggal setengahnya; bracket [1, 20000] menjamin tanda fungsi berbeda di kedua ujung.
  2. Baris 9-13 (t100 ... Itrap10): integrasi trapezoid pada dua grid; membandingkan keduanya adalah uji konvergensi langsung — galat 9.1837 runtuh menjadi 0.0918 ketika h dibagi 10, persis rasio 100 yang diprediksi metode berorde O(h^2).
  3. Baris 14 (Iadapt = integral(N, 0, 20000)): kuadratur adaptif menyamai empat digit pertama jawaban eksak; beban berpikir tentang h diserahkan ke algoritma.

Dua pekerjaan terakhir studi kasus memakai gradient dan polyfit, keduanya selesai di berkas contoh.m: turunan dN/dt dihitung dengan central difference pada grid h = 100 (galat maksimum 7.29e-05 — konsisten orde O(h^2)), dan slope polyfit pada log(N) vs t mengembalikan -lambda sehingga setengah umur hasil fitting terbaca 5730.000000 tahun. Satu masalah, lima jalur, satu kesimpulan: semua metode sampai di tujuan yang sama dengan harga dan presisi berbeda, dan justru perbedaan itulah yang kita ukur.

Berkas contoh.m pada bagian bawah halaman memuat studi kasus lengkap: setengah umur via fzero, integral tiga cara (trapz dua grid dan integral adaptif), turunan via gradient, dan estimasi slope via polyfit — setiap langkah disertai pencetakan galat terhadap jawaban analitik.

Ringkasan #

Pemilihan metode numerik mengikuti tiga pertanyaan: kebutuhan presisi, ukuran data, dan biaya evaluasi fungsi. Peta keputusannya: solusi analitik dulu, builtin MATLAB kemudian, metode manual terakhir. Empat aturan praktis menjaga kualitas: mulai dari builtin, verifikasi dengan kasus analitik, uji konvergensi h/N, dan dokumentasikan toleransi beserta galat akhir. Studi kasus karbon-14 menunjukkan alur lengkapnya — model, hitung, bandingkan, laporkan galat — pola yang berlaku untuk masalah numerik apa pun yang akan kita kerjakan selanjutnya.