C++ Bc. 33: Porovnání verzí

Z GeoWikiCZ
m (příklad)
mBez shrnutí editace
 
(Není zobrazeno 14 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
== Choleskyho rozklad ==
;[http://en.wikipedia.org/wiki/Cholesky_decomposition Choleskyho rozklad]


Matice <math>\mathbf A</math> je pozitivně definitní, pokud pro každý nenulový vektor <math>\mathbf x</math> platí <math>\mathbf x^t \mathbf A \mathbf x > 0.</math> Pro každou pozitivně definitní matici existuje jednoznačný symetrický rozklad (Choleskyho rozklad) <math>\mathbf A = \mathbf L \mathbf L^t,</math> kde <math>\mathbf L</math> je dolní trojúhelníková matice. Například
Napište funkci, která počítá ''Choleskyho rozklad'' pozitivně semidefinitní matice.
 
Matice <math>\mathbf A</math> je pozitivně definitní, pokud pro každý nenulový vektor <math>\mathbf x</math> platí <math>\mathbf x^t \mathbf A \mathbf x > 0</math>. Pro každou pozitivně definitní matici existuje jednoznačný symetrický rozklad (Choleskyho rozklad) <math>\mathbf A = \mathbf L \mathbf L^t,</math> kde <math>\mathbf L</math> je dolní trojúhelníková matice. Například


<math>\begin{pmatrix}
<math>\begin{pmatrix}
Řádek 25: Řádek 27:
\end{pmatrix}
\end{pmatrix}
</math>
</math>
První sloupec Choleskyho rozkladu můžeme vypočítat jako
<math>
\mathbf A = \mathbf A^{(1)} = \begin{pmatrix}
a_{11} & \mathbf a_{*1}^t \\
\mathbf a_{*1} & \mathbf A^{(2)}
\end{pmatrix}
\longrightarrow
\begin{pmatrix}
\sqrt{a_{11}}  & \mathbf 0 \\
\mathbf b_{*1} & \mathbf B^{(2)}
\end{pmatrix},</math>
kde <math>\mathbf b_{*1} = {1\over \sqrt{a_{11}}} \mathbf a_{*1}</math> (tj. prvky pod diagonálou vydělíme odmocninou z diagonálního prvku) a
<math>\mathbf B^{(2)} = \mathbf A^{(2)} - \mathbf b_{*1} \mathbf b_{*1}^t</math>. V našem příkladu tedy
<math>\mathbf B^{(2)} =
\begin{pmatrix}
  169 & 143 & 104 &  52 \\
  143 & 221 & 158 &  74 \\
  104 & 158 & 149 &  65 \\
  52 &  74 &  65 &  30
\end{pmatrix} =
\begin{pmatrix}
  365 & 311 & 230 & 122 \\
  311 & 365 & 266 & 134 \\
  230 & 266 & 230 & 110 \\
  122 & 134 & 110 &  55
\end{pmatrix} -
\begin{pmatrix}
  14\times14 & 14\times12 & 14\times9 &  14\times5 \\
  12\times14 & 12\times12 & 12\times9 &  12\times5 \\
  9\times14 &  9\times12 &  9\times9 &  9\times5 \\
  5\times14 &  5\times12 &  5\times9 &  5\times5
\end{pmatrix}.
</math>
Submatice <math>\mathbf B^{(2)}</math> je také pozitivně definitní a stejným způsobem můžeme vypočítat druhý sloupec Choleskyho rozkladu a obdobně i zbývající sloupce.
Explicitní vzorce pro výpočet koeficentů matice <math>\mathbf L</math> Choleskyho rozkladu jsou
<math> l_{i,j} = \frac{1}{l_{j,j}} \left( a_{i,j} - \sum_{k=1}^{j-1} l_{i,k} l_{j,k} \right), \qquad\mbox{pro } i>j. </math>
<math> l_{i,i} = \sqrt{ a_{i,i} - \sum_{k=1}^{i-1} l_{i,k}^2 }. </math>





Aktuální verze z 15. 1. 2009, 16:09

Choleskyho rozklad

Napište funkci, která počítá Choleskyho rozklad pozitivně semidefinitní matice.

Matice je pozitivně definitní, pokud pro každý nenulový vektor platí . Pro každou pozitivně definitní matici existuje jednoznačný symetrický rozklad (Choleskyho rozklad) kde je dolní trojúhelníková matice. Například

První sloupec Choleskyho rozkladu můžeme vypočítat jako

kde (tj. prvky pod diagonálou vydělíme odmocninou z diagonálního prvku) a . V našem příkladu tedy

Submatice je také pozitivně definitní a stejným způsobem můžeme vypočítat druhý sloupec Choleskyho rozkladu a obdobně i zbývající sloupce.

Explicitní vzorce pro výpočet koeficentů matice Choleskyho rozkladu jsou


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