Namespace:
Imsl.Math
Assembly:
ImslCS (in ImslCS.dll) Version: 6.5.0.0
Syntax
C# |
---|
[SerializableAttribute] public class Cholesky |
Visual Basic (Declaration) |
---|
<SerializableAttribute> _ Public Class Cholesky |
Visual C++ |
---|
[SerializableAttribute] public ref class Cholesky |
Remarks
Class Cholesky is based on the LINPACK routine SCHDC; see Dongarra et al. (1979).
Before the decomposition is computed, initial elements are moved to the
leading part of A and final elements to the trailing part of
A. During the decomposition only rows and columns corresponding
to the free elements are moved. The result of the decomposition is an
lower triangular matrix R and a permutation matrix P that
satisfy , where P is
represented by ipvt.
The method Update is based on the LINPACK routine SCHUD; see Dongarra et al. (1979).
The Cholesky factorization of a matrix is
, where R is an lower triangular
matrix. Given this factorization, Downdate computes the
factorization

Downdate determines an orthogonal matrix U as the product
of Givens rotations, such that
![U \left[ \begin{array}{l} R \\ 0 \\
\end{array} \right] = \left[ \begin{array}{l}{\tilde R} \\ x^T \\
\end{array} \right]](eqn/eqn_0538.png)
By multiplying this equation by its transpose and noting that
, the desired result

Let a be the solution of the linear system and let

The Givens rotations, , are chosen such that
![G_1 \cdots G_N \left[ \begin{array}{l}a \\
\alpha \end{array} \right] = \left[ \begin{array}{l} 0 \\ 1
\end{array} \right]](eqn/eqn_0544.png)
The , are (N + 1) * (N + 1) matrices of
the form
![G_i = \left[ {\begin{array}{*{20}c}{
I_{i - 1} } & 0 & 0 & 0 \\ 0 & {c_i } & 0 & {
- s_i } \\ 0 & 0 & {I_{N - i} } & 0 \\ 0 & {s_i } &
0 & {c_i } \\ \end{array}} \right]](eqn/eqn_0546.png)



The Givens rotations are then used to form
![\tilde R,\,\,G_1 \cdots \,G_N \left[ \begin{array}{l} R \\ 0 \\
\end{array} \right] = \left[ \begin{array}{l}{\tilde R} \\ \tilde x^T
\\ \end{array} \right]](eqn/eqn_0550.png)
The matrix


![x = \left( {R^T 0} \right) \left[
\begin{array}{l}a \\ \alpha \\ \end{array} \right] = \left( R^T 0
\right) U^T U\left[ \begin{array}{l}a \\ \alpha \\ \end{array} \right]
= \left( {\tilde R^T \tilde x} \right) \left[ \begin{array}{l}0 \\ 1 \\
\end{array} \right] = \tilde x](eqn/eqn_0553.png)