Намери детерминанта на квадратна матрица

Намери детерминанта на квадратна матрица

ПРОБЛЕМ Намери детерминантата на квадратна матрица.


Детерминанта (детерминанта) на квадратна матрица - число, което се определя матрица и оценени като неговите елементи съгласно следните правила.

  • За матрица на първа стойност за на детерминанта е равна на един елемент на матрицата:
  • За матрицата от втори ред (2 х 2) стойността на фактор се изчислява като
  • За матрици от по-висок порядък (повече от две) m х m детерминанта ние може да се изчисли чрез прилагане рекурсивен формула:

    където MIJ - Мала допълнително квадратна матрица - детерминантата на матрицата, получен чрез изтриване от източник и тата ред и к тата колона.
    Например, формулата за изчисление на детерминантата на матрицата на ред 3 има формата


Изпълнение на C ++

#include
използване на пространството от имена STD;
// изходната функция матрица
невалидни Pr Int Matr (междинно ** УО, Int т) Int I, J;
за (I = 0; и Cout < Cout <>
>
// Получаване на масива без I-тия ред и к-тата колона
анулира GetMatr (междинно ** УО, Int ** р, Int I, Int J, Int т) Int ки, KJ, ди, DJ;
ди = 0;
за (Ki = 0; ки ако (Ki == I) ди = 1;
DJ = 0;
за (KJ = 0; KJ ако (KJ == й) DJ = 1;
р [ки] [KJ] = УО [ки + ди] [KJ + DJ];
>
>
>
// Рекурсивно изчисляване на фактор
Int детерминанта (междинно ** УО, Int т) Int I, J, D, К, N;
Int ** р;
р = нов Int * [m];
за (I = 0; и р [Ь] = ново междинно съединение [m];
J = 0; г = 0;
к = 1; // (- 1) и в градуси
п = m - 1;
ако (т<1) cout <<"Определитель вычислить невозможно!" ;
IF (m == 1) D = коледен [0] [0];
върне (г);
>
IF (m == 2) г = коледен [0] [0] * Mas [1] [1] - (УО [1] [0] * Mas [0] [1]);
върне (г);
>
ако (т> 2) за (I = 0; и Cout < Pr Int Matr (р, п);
г = г + к * Mas [Ь] [0] * детерминанта (р, п);
К = к;
>
>
върне (г);
>
// основна функция
Int основни () Int m, I, J, D;
Int ** УО;
система ( "CHCP 1251");
система ( "CLS");
Cout <<"Введите размерность квадратной матрицы: " ;
CIN >> m;
УО = нов Int * [m];
за (I = 0; и за (к = 0; J cin.get (); cin.get ();
връщане 0;
>