Can anyone advise me how to make octave's "chol" function work according to common sense?
I have the sparse matrix A 3565x119 with the density 0.016955 (just an example), and I need to factor A'*A, which is 119x119 100% dense.
Nevertheless, "chol" factored it very nicely in 0.00199413 seconds.
However, the full-dense character of A'*A is caused just by the single dense row. So I deleted it and obtained the sparse matrix AS
3564x119 with the density of 0.016679 (slightly less) and the product AS'*AS as 119*119 sparse matrix with 7139 nonzeros only (density
0.50413). Still rather dense but nevertheless about twice less memory consumption. As I am looking forward to matrices with 10^6 rows, it
However, in this case, "chol" factored the sparse product in 0.350877 seconds! About 180 times slower !!! OK, when you do it like
you obtain the expected 0.000941992 seconds, but I suspect that octave
will not like extra memory consumption.
So my questions are: is there somewhere in the dark octave corner the sparse Cholesky factorization? I do not particularly like writing
This finally saves me about 60% of memory but will not probably work for huge matrices. Or is there any trick to avoid explicit conversion
to a full matrix for "chol" without sacrifying too much of runtime?