Намери детерминанта на квадратна матрица
ПРОБЛЕМ Намери детерминантата на квадратна матрица.
Детерминанта (детерминанта) на квадратна матрица - число, което се определя матрица и оценени като неговите елементи съгласно следните правила.
- За матрица на първа стойност за на детерминанта е равна на един елемент на матрицата:
- За матрицата от втори ред (2 х 2) стойността на фактор се изчислява като
- За матрици от по-висок порядък (повече от две) m х m детерминанта ние може да се изчисли чрез прилагане рекурсивен формула:
където MIJ - Мала допълнително квадратна матрица - детерминантата на матрицата, получен чрез изтриване от източник и тата ред и к тата колона.
Например, формулата за изчисление на детерминантата на матрицата на ред 3 има формата
Изпълнение на C ++
#include
използване на пространството от имена STD;
// изходната функция матрица
невалидни Pr Int Matr (междинно ** УО, Int т) Int I, J;
за (I = 0; и
>
// Получаване на масива без I-тия ред и к-тата колона
анулира GetMatr (междинно ** УО, Int ** р, Int I, Int J, Int т) Int ки, KJ, ди, DJ;
ди = 0;
за (Ki = 0; ки
DJ = 0;
за (KJ = 0; KJ
р [ки] [KJ] = УО [ки + ди] [KJ + DJ];
>
>
>
// Рекурсивно изчисляване на фактор
Int детерминанта (междинно ** УО, Int т) Int I, J, D, К, N;
Int ** р;
р = нов Int * [m];
за (I = 0; и
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; и
г = г + к * Mas [Ь] [0] * детерминанта (р, п);
К = к;
>
>
върне (г);
>
// основна функция
Int основни () Int m, I, J, D;
Int ** УО;
система ( "CHCP 1251");
система ( "CLS");
Cout <<"Введите размерность квадратной матрицы: " ;
CIN >> m;
УО = нов Int * [m];
за (I = 0; и
>
>
Pr Int Matr (УО, т);
г = детерминанта (УО, т);
Cout <<"Определитель матрицы равен " <
връщане 0;
>