Matrix Multiplication
Matrix multiplication क्या है
Matrix multiplication दो matrices (2D arrays) को एक नई में जोड़ता है। हर result cell पहली matrix की row, दूसरी की column लेकर, मेल खाते elements गुणा करके, और जोड़कर बनता है। यह nested loops और 2D arrays का classic अभ्यास है।
गुणा का नियम
2×2 matrices A और B को, ऊपर-बाएँ result cell है: (A की पहली row) गुणा (B की पहली column):
c[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0]
आप हर result cell को यह pattern दोहराते हैं, हर एक A की एक row को B की एक column से जोड़कर।
Java program
public class MatrixMul {
public static void main(String[] args) {
int[][] a = {{1, 2}, {3, 4}};
int[][] b = {{5, 6}, {7, 8}};
int[][] c = new int[2][2];
for (int i = 0; i < 2; i++) { // A की हर row
for (int j = 0; j < 2; j++) { // B की हर col
for (int k = 0; k < 2; k++) { // products जोड़ो
c[i][j] += a[i][k] * b[k][j];
}
}
}
for (int[] row : c) {
for (int x : row) System.out.print(x + " ");
System.out.println();
}
}
}
43 50
तीन loops: i और j result cell चुनते हैं, और k उस cell को A की row और B की column के products जोड़ता है।
Dry run
| Result cell | Row × Column | Calculation | Value |
|---|---|---|---|
| c[0][0] | A row0 · B col0 | 1*5 + 2*7 = 5+14 | 19 |
| c[0][1] | A row0 · B col1 | 1*6 + 2*8 = 6+16 | 22 |
| c[1][0] | A row1 · B col0 | 3*5 + 4*7 = 15+28 | 43 |
| c[1][1] | A row1 · B col1 | 3*6 + 4*8 = 18+32 | 50 |
हर result cell को, A की row को B की column से जोड़िए, मेल खाते elements गुणा करके जोड़िए। c[0][0] A की पहली row और B की पहली column इस्तेमाल करता है: 1*5 + 2*7 = 19।
कब मान्य है
दो matrices तभी गुणा हो सकती हैं जब पहली के columns दूसरी की rows के बराबर हों। एक m×n matrix गुणा n×p matrix m×p result देता है। अगर inner dimensions मेल न खाएँ, गुणा परिभाषित नहीं है।
आम गलतियाँ
- Result initialise न करना। Result cells products जोड़ने से पहले 0 से शुरू होने चाहिए (Java arrays यह default करते हैं)।
- गलत index क्रम।
a[i][k] * b[k][j]इस्तेमाल कीजिए — साझा indexkहै। - बेमेल dimensions। A के columns B की rows के बराबर होने चाहिए।
A×B = B×Aकी उम्मीद। Matrix multiplication commutative नहीं है।
सारांश
- हर result cell A की row का B की column से dot product है।
- तीन nested loops इस्तेमाल कीजिए: दो cell को, एक products जोड़ने को।
- मान्य सिर्फ़ तब जब A के columns B की rows के बराबर हों।
- m×n गुणा n×p matrix m×p result देता है।
- Matrix multiplication commutative नहीं है।
आगे, 2D arrays अभ्यास कीजिए Java arrays में, या nested loops Floyd's triangle में।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Matrix multiplication कैसे काम करता है?
दो matrices कब गुणा हो सकती हैं?
Matrix multiplication को तीन loops क्यों चाहिए?
क्या matrix multiplication commutative है?
A × B आमतौर पर B × A के बराबर नहीं। क्रम मायने रखता है, और कभी dimensions के आधार पर सिर्फ़ एक क्रम मान्य भी होता है।Java में matrices कैसे store होती हैं?
int[][] a। आप element को दो indexes से access करते हैं, a[row][col], और पूरी matrix process करने को rows व columns पर loop करते हैं।