Găsiți determinantul unei matrice pătratică

Găsiți determinantul unei matrice pătratică

PROBLEMA Găsiți determinantul unei matrice pătrat.


Determinant (determinant) al unei matrice pătratică - un număr care este atribuit o matrice și evaluată ca elementele sale în conformitate cu următoarele reguli.

  • Pentru o matrice de prim ordin valoare a determinantului este egal cu un singur element al matricei:
  • Pentru matricea de ordinul al doilea (2 x 2) valoarea determinantului este calculată ca
  • Pentru matrici de ordin mai mare (mai mare de două) m × m determinant putem fi calculat prin aplicarea formulei recursive:

    unde Mij - Minor suplimentara matrice pătratică - determinantul matricei obținute prin ștergerea dintr-o sursă i -lea coloană -lea rând și j.
    De exemplu, formula de calcul a determinantului matricei de ordinul 3 are forma


Implementarea în C ++

#include
using namespace std;
// matrice ieșire funcția
void Pr int MATR (mas ** int m) int i, j;
pentru (i = 0; i cout < cout <>
>
// Ia matrice fără rândul i-lea și coloana j-
nule GetMatr (mas ** int ** p, int i, int j, int m) int ki, kj, di, dj;
di = 0;
pentru (ki = 0; ki if (ki == i) di = 1;
dj = 0;
pentru (kj = 0; kj if (kj == j) dj = 1;
p [ki] [kj] = mas [ki + di] [kj + dj];
>
>
>
// calcul recursive a determinantului
int Determinant (mas ** int m) int i, j, d, k, n;
int ** p;
p = new int * [m];
pentru (i = 0; i p [i] = new int [m];
j = 0; d = 0;
k = 1; // (- 1) i în grade
n = m - 1;
if (m<1) cout <<"Определитель вычислить невозможно!" ;
if (m == 1) d = mas [0] [0];
întoarce (d);
>
if (m == 2) d = mas [0] [0] * mas [1] [1] - (mas [1] [0] * mas [0] [1]);
întoarce (d);
>
dacă (m> 2) pentru (i = 0; i cout < Pr int MATR (p, n);
d = d + k * mas [i] [0] * Determinant (p, n);
k = -k;
>
>
întoarce (d);
>
// funcție principală
int main () int m, i, j, d;
int ** mas;
sistem ( "chcp 1251");
sistem ( "cls");
cout <<"Введите размерность квадратной матрицы: " ;
>> m cin;
mas = new int * [m];
pentru (i = 0; i pentru (j = 0; j cin.get (); cin.get ();
return 0;
>