Operasi Matriks Umum
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 6 dari 66.
Matriks umum digunakan dalam matematika dan ilmu komputer. Mari kita pelajari beberapa operasi umum pada array 2D.
Jumlahkan dua matriks:
int[][] AddMatrices(int[][] a, int[][] b)
{
int rows = a.Length;
int[][] result = new int[rows][];
for (int i = 0; i < rows; i++)
{
result[i] = new int[a[i].Length];
for (int j = 0; j < a[i].Length; j++)
{
result[i][j] = a[i][j] + b[i][j];
}
}
return result;
}Transpose matriks (tukar baris dan kolom):
int[][] Transpose(int[][] matrix)
{
int rows = matrix.Length;
int cols = matrix[0].Length;
int[][] result = new int[cols][];
for (int i = 0; i < cols; i++)
{
result[i] = new int[rows];
for (int j = 0; j < rows; j++)
{
result[i][j] = matrix[j][i];
}
}
return result;
}Hitung jumlah setiap baris:
int[] RowSums(int[][] matrix)
{
int rows = matrix.Length;
int[] sums = new int[rows];
for (int i = 0; i < rows; i++)
{
int sum = 0;
for (int j = 0; j < matrix[i].Length; j++)
{
sum += matrix[i][j];
}
sums[i] = sum;
}
return sums;
}Kalikan dua matriks:
Dalam perkalian matriks, setiap elemen result[i][j] dihitung dengan mengambil baris i dari matriks pertama dan kolom j dari matriks kedua, mengalikan elemen-elemen yang bersesuaian, lalu menjumlahkan hasil perkaliannya. Secara formal: result[i][j] = sum of matrix1[i][k] * matrix2[k][j] untuk semua nilai k yang valid.
Agar ini berfungsi, jumlah kolom dalam matrix1 harus sama dengan jumlah baris dalam matrix2. Matriks hasil memiliki dimensi [matrix1.rows × matrix2.cols].
int[][] MultiplyMatrices(int[][] a, int[][] b)
{
int rows = a.Length;
int cols = b[0].Length;
int inner = b.Length;
int[][] result = new int[rows][];
for (int i = 0; i < rows; i++)
{
result[i] = new int[cols];
for (int j = 0; j < cols; j++)
{
int sum = 0;
for (int k = 0; k < inner; k++)
{
sum += a[i][k] * b[k][j];
}
result[i][j] = sum;
}
}
return result;
}Tantangan
SulitBuat method bernama multiplyMatrices yang:
- Menerima dua matriks (array bergerigi 2D) sebagai parameter: matrix1 dan matrix2
- Mengalikannya sesuai aturan perkalian matriks
- Mengembalikan matriks hasilnya
Agar perkalian matriks valid:
- Jumlah kolom dalam matrix1 harus sama dengan jumlah baris dalam matrix2
- Dimensi hasilnya adalah: [matrix1.rows × matrix2.columns]
Cara kerja perkalian matriks:
Setiap elemen pada posisi [i][j] dalam hasil dihitung dengan mengambil baris i dari matrix1 dan kolom j dari matrix2, mengalikan elemen-elemen yang bersesuaian, lalu menjumlahkan semua hasil perkalian tersebut:result[i][j] = matrix1[i][0] * matrix2[0][j] + matrix1[i][1] * matrix2[1][j] + ...
Dengan kata lain: result[i][j] = sum of (matrix1[i][k] * matrix2[k][j]) untuk setiap k.
Misalnya, jika matrix1 adalah:
[1, 2]
[3, 4]Dan matrix2 adalah:
[5, 6]
[7, 8]Maka result[0][0] = 1*5 + 2*7 = 19, result[0][1] = 1*6 + 2*8 = 22, dan seterusnya. Hasilnya seharusnya:
[19, 22]
[43, 50]Jika matriks tidak dapat dikalikan, kembalikan null.
Coba sendiri
public class MultiplyMatrices
{
// Implementasikan method MultiplyMatrices
public static int[][] multiplyMatrices(int[][] matrix1, int[][] matrix2)
{
// Tulis kodemu di sini
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1array Multidimensi
Dasar-Dasar array 2DMendeklarasikan dan Menginisialisasi array 2DMengakses Elemen array 2DPerulangan Bersarang dengan array 2Darray BergerigiOperasi Matriks UmumRangkuman: array Multidimensi4Teknik Alur Kontrol
Pengembalian DiniKlausa PenjagaPernyataan Lompatan (goto)Break dan ContinueMeratakan Percabangan Bersarang7Operator Logika Lanjutan
Evaluasi Hubung SingkatOperator Logika PercabanganPrioritas OperatorRingkasan Operator Lanjutan2Pengambilan Keputusan Tingkat Lanjut
Beberapa KondisiLogika Boolean yang KompleksPerbandingan If dan SwitchPernyataan Switch BersarangUlasan: Pengambilan Keputusan Tingkat Lanjut5Penanganan Exception
Dasar Try-CatchJenis ExceptionBeberapa Blok CatchBekerja dengan fileBlok FinallyUsing vs. Try-FinallyException KustomRingkasan: Penanganan error3Peningkatan Loop
Performa LoopIterasi yang KompleksSetiap Jenis LoopRefactoring LoopRangkuman: Loop yang Dioptimalkan6Penanganan Null
Dasar Referensi NullTipe Nilai NullablePola Pemeriksaan NullPemrograman DefensifRingkasan: Keamanan NullLatihan sendiri: Compiler C# online