Sepanjang course ini MATLAB selalu bekerja dengan angka: 0.1 dibulatkan, 1/3 berhenti di 16 digit, dan turunan hanya bisa didekati lewat selisih hingga. Ada cabang lain yang bekerja dengan simbol: x tetap x, x^2 diturunkan menjadi 2*x persis seperti di papan tulis, dan x^2 − 4 = 0 diselesaikan dengan pemfaktoran — tanpa satu pun pembulatan. Itu dunia Symbolic Math Toolbox. Chapter ini memperkenalkan alat dasarnya (sym, syms, solve, diff, int, simplify, subs) dan menutup dengan pertanyaan praktis: kapan simbolik lebih baik daripada numerik. Cakupan chapter ini:
symdansyms: membuat variabel serta angka simboliksolveuntuk persamaan aljabar eksakdiffdanint: turunan serta integral eksaksimplify,subs, dan konversidouble- Kapan memilih simbolik, kapan numerik
Dua Dunia: Numerik dan Simbolik #
Aturannya: komputasi numerik menghitung nilai (hasilnya angka dengan galat pembulatan), komputasi simbolik memanipulasi ekspresi matematis (hasilnya rumus eksak). Mekanismenya: objek simbolik menyimpan pohon ekspresi — pangkat, akar, pecahan — dan mesin aljabar menyederhanakan atau menyelesaikannya dengan aturan eksak. Perbedaan paling terlihat pada bilangan yang tidak berkesudahan: secara numerik 1/3 adalah 0.3333…16 digit; secara simbolik sym(1)/sym(3) tetap pecahan 1/3, dan vpa (variable-precision arithmetic) bisa menampilkannya 50 digit bila diminta:
angka = 1/3 % double : 0.333333333333333
sim = sym(1)/sym(3) % simbolik: 1/3 (pecahan eksak)
vpa(sim, 50) % 0.33333... sepanjang 50 digitsym dan syms: Membuat Objek Simbolik #
Aturannya: syms x mendeklarasikan variabel simbolik x langsung di workspace; sym("x") membuat objek simbolik yang sama sebagai hasil ekspresi (perlu assignment). Mekanismenya: variabel simbolik bertipe sym — bukan double — sehingga semua operasi yang menyentuhnya otomatis berubah ke mode aljabar. Perhatikan tanda kutip ganda: sejak R2026b MATLAB menghapus dukungan character vector (sym('x') versi lama kini galat), pemanggilan resminya memakai string sym("x"):
syms x a b
f = a*x^2 + b*x;
g = sym("y") + 1; % membuat simbol y lewat symSetelah syms x, ekspresi x^2/2 adalah rumus, bukan angka. Objek sym juga untuk konstanta eksak: sym(pi) menyimpan π sebagai simbol (bukan 3.14159…16 digit), sqrt(sym(2)) menyimpan √2 — keduanya siap dihitung ke presisi berapa pun lewat vpa.
solve: Persamaan Eksak #
Aturannya: solve(eqn, var) menyelesaikan persamaan simbolik terhadap variabel yang diminta; persamaan ditulis dengan operator ==. Mekanismenya: solver menerapkan aljabar dan aturan polinomial (hingga derajat empat selalu eksak; lebih tinggi bisa kembali ke bentuk akar), lalu mengembalikan vektor solusi bertipe sym:
syms x
S = solve(x^2 - 4 == 0, x) % solusi: 2 dan -2
P = solve(x^2 - 2 == 0, x) % solusi: sqrt(2) dan -sqrt(2) (eksak!)Solusi sqrt(2) tetap eksak — angka desimalnya baru muncul kalau kita minta: double(P) memberi 1.4142…, vpa(P, 30) memberi 30 digit. Sistem persamaan juga didukung: solve menerima beberapa persamaan sekaligus dan mengembalikan struktur berisi tiap variabel.
diff dan int: Kalkulus Eksak #
Aturannya: diff(f, var) menghitung turunan simbolik dan int(f, var) integral (tak tentu); int(f, var, a, b) menghitung integral tentu secara eksak. Mekanismenya: mesin menerapkan aturan turunan/integral pada pohon ekspresi — hasil berupa rumus baru bertipe sym, persis seperti hasil kerja tangan:
syms x
f = x^2;
df = diff(f, x) % 2*x (turunan eksak)
F = int(f, x) % x^3/3 (integral tak tentu)
I = int(f, x, 0, 3) % 9 (integral tentu eksak)Bandingkan dengan chapter Numerical Precision: pendekatan numerik selisih hingga memberi turunan f'(3) dengan galat pembulatan, dan trapz memberi integral 9.00005 (galat metode). Pendekatan simbolik tidak punya kedua galat itu — hasil int(f, x, 0, 3) memang 9, bukan 9.00005.
simplify dan subs #
Aturannya: simplify(expr) meruntuhkan ekspresi ke bentuk paling sederhana; subs(expr, var, nilai) mengganti variabel dengan nilai atau ekspresi lain; double(...) mengonversi hasil simbolik ke angka untuk dipakai komputasi numerik. Mekanismenya: simplify mencoba aturan-aturan aljabar dan trigonometri sampai bentuk berhenti memendek; subs berjalan pada pohon ekspresi tanpa menghitung apa pun:
syms x
simplify(sin(x)^2 + cos(x)^2) % 1 (identitas trigonometri)
subs(diff(x^2, x), x, 3) % 6 (ganti x = 3 pada 2*x)
double(ans) % konversi ke double: 6Rantai subs → double adalah jembatan standar dua dunia: selesaikan secara simbolik sekali, evaluasi secara numerik berkali-kali — idiom yang nanti berguna saat kita membangun fungsi dari rumus simbolik lewat matlabFunction.
Verifikasi Numerik #
Karena kode toolbox tidak berjalan di lingkungan uji Octave, berkas contoh.m chapter ini memverifikasi klaim hasil eksak di atas dengan operasi numerik dasar — pola yang sebaiknya jadi kebiasaan saat kita memakai hasil simbolik di pipeline numerik:
x0 = 3; h = 0.5;
dNumerik = ((x0 + h)^2 - (x0 - h)^2) / (2 * h);
fprintf('turunan numerik : %.10g\n', dNumerik);
fprintf('turunan eksak : %d\n', 2 * x0);
fprintf('cocok : %d\n', abs(dNumerik - 2*x0) < 1e-12);
r = sort(roots([1 0 -4]));
fprintf('akar : %g %g\n', r);
fprintf('akar valid : %d\n', all(abs(r.^2 - 4) < 1e-12));Output yang Dihasilkan:
turunan numerik : 6
turunan eksak : 6
cocok : 1
akar : -2 2
akar valid : 1Selisih pusat turunan x^2 di x = 3 jatuh tepat pada nilai eksak 6 (dengan h = 0.5, seluruh nilai antara eksak di biner), dan roots menemukan kembali akar ±2 dari x^2 − 4 = 0 — dua kecocokan independen terhadap jawaban simbolik. Berkas lengkapnya juga memverifikasi integral tentu (trapz memberi 9.000050, galat 5.00e-05 dari nilai eksak 9) dan identitas sin² + cos² = 1 pada tiga titik.
Kapan Simbolik, Kapan Numerik #
| Situasi | Pilihan | Alasan |
|---|---|---|
| Rumus dibutuhkan sebagai hasil akhir (laporan, derivasi) | simbolik | jawaban berupa ekspresi, bukan angka |
| Evaluasi jutaan titik (simulasi, plotting) | numerik | simbolik lambat untuk evaluasi massal |
| Verifikasi program numerik | simbolik | solusi eksak = pembanding bebas galat |
| Sistem besar sparse, ODE panjang | numerik | algoritma iteratif efisien memori & waktu |
| Konstanta irasional ke presisi tinggi | vpa | presisi berapa pun sesuai permintaan |
Aturan praktisnya: selesaikan kecil secara simbolik untuk mendapatkan struktur jawaban, lalu jalankan besar secara numerik. Simbolik memberi kepastian; numerik memberi skala.
Ringkasan #
Symbolic Math Toolbox menambah dunia eksak ke MATLAB: syms/sym membuat variabel dan konstanta simbolik, solve menyelesaikan persamaan lewat aljabar, diff/int melakukan kalkulus eksak, dan simplify/subs/double menjadi jembatan antara rumus dan angka. Simbolik unggul ketika rumus itu sendiri jawabannya atau saat memverifikasi metode numerik; numerik tetap raja untuk skala besar. Section Operasi Matematika kita tutup di sini — dari operator dasar hingga presisi dan eksakta, perangkatnya kini lengkap.