C++ Bc. 2: Porovnání verzí
Bez shrnutí editace |
m (zjednodušeno) |
||
(Není zobrazeno 8 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
;[http://en.wikipedia.org/wiki/Power_method Mocninná metoda] | |||
Napište funkci, která pro zadanou čtvercovou diagonalizovatelnou matici <math>\mathbf{A} \in R^{n\times n} </math> vypočítá odhad jejího dominantního vlastního čísla <math>\lambda_\max</math>. | Napište funkci, která pro zadanou čtvercovou diagonalizovatelnou matici <math>\mathbf{A} \in R^{n\times n} </math> vypočítá odhad jejího dominantního vlastního čísla <math>\lambda_\max</math>. | ||
double dominantni_vlastni_cislo_matice(const GNU_gama::Mat<>& A, double rel_chyba = 1e-5); | |||
'''Algoritmus:''' | '''Algoritmus:''' | ||
Řádek 7: | Řádek 9: | ||
# zvolíme libovolný jednotkový vektor <math>q_0 \in R^n</math> (můžeme zvolit libovolný nenulový vektor) | # zvolíme libovolný jednotkový vektor <math>q_0 \in R^n</math> (můžeme zvolit libovolný nenulový vektor) | ||
# vypočteme vektor <math>z_i = \mathbf{A}q_{i-1}</math> | # vypočteme vektor <math>z_i = \mathbf{A}q_{i-1}</math> | ||
# | # <math>\lambda_i = ||z_i||,\,</math> kde <math>||z_i||\,</math> označuje euklidovskou normu vektoru <math>z_i</math>. | ||
# vypočteme vektor <math>q_i = z_i / \lambda_i</math> (tj. <math>q_i</math> je normovaný vektor <math>z_i</math>) | |||
# posloupnost <math>\lambda_1, \lambda_2, \lambda_3, ... </math> konverguje k hodnotě <math>\lambda_\max.</math> Opakujeme krok 2, dokud | # posloupnost <math>\lambda_1,\,\lambda_2, \lambda_3, ... </math> konverguje k hodnotě <math>\lambda_\max.</math> Opakujeme krok 2, dokud není dosažena požadovaná relativní přesnost odhadu <math>\lambda_\max</math> (např. na 4 dekadické cifry). | ||
Řádek 29: | Řádek 31: | ||
je <math>\lambda_\max = 339.3771</math> | je <math>\lambda_\max = 339.3771</math> | ||
[ [[C | [ [[C++ Bc.|Zpět]] | [[C++ Bc. 2 cpp|C++]] | [[C++ Bc. 3|Další]] ] | ||
[[Kategorie:Programování]] |
Aktuální verze z 27. 11. 2006, 20:50
Napište funkci, která pro zadanou čtvercovou diagonalizovatelnou matici Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \mathbf{A} \in R^{n\times n} } vypočítá odhad jejího dominantního vlastního čísla Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_\max} .
double dominantni_vlastni_cislo_matice(const GNU_gama::Mat<>& A, double rel_chyba = 1e-5);
Algoritmus:
- zvolíme libovolný jednotkový vektor Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle q_0 \in R^n} (můžeme zvolit libovolný nenulový vektor)
- vypočteme vektor Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle z_i = \mathbf{A}q_{i-1}}
- Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_i = ||z_i||,\,} kde Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle ||z_i||\,} označuje euklidovskou normu vektoru Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle z_i} .
- vypočteme vektor Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle q_i = z_i / \lambda_i} (tj. Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle q_i} je normovaný vektor Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle z_i} )
- posloupnost Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_1,\,\lambda_2, \lambda_3, ... } konverguje k hodnotě Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_\max.} Opakujeme krok 2, dokud není dosažena požadovaná relativní přesnost odhadu Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_\max} (např. na 4 dekadické cifry).
Příklad:
Pro matici Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \begin{pmatrix} -261 & 209 & -49\\ -530 & 422 & -98\\ -800 & 631 & -144 \end{pmatrix}} je Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_\max = 10}
Pro matici Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \begin{pmatrix} -261 & 0 & -49 \\ -530 & 422 & -98 \\ -800 & 631 & -144 \end{pmatrix}} je Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \lambda_\max = 339.3771}