Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การคูณเมทริกซ์และการปรับมาตรฐาน (Normalization) ในโปรแกรม C

การคูณเมทริกซ์ (Matrix Multiplication)

การคูณเมทริกซ์ทำได้ก็ต่อเมื่อเงื่อนไขตรงกัน: เมทริกซ์ P (a×b) และ Q (z×y) คูณได้ก็ต่อเมื่อ b = z ผลลัพธ์เป็นเมทริกซ์ R (a×y)

อัลกอริทึม

matrixMultiply(P, Q):
    ถ้า b != z ออก
    กำหนด R (a×y)
    for i = 0 to a-1:
        for j = 0 to y-1:
            for k = 0 to z-1:
                R[i,j] += P[i,k] * Q[k,j]

การปรับมาตรฐานเมทริกซ์ (Matrix Normalization)

ตัวอย่างเมทริกซ์ 2×3:

4 5 6
1 2 3

เมทริกซ์ที่ปรับมาตรฐานแล้ว:

4/√(5²+6²)  5/√(5²+6²)  6/√(5²+6²)
1/√(2²+3²)  2/√(2²+3²)  3/√(2²+3²)

ตัวอย่างโค้ด

#include <stdio.h>
#include <math.h>

int main() {
    int row, col, row1, col1;
    int assignMatrix[50][50];
    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[row1][col1];
            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;
}

เอาต์พุต

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