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

เมทริกซ์สี่เหลี่ยมจัตุรัสเป็นผลรวมของเมทริกซ์ Symmetric และ Skew-Symmetric


Symmetric Matrix - เมทริกซ์ที่ Transpose แล้วเท่ากับตัวเอง

Skew-Symmetric Matrix - เมทริกซ์ที่ Transpose แล้วเท่ากับ Negative ของตัวเอง

ผลรวมของ Symmetric และ Skew-Symmetric Matrix คือ Square Matrix สูตรหาเมทริกซ์ทั้งคู่:

ให้ A เป็น Square Matrix แล้ว

A = (1/2)*(A + A^T) + (1/2)*(A - A^T)

A^T คือ Transpose ของ A

(1/2)(A + A^T) เป็น Symmetric Matrix

(1/2)(A - A^T) เป็น Skew-Symmetric Matrix

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
#define N 3
void printMatrix(float mat[N][N]) {
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++)
            cout << mat[i][j] << " ";
        cout << endl;
    }
}
int main() {
    float mat[N][N] = { { 2, -2, -4 },
        { -1, 3, 4 },
        { 1, -2, -3 } };
    float tr[N][N];
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            tr[i][j] = mat[j][i];
    float symm[N][N], skewsymm[N][N];
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            symm[i][j] = (mat[i][j] + tr[i][j]) / 2;
            skewsymm[i][j] = (mat[i][j] - tr[i][j]) / 2;
        }
    }
    cout << "Symmetric matrix-" << endl;
    printMatrix(symm);
    cout << "Skew Symmetric matrix-" << endl;
    printMatrix(skewsymm);
    return 0;
}

ผลลัพธ์

Symmetric matrix -
2 -1.5 -1.5
-1.5 3 1
-1.5 1 -3
Skew Symmetric matrix -
0 -0.5 -2.5
0.5 0 3
2.5 -3 0