用于计算矩阵行列式的C ++程序

方阵的行列式可以使用其元素值来计算。矩阵A的行列式可以表示为det(A),并且可以称为矩阵在几何形状中描述的线性变换的比例因子。

矩阵的行列式的示例如下。

The matrix is:

3 1

2 7

The determinant of the above matrix = 7*3 - 2*1

= 21 - 2

= 19

So, the determinant is 19.

计算矩阵行列式的程序如下。

示例

#include<iostream>

#include<math.h>

using namespace std;

int determinant( int matrix[10][10], int n) {

   int det = 0;

   int submatrix[10][10];

   if (n == 2)

   return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));

   else {

      for (int x = 0; x < n; x++) {

         int subi = 0;

         for (int i = 1; i < n; i++) {

            int subj = 0;

            for (int j = 0; j < n; j++) {

               if (j == x)

               continue;

               submatrix[subi][subj] = matrix[i][j];

               subj++;

            }

            subi++;

         }

         det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ));

      }

   }

   return det;

}

int main() {

   int n, i, j;

   int matrix[10][10];

   cout << "Enter the size of the matrix:\n";

   cin >> n;

   cout << "Enter the elements of the matrix:\n";

   for (i = 0; i < n; i++)

   for (j = 0; j < n; j++)

   cin >> matrix[i][j];

   cout<<"输入的矩阵为:"<<endl;

   for (i = 0; i < n; i++) {

      for (j = 0; j < n; j++)

      cout << matrix[i][j] <<" ";

      cout<<endl;

   }

   cout<<"Determinant of the matrix is "<< determinant(matrix, n);

   return 0;

}

输出结果

Enter the size of the matrix: 3

Enter the elements of the matrix:

7 1 3

2 4 1

1 5 1

输入的矩阵为:

7 1 3

2 4 1

1 5 1

Determinant of the matrix is 10

在以上程序中,矩阵的大小和元素在main()函数中提供。然后determinant()调用该函数。它返回所显示矩阵的行列式。下面的代码段对此进行了演示。

cout << "Enter the size of the matrix:\n";

cin >> n;

cout <<"Enter the elements of the matrix:\n";

for (i = 0; i < n; i++)

for (j = 0; j < n; j++)

cin >> matrix[i][j];

cout<<"输入的矩阵为:"<<endl;

for (i = 0; i < n; i++) {

   for (j = 0; j < n; j++)

   cout << matrix[i][j] <<" ";

   cout<<endl;

}

cout<<"Determinant of the matrix is "<< determinant(matrix, n);

在函数中determinant(),如果矩阵的大小为2,则直接计算行列式并返回值。如下所示。

if (n == 2)

return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));

如果矩阵的大小不是2,则行列式被递归计算。有3个嵌套的for循环与循环变量x,i和j一起使用。这些循环用于计算determinant()行列式,然后递归调用该函数以计算内部行列式,然后将其与外部值相乘。下面的代码片段对此进行了演示。

for (int x = 0; x < n; x++) {

   int subi = 0;

   for (int i = 1; i < n; i++) {

      int subj = 0;

      for (int j = 0; j < n; j++) {

         if (j == x)

         continue;

         submatrix[subi][subj] = matrix[i][j];

         subj++;

      }

      subi++;

   }

   det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ));

}

以上是 用于计算矩阵行列式的C ++程序 的全部内容, 来源链接: utcz.com/z/360436.html

回到顶部