retrieve the Cholesky factorization at the scilab level
[Ct,p] = taucs_chget(C_ptr)
a pointer to the Cholesky factorization (C,p : A(p,p)=CC')
a scilab sparse matrix (you get the upper triangle i.e. Ct is equal to C')
column vector storing the permutation
This function may be used if you want to plot the sparse pattern of the Cholesky factorization (or if you code something which use the factors). Traditionally, the factorization is written :
with P' the permutation matrix associated to the permutation p. As we get the upper triangle Ct (= C'), in scilab syntax we can write :
// Example #1 : a small linear test system A = sparse( [ 2 -1 0 0 0; -1 2 -1 0 0; 0 -1 2 -1 0; 0 0 -1 2 -1; 0 0 0 -1 2] ); Cp = taucs_chfact(A); [Ct, p] = taucs_chget(Cp); full(A(p,p) - Ct'*Ct) // this must be near the null matrix taucs_chdel(Cp) | ![]() | ![]() |
// Example #2 a real example // first load a sparse matrix [A] = ReadHBSparse(SCI+"/modules/umfpack/demos/bcsstk24.rsa"); // compute the factorization Cptr = taucs_chfact(A); // retrieve the factor at scilab level [Ct, p] = taucs_chget(Cptr); // plot the initial matrix scf(0); clf PlotSparse(A) ; xtitle("Initial matrix A (bcsstk24.rsa)") // plot the permuted matrix B = A(p,p); scf(1); clf PlotSparse(B) ; xtitle("Permuted matrix B = A(p,p)") // plot the upper triangle Ct scf(2); clf PlotSparse(Ct) ; xtitle("The pattern of Ct (A(p,p) = C*Ct)") // retrieve cnz [OK, n, cnz] = taucs_chinfo(Cptr) // cnz is superior to the realnumber of non zeros elements of C : cnz_exact = nnz(Ct) // do not forget to clear memory taucs_chdel(Cptr) | ![]() | ![]() |