Phép nhân ma trận
Bây giờ thủ tục của phép nhân ma trận được thảo luận. Phép nhân ma trận chỉ có thể được thực hiện nếu nó thỏa mãn một số điều kiện. Giả sử hai ma trận là P và Q, và kích thước của chúng là P (a x b) và Q (z x y), ma trận kết quả có thể được tìm thấy khi và chỉ khi b =x. Khi đó, bậc của ma trận kết quả R sẽ là (m x q).
Thuật toán
Ma trậnmatrixMultiply(P, Q): Assume dimension of P is (a x b), dimension of Q is (z x y) Begin if b is not same as z, then exit otherwise define R matrix as (a x y) for i in range 0 to a - 1, do for j in range 0 to y – 1, do for k in range 0 to z, do R[i, j] = R[i, j] + (P[i, k] * Q[k, j]) done done done End
Chuẩn hóa ma trận
Suppose we have a 2x3 matrix: 4 5 6 1 2 3 The normalized matrix would be: 4/sqrt(pow(5,2) + pow(6,2)) 5/sqrt(pow(5,2) + pow(6,2)) 6/sqrt(pow(5,2) + pow(6,2)) 1/sqrt(pow(2,2) + pow(3,2)) 2/sqrt(pow(2,2) + pow(3,2)) 3/sqrt(pow(2,2) + pow(3,2))
Ví dụ
#include <stdio.h> #include <math.h> int main() { int row, col, row1, col1; int assignMatrix[50][50], rowAdd[100] = {0}; long long int a, square[50] = {0}; double norm[50][50], k; printf("Enter size of a matrix\n"); scanf("%d %d", &row, &col); printf("Enter matrix of size %dX%d\n", row, col); for ( row1 = 0; row1 < row; row1++) { for (col1 = 0; col1 < col; col1++) { scanf("%d", &assignMatrix[row1][col1]); } } printf("\nrows: %d cols: %d elements:\n",row,col); for( row1 = 0; row1 < row; row1++) { for( col1 = 0; col1 < col; col1++) { printf("%d ", assignMatrix[row1][col1]); } printf("\n"); } for (row1 = 0; row1 < row; row1++) { for (col1 = 1; col1 < col; col1++) { a = assignMatrix[r][c]; square[row1] += a * a; } printf("Sum of squares of row %d: %lld\n",row1,square[row1]); } for ( row1 = 0; row1 < row; row1++ ) { k = 1.0 / sqrt(square[row1]); for( col1 = 0; col1 < col; col1++ ) { norm[row1][col1] = k * assignMatrix[row1][col1] ; } } printf("\nNormalized Matrix:\n"); for( row1 = 0; row1 < row; row1++) { for( col1 = 0; col1 < col; col1++) { printf("%.3lf ", norm[row1][col1]); } printf("\n"); } return 0; }
Đầu ra
Enter size of a matrix 2 3 Enter matrix of size 2X3 4 5 6 1 2 3 rows: 2 cols: 3 elements: 4 5 6 1 2 3 Sum of squares of row 0: 61 Sum of squares of row 1: 13 Normalized Matrix: 0.512 0.640 0.768 0.277 0.555 0.832 Process returned 0 (0x0) execution time : 12.446 s Press any key to continue.