C++ Bc. 2

Z GeoWikiCZ
Přejít na: navigace, hledání
Mocninná metoda

Napište funkci, která pro zadanou čtvercovou diagonalizovatelnou matici \mathbf{A} \in R^{n\times n} vypočítá odhad jejího dominantního vlastního čísla \lambda_\max.

double dominantni_vlastni_cislo_matice(const GNU_gama::Mat<>& A, double rel_chyba = 1e-5);

Algoritmus:

  1. zvolíme libovolný jednotkový vektor q_0 \in R^n   (můžeme zvolit libovolný nenulový vektor)
  2. vypočteme vektor z_i = \mathbf{A}q_{i-1}
  3. \lambda_i = ||z_i||,\, kde ||z_i||\, označuje euklidovskou normu vektoru z_i.
  4. vypočteme vektor q_i = z_i / \lambda_i (tj. q_i je normovaný vektor z_i)
  5. posloupnost \lambda_1,\,\lambda_2, \lambda_3, ... konverguje k hodnotě \lambda_\max. Opakujeme krok 2, dokud není dosažena požadovaná relativní přesnost odhadu \lambda_\max (např. na 4 dekadické cifry).


Příklad:

Pro matici \begin{pmatrix}
 -261 & 209 & -49\\
 -530 & 422 & -98\\
 -800 & 631 & -144
\end{pmatrix} je \lambda_\max = 10

Pro matici \begin{pmatrix}
 -261 &   0 &  -49 \\
 -530 & 422 &  -98 \\
 -800 & 631 & -144
\end{pmatrix} je \lambda_\max = 339.3771

[ Zpět | C++ | Další ]