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