Index-> contents reference index search external Previous Next Up-> ckbs utility ckbs_diag_solve ckbs-> license ckbs_t_general ckbs_nonlinear ckbs_L1_nonlinear ckbs_affine ckbs_affine_singular ckbs_L1_affine utility all_ok.m whatsnew wishlist bib utility-> ckbs_t_obj ckbs_t_grad ckbs_t_hess ckbs_diag_solve ckbs_bidiag_solve ckbs_bidiag_solve_t ckbs_blkbidiag_symm_mul ckbs_blkdiag_mul ckbs_blkdiag_mul_t ckbs_blkbidiag_mul_t ckbs_blkbidiag_mul ckbs_blktridiag_mul ckbs_sumsq_obj ckbs_L2L1_obj ckbs_sumsq_grad ckbs_process_grad ckbs_sumsq_hes ckbs_process_hes ckbs_tridiag_solve ckbs_tridiag_solve_b ckbs_tridiag_solve_pcg ckbs_newton_step ckbs_newton_step_L1 ckbs_kuhn_tucker ckbs_kuhn_tucker_L1 ckbs_diag_solve-> diag_solve_ok.m Headings-> Syntax Purpose b r e lambda Example

Block Diagonal Algorithm

Syntax
[e, lambda] = ckbs_diag_solve(b, r)

Purpose
This routine solves the following linear system of equations for   e :   $A * e = r$  where the diagonal matrix   A is defined by   $A = \left( \begin{array}{ccccc} b_1 & 0 & 0 & \cdots \\ 0 & b_2 & 0 & \\ \vdots & & \ddots & \\ 0 & \cdots & 0 & b_N \end{array} \right)$ 

b
The argument b is a three dimensional array, for   k = 1 , \ldots , N   $b_k = b(:,:,k)$ and b has size   n \times n \times N .

r
The argument r is an   (n * N) \times m matrix.

e
The result e is an   (n * N) \times m matrix.

lambda
The result lambda is a scalar equal to the logarithm of the determinant of   A .

Example
The file diag_solve_ok.m contains an example and test of ckbs_diag_solve. It returns true if ckbs_diag_solve passes the test and false otherwise.
Input File: src/ckbs_diag_solve.m