Operator aritmetika pada MATLAB bekerja dengan aturan dimensi yang ketat, dan aturan itu menjadi dasar bagi seluruh komputasi numerik di dalamnya. Topik ini membahas perilaku penjumlahan, pengurangan, perkalian, pembagian, dan perpangkatan pada bilangan tunggal, penyebaran skalar ke seluruh elemen matriks, syarat dimensi perkalian matriks, serta cara membaca pesan error ketika dimensi tidak cocok. Materi ini menjadi fondasi sebelum operasi per elemen dibahas lebih dalam pada modul vektorisasi.
Operator aritmetika pada skalar#
Kelima operator dasar bekerja pada bilangan tunggal sebagaimana pada kalkulator biasa. Penjumlahan menggunakan +, pengurangan -, perkalian *, pembagian /, dan perpangkatan ^. Kedua operan dapat dituliskan langsung atau melalui variabel, dan hasil pernyataan tanpa titik koma ditampilkan sebagai ans.
a = 12;
b = 5;
a + b
a - b
a * b
a / b
a ^ 2ans = 17
ans = 7
ans = 60
ans = 2.4000
ans = 144Keluaran tersebut sesuai hitungan manual, dengan satu perilaku yang perlu dicatat: pembagian 12 oleh 5 menghasilkan 2.4000 karena semua bilangan di MATLAB bermula sebagai bilangan pecahan kelas double. Tidak ada pembulatan ke bilangan bulat seperti pada bahasa yang memisahkan tipe bilangan bulat dan pecahan, sehingga 1/2 bernilai 0.5 dan bukan nol.
Urutan pengerjaan mengikuti kaidah baku: perpangkatan dikerjakan lebih dahulu, disusul perkalian dan pembagian, lalu penjumlahan dan pengurangan. Sebagai contoh, 2 + 3 * 4 bernilai 14 karena perkalian diselesaikan lebih dahulu, sedangkan (2 + 3) * 4 bernilai 20 karena tanda kurung memaksa penjumlahan naik lebih dulu. Ketika ragu, menuliskan tanda kurung secara eksplisit lebih aman daripada menghafal seluruh tabel prioritas, dan kode yang dibaca kembali pada hari berikutnya tetap mudah ditafsirkan.
Penyebaran skalar ke seluruh elemen#
Ketika salah satu operan berupa skalar dan operan lainnya berupa matriks, operasi dijalankan antara skalar dan setiap elemen matriks. Perilaku ini disebut penyebaran skalar (scalar expansion) dan berlaku untuk penjumlahan, pengurangan, perkalian, serta pembagian.
A = [1 2; 3 4];
A + 5
2 * A
10 - Aans =
6 7
8 9
ans =
2 4
6 8
ans =
9 8
7 6Pernyataan A + 5 menambahkan lima ke setiap elemen, 2 * A menggandakan setiap elemen, dan 10 - A mengurangkan setiap elemen dari sepuluh sehingga urutan operan tetap berlaku. Penyebaran skalar menjadi alat baku untuk kalibrasi data, misalnya menggeser seluruh hasil pengukuran dengan nilai koreksi atau mengubah satuan derajat Celsius ke Fahrenheit dengan C * 1.8 + 32. Tanpa penyebaran, pekerjaan seperti ini menuntut perulangan eksplisit atas setiap elemen.
Penyebaran berlaku pula ketika skalar menjadi penyebut, sehingga A / 2 membagi setiap elemen dengan dua. Batasnya perlu dicatat: operator yang bekerja pada dua matriks sekaligus, seperti perkalian matriks dan perpangkatan matriks, tidak tersebar dan mengikuti aturan aljabarnya sendiri. Penyebaran hanya terjadi ketika salah satu operan berupa skalar tunggal, dan syarat sesederhana itulah yang membuat bentuk-bentuk di atas aman digunakan untuk seluruh isi data.
Perkalian matriks dengan dimensi yang cocok#
Perkalian antara dua matriks menggunakan aturan baris demi kolom dari aljabar linear, bukan perkalian elemen per elemen. Perkalian hanya sah bila banyak kolom sama dengan banyak baris , dan elemen hasil dihitung sebagai
P = [1 2 3; 4 5 6];
Q = [7 8; 9 10; 11 12];
C = P * QC =
58 64
139 154Matriks berukuran dan berukuran , sehingga hasilnya berukuran . Nilai 58 pada posisi pertama diperoleh dari , yaitu baris pertama dikalikan kolom pertama lalu dijumlahkan. Skema yang sama berlaku pada setiap posisi hasil dan menjelaskan mengapa dimensi dalam harus cocok: baris dan kolom harus sama panjangnya agar keduanya dapat dikalikan pasangan demi pasangan.
Ketiga kelompok operasi pada topik ini dapat dirangkum menjadi satu skrip utuh yang menampilkan setiap hasil secara berurutan.
% aritmetika.m: aritmetika skalar, penyebaran skalar, dan perkalian matriks
a = 12;
b = 5;
fprintf('%d + %d = %d\n', a, b, a + b);
fprintf('%d / %d = %g\n', a, b, a / b);
A = [1 2; 3 4];
fprintf('A + 5:\n');
disp(A + 5);
fprintf('2 * A:\n');
disp(2 * A);
P = [1 2 3; 4 5 6];
Q = [7 8; 9 10; 11 12];
fprintf('P * Q:\n');
disp(P * Q);12 + 5 = 17
12 / 5 = 2.4
A + 5:
6 7
8 9
2 * A:
2 4
6 8
P * Q:
58 64
139 154Skrip tersebut menggunakan fprintf dengan penentu %g agar hasil pembagian tampil ringkas sebagai 2.4 tanpa angka nol penutup. Pola laporan berlabel seperti ini menjaga setiap keluaran tetap mudah dibaca ketika rangkaian perhitungan menjadi panjang.
Kesalahan dimensi dan cara membacanya#
Ketika dimensi dalam tidak cocok, MATLAB menolak pernyataan dengan pesan error alih-alih menghasilkan nilai keliru. Pesan itu memuat ukuran kedua operan sehingga penyebabnya dapat dibaca langsung. Contoh berikut menggunakan pola try/catch agar skrip tetap selesai dan pesannya tercetak ke layar.
P = [1 2 3; 4 5 6];
v = [1 2 3];
try
C = P * v;
disp(C)
catch e
disp(e.message)
end
hasil = P * v'operator *: nonconformant arguments (op1 is 2x3, op2 is 1x3)
hasil =
14
32Pesan tersebut melaporkan operan pertama berukuran dan operan kedua , sehingga tiga kolom tidak dapat dipasangkan dengan satu baris . Perbaikannya mengikuti syarat dimensi: berukuran cocok dengan tiga kolom , dan hasilnya menjadi vektor kolom . Kasus seperti ini menunjukkan bahwa operator transpose sering menjadi kunci penyelesaian ketidakcocokan dimensi.
Kesalahan umum#
- Menggunakan perkalian matriks untuk maksud per elemen. Operator
*menjalankan aturan baris demi kolom, sedangkan operator bertitik.*mengalikan elemen yang seposisi. Pada matriks persegi, keduanya sama-sama berjalan tanpa error tetapi hasilnya berbeda, sebagaimana kontras berikut. Kekeliruan ini lolos secara diam-diam dan hanya dapat dicegah dengan memastikan maksud operasi sebelum memilih operator.
A = [1 2; 3 4];
B = [10 20; 30 40];
A * B
A .* Bans =
70 100
150 220
ans =
10 40
90 160- Mengharapkan pembagian bilangan bulat. Perpangkatan dan pembagian bekerja pada bilangan pecahan, sehingga 1/2 bernilai 0.5 dan bukan nol seperti pada bahasa dengan tipe bilangan bulat. Kebiasaan dari bahasa tersebut perlu ditinggalkan sejak awal agar hasil perhitungan tidak mengejutkan.
- Melupakan urutan operan. Penyebaran skalar menjaga makna operan, sehingga 10 - A berbeda dari A - 10. Perkalian matriks juga tidak komutatif, dan menukar kedua operan umumnya menghasilkan matriks yang berbeda atau error dimensi.
Ringkasan#
- Lima operator dasar bekerja pada skalar tanpa pembulatan karena semua bilangan bermula sebagai kelas double.
- Skalar yang dipasangkan dengan matriks tersebar ke seluruh elemen untuk penjumlahan, pengurangan, perkalian, dan pembagian.
- Perkalian matriks mengikuti aturan baris demi kolom dan menuntut banyak kolom operan pertama sama dengan banyak baris operan kedua.
- Ketidaksamaan dimensi dilaporkan sebagai error yang memuat ukuran kedua operan, dan operator bertitik untuk operasi per elemen dibahas pada modul vektorisasi.
Referensi#
- Array vs. Matrix Operations — MathWorks — Panduan resmi perbedaan operasi array dan operasi matriks.
- mtimes, * — MathWorks — Rujukan operator perkalian matriks beserta syarat dimensinya.
- mpower, ^ — MathWorks — Rujukan operator perpangkatan pada skalar dan matriks.