choldn#

Purpose#

Performs a Cholesky downdate of one or more rows on an upper triangular matrix.

Format#

r = choldn(C, x)#
Parameters:
• C (KxK matrix) – Upper triangular matrix to be operated on.

• x (NxK matrix) – the rows to downdate C with.

Returns:

r (KxK upper triangular matrix) – the downdated matrix.

Examples#

``` // Set C
C = { 20.16210005 16.50544413 9.86676135,
0 11.16601462 2.97761666,
0           0 11.65496052 };

// Set x
x = { 1.76644971 7.49445820 9.79114666,
6.87691156 4.41961438 4.32476921 };

// Call choldn
r = choldn(C, x);
```

After the above code, R will equal:

```    18.8706  15.3229   8.0495
r =  0.0000   9.3068  -2.1201
0.0000   0.0000   7.6288
```

Remarks#

If trap 1 is set, `choldn()` returns scalar error code 60, otherwise it terminates the program with an error message.

C should be a Cholesky factorization.

```choldn(C, x);
```

is equivalent to

```chol(C'C - x'x);
```

but `choldn()` is numerically much more stable.

Warning

it is possible to render a Cholesky factorization non-positive definite with choldn. You should keep an eye on the ratio of the largest diagonal element of r to the smallest. If it gets very large, r may no longer be positive definite. This ratio is a rough estimate of the condition number of the matrix.