BT16: Cộng và nhân hai ma trận
1. Yêu cầu
Viết chương trình C# thực hiện cộng và nhân hai ma trận.
Giải thích:
Trong toán học, một ma trận là một mảng hình chữ nhật của các số, các ký tự hoặc các biểu thức. Mỗi phần tử của ma trận có thể truy cập thông qua chỉ số của chúng.
- Cộng trừ ma trận: chỉ có thể thực hiện được với ma trận cùng kích thước của các phần tử ở vị trí tương ứng của nhau, xem ví dụ:
A (m x n) | B (m x n) | A + B (m x n) | C (m x n) | ||||||||
1 | 3 | 1 | 0 | 0 | 5 | 1+0 | 3+0 | 1+5 | 1 | 3 | 6 |
1 | 0 | 0 | 7 | 5 | 0 | 1+7 | 0+5 | 0+0 | 8 | 5 | 0 |
- Nhân hai ma trận: chỉ có thể được nhân được với nhau khi số lượng cột ở ma trận đầu tiên bằng số lượng hàng ở ma trận thứ hai. Nhân các phần tử của mỗi hàng ma trận thứ nhất với các phần tử của mỗi cột ma trận thứ hai, xem ví dụ:
A (m x n) | B (n x p) | A X B | C (m x p) | ||||
2 | -3 | 1 | 0 | (2)(1) + (-3)(-2) | (2)(0) + (-3)(1) | 8 | -3 |
4 | 5 | -2 | 1 | (4)(1) + (5)(-2) | (4)(0) + (5)(1) | -6 | 5 |
6 | 0 | (6)(1) + (0)(-2) | (6)(0) + (0)(1) | 6 | 0 |
2. Thuật toán
Start
Declare Ma trận A, B, C
Declare các biến
Read Kích thước ma trận A
Read Ma trận A
PrintMatrix A
Read Kích thước ma trận B
Read Ma trận B
PrintMatrix B
AddMatrix(A, B, C, rowmax, colmax)
PrintMatrix C
MulMatrix(A, B, C, rowmaxA, rowmaxB, colmaxB)
PrintMatrix C
Stop
/*In ra ma trận*/
PrintMatrix(M, rowmax, colmax)
Start
loop i=0 to rowmax-1
loop j=0 to colmax-1
Print M[i][j]
end loop
end loop
Stop
/*Phương thức cộng hai ma trận*/
AddMatrix(A, B, C, rowmax, colmax)
Start
loop i=0 to rowmax-1
loop j=0 to colmax-1
C[i][j] = A[i][j] + B[i][j];
end loop
end loop
Stop
/*Phương thức nhân hai ma trận*/
MulMatrix(A, B, C, rowmaxA, rowmaxB, colmaxB)
Start
loop i=0 to rowmaxA -1
loop j=0 to colmaxB -1
C[i][j] = 0;
loop k=0 to rowmaxB - 1
C[i][j] = C[i][j] + A[i][k] * B[k][j];
end loop
end loop
end loop
Stop