C# İle İki Matrisin Çarpımı
Bugün bizim okulda matematik sınavında gözetmendim. Sorulardan biri iki matrisin çarpımı ile ilgili olunca, ben de bu yazıyı yazayım dedim :)
Matris ve matris işlemleri ile ilgili bilgi için buraya göz atabilirsiniz.
Bu yazının konusu iki matrisin çarpımı olduğu için, sadece bu işlemi C# nasıl yapabileceğimizi göstermek istedim.
Matematikteki matrisin C# taki karşılığı DİZİ (Arrays) lerdir.
2x2 lik A matrisinin C# taki karşılığı şöyledir:
int[,] A = { {2, -1}, {0, 5} };
veya
var A = new int[,] { {2, -1}, {0, 5} };
Çarpım işlemi şu şekilde tanımlanmaktadır:
Örnek:
Bilmeyenler için bir bilgi daha: İki matrisi çarpabilmek için; 1. matrisin sütun sayısı ile ikinci satırın satır sayısı eşit olmalıdır.
Artık C# kodumuza geçebiliriz:
int[,] A = { { 1, 0, 2 }, { -1, 3, 1 } }; int[,] B = { { 3, 1 }, { 2, 1 }, { 1, 0 } }; int[,] C = new int[A.GetUpperBound(0) + 1, B.GetUpperBound(1) + 1]; // A nın satır sayısı kadar for (int i = 0; i <= A.GetUpperBound(0); i++) { // B nin sütun sayısı kadar for (int j = 0; j <= B.GetUpperBound(1); j++) { int toplam = 0; // A nın sütun sayısı kadar // (ya da B nin satır sayısı) for (int k = 0; k <= A.GetUpperBound(1); k++) { toplam += A[i, k] * B[k, j]; } C[i, j] = toplam; } }
Bu kadar.
Sonuç:
|
|
|
Herkese kolay gelsin.
Dipnot:
GetUpperBound(x) metodu, ilgili dizinin x. boyutundaki son elemanın indis sayısını verir.
Örnek:
A dizisi için;
A.GetUpperBound(0) = 1
A.GetUpperBound(1) = 2
olur.
#matris #çarpım #array #dizi