C++ Bc. 10

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání

Determinant

Napište funkcí, která počítá determinant matice

double determinant(GNU_gama::Mat<>& A);

Řešení

Výpočet determimnántu je triviální v případě trojúhelníkové matice, kdy determinant je roven součinu prvků na hlavní diagonále. Speciálně, pokud je se na hlavní diagonále vyskytuje nula, je determinant nulový.

Funkce proto převádí danou matici na horní trojuúhelníkovou pomocí elementárních operací, které nemění hodnotu determinantu:

  • výměna dvou různých řádků matice změní pouze znaménkou determinantu, nemění ale jeho absolutní hodnotu
  • pokud k libovolnému řádku matice přičteme -násobek jiného řádku, hodnota determinantu se tím nemění

Převod na horní trojúhelníkovou matici proto probíhá v krocích, V každém kroku hledáme pivotní prvkek, tj. prvek s největší absolutní hodnotou. V -tém kroku pak vyměníme -tý řádek s pivotním řádkem. Tato výměna změní znaménko determinantu, každou změnu znaménka je pochopitelně třeba zaznamenat.

Po výběru pivotního prvku, přičítáme k řádkům -násobky pivotního řádku, kde Tak dojde k vynulování prvků pod pivotním prvkem

[ Zpět | C++ ]