Aritmetika skalar dan matriks

Perilaku operator aritmetika pada skalar dan matriks sebagai dasar operasi berdimensi.

Daftar isi

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.

matlab Lima operator aritmetika pada dua skalar
a = 12;
b = 5;
a + b
a - b
a * b
a / b
a ^ 2
text Keluaran
ans = 17
ans = 7
ans = 60
ans = 2.4000
ans = 144

Keluaran 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.

matlab Skalar beroperasi pada setiap elemen
A = [1 2; 3 4];
A + 5
2 * A
10 - A
text Keluaran
ans =

   6   7
   8   9

ans =

   2   4
   6   8

ans =

   9   8
   7   6

Pernyataan 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 P×QP \times Q hanya sah bila banyak kolom PP sama dengan banyak baris QQ, dan elemen hasil dihitung sebagai

cij=∑k=1npik qkj. c_{ij} = \sum_{k=1}^{n} p_{ik}\, q_{kj}.
matlab Perkalian matriks 2 x 3 dengan 3 x 2
P = [1 2 3; 4 5 6];
Q = [7 8; 9 10; 11 12];
C = P * Q
text Keluaran
C =

    58    64
   139   154

Matriks PP berukuran 2×32 \times 3 dan QQ berukuran 3×23 \times 2, sehingga hasilnya berukuran 2×22 \times 2. Nilai 58 pada posisi pertama diperoleh dari 1×7+2×9+3×111 \times 7 + 2 \times 9 + 3 \times 11, yaitu baris pertama PP dikalikan kolom pertama QQ lalu dijumlahkan. Skema yang sama berlaku pada setiap posisi hasil dan menjelaskan mengapa dimensi dalam harus cocok: baris PP dan kolom QQ 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.

matlab aritmetika.m
% 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);
text Keluaran
12 + 5 = 17
12 / 5 = 2.4
A + 5:
   6   7
   8   9
2 * A:
   2   4
   6   8
P * Q:
    58    64
   139   154

Skrip 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.

matlab Perkalian dengan dimensi tidak cocok
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'
text Keluaran
operator *: nonconformant arguments (op1 is 2x3, op2 is 1x3)
hasil =

   14
   32

Pesan tersebut melaporkan operan pertama berukuran 2×32 \times 3 dan operan kedua 1×31 \times 3, sehingga tiga kolom PP tidak dapat dipasangkan dengan satu baris vv. Perbaikannya mengikuti syarat dimensi: v′v' berukuran 3×13 \times 1 cocok dengan tiga kolom PP, dan hasilnya menjadi vektor kolom 2×12 \times 1. 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.
matlab Kontras perkalian matriks dan perkalian per elemen
A = [1 2; 3 4];
B = [10 20; 30 40];
A * B
A .* B
text Keluaran
ans =

    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#