2019年5月29日 星期三

Deteminant of a matrix 行列式值

Deteminant of a matrix 行列式值

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

#define N 3

int determinantOfMatrix(int mat[N][N], int n);
void display(int mat[N][N], int row, int col);

int main(void)
{
int matrix[N][N] =
{
{6, 1, 1 },
{4, -2, 5},
{2, 8, 7 }
};

display(matrix, N, N);

    int determinant = determinantOfMatrix(matrix, N);

printf("Determinant of the matrix is: %d\n", determinant);

return 0;
}

int determinantOfMatrix(int mat[N][N], int n)
{
    int det=0, p, h, k, i, j, temp[N][N];

    if (n == 1)
    {
    return mat[0][0];
    }
    else if (n == 2)
    {
        det = (mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]);

        return det;
    }
else {
for (p = 0; p < n; p++) {
h = 0;
k = 0;

for (i = 1; i < n; i++) {
for (j = 0; j < n; j++) {
if (j==p) {
continue;
}

temp[h][k] = mat[i][j];
k++;

if (k == n-1) {
h++;
k = 0;
}
}
}

det = det + mat[0][p] * pow(-1, p) * determinantOfMatrix(temp, n-1);
}

return det;
}
}

void display(int mat[N][N], int row, int col)
{
    int i;
    int j;

    for (i = 0; i < row; i++)
    {
        for (j = 0; j < col; j++)
        {
        printf("%d\t", mat[i][j]);
        }

        printf("\n");
    }
}


輸出畫面
6 1 1
4 -2 5
2 8 7
Determinant of the matrix is: -306

沒有留言:

張貼留言

MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構

MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 這張圖片展示了一個 結合 MQTT 協定與 Modbus 通訊的遠端監控與控制系統架構 (主要透過 Node-RED 進行資料整合)。 系統包含三個核心部分,其運作功能說明如下: 1. ESP32 終端設備(硬體控制層...