Is it possible to recover L and D from an LDL' factorization? I'm using 
0.3.8.

On Wednesday, May 27, 2015 at 11:24:03 PM UTC+2, Eduardo Lenz wrote:
>
> This is very interesting !
>
> So UMFPACK is more robust and this is why I am not having any issues with 
> the same matrix. 
>
> Thanks.
>
>
>
> On Wednesday, May 27, 2015 at 6:15:57 PM UTC-3, Andreas Noack wrote:
>>
>> It could happen if a pivot is zero. CHOLMOD's ldlt is only making 
>> permutations in the symbolic step to reduce fill in. The problem can easily 
>> arise if a random matrix is too sparse, e.g.
>>
>> julia> A = sprandn(5,5, 0.2);
>>
>> julia> A = A + A';
>>
>> julia> b = A*ones(5);
>>
>> julia> cholfact(A)\b
>> CHOLMOD warning: not positive definite
>> 5-element Array{Float64,1}:
>>  NaN
>>  NaN
>>  NaN
>>  NaN
>>  Inf
>>
>> 2015-05-27 17:11 GMT-04:00 Eduardo Lenz <[email protected]>:
>>
>>> OK, I see.
>>>
>>> It is really using the LDLt, I will try to find why it is returning the 
>>> NaNs for my matrix. 
>>>
>>> Thank you very much for your time and knowledge
>>>
>>>
>>>
>>> On Wednesday, May 27, 2015 at 5:54:20 PM UTC-3, Andreas Noack wrote:
>>>
>>>> As I wrote in the first reply: in 0.3 the cholfact function returns the 
>>>> LDLt when the matrix is symmetric but not positive definite, e.g.
>>>> julia> A = sprandn(5,5, 0.5);
>>>>
>>>> julia> A = A + A';
>>>>
>>>> julia> b = A*ones(5);
>>>>
>>>> julia> cholfact(A)
>>>>
>>>> CHOLMOD factor:  :  5-by-5
>>>>   scalar types: SuiteSparse_long, real, double
>>>>   simplicial, LDL'.
>>>>   ordering method used: AMD
>>>>          0:4
>>>>          1:3
>>>>          2:0
>>>>          3:1
>>>>          4:2
>>>>   col: 0 colcount: 3
>>>>   col: 1 colcount: 3
>>>>   col: 2 colcount: 3
>>>>   col: 3 colcount: 2
>>>>   col: 4 colcount: 1
>>>> monotonic: 1
>>>>  nzmax 12.
>>>>   col 0: nz 3 start 0 end 3 space 3 free 0:
>>>>          0: -0.077417
>>>>          1: 8.3137
>>>>          3: -0.22451
>>>>   col 1: nz 3 start 3 end 6 space 3 free 0:
>>>>          1: 6.1217
>>>>          3: -0.023604
>>>>          4: 0.33154
>>>>   col 2: nz 3 start 6 end 9 space 3 free 0:
>>>>          2: -0.82878
>>>>          3: -0.16901
>>>>          4: 2.1383
>>>>   col 3: nz 2 start 9 end 11 space 2 free 0:
>>>>          3: 0.96632
>>>>          4: -1.1466
>>>>   col 4: nz 1 start 11 end 12 space 1 free 0:
>>>>          4: 1.8461
>>>>   nz 12  OK
>>>>
>>>>
>>>> julia> cholfact(A)\b
>>>> 5-element Array{Float64,1}:
>>>>  1.0
>>>>  1.0
>>>>  1.0
>>>>  1.0
>>>>  1.0
>>>>
>>>> You do have CHOLMOD installed, but in 0.3 it is in a different module. 
>>>> Try Base.LinAlg.CHOLMOD
>>>>
>>>> 2015-05-27 16:44 GMT-04:00 Eduardo Lenz <[email protected]>:
>>>>
>>>> Sorry for pointing a wrong julia version.
>>>>>
>>>>> The matrix is not posdef, so it gives me a (correct) warning and than 
>>>>> my computations return NaN. 
>>>>>
>>>>>  I will take a deeper look, but I really cannot understand why I dont 
>>>>> have CHOLMOD avaliable in a regular
>>>>> windows install.
>>>>>
>>>>> Thanks for your help Andreas !
>>>>>
>>>>>
>>>>> On Wednesday, May 27, 2015 at 5:37:53 PM UTC-3, Andreas Noack wrote:
>>>>>>
>>>>>> You are using 0.3.8 and not 0.4. Have you tried cholfact(A)?
>>>>>>
>>>>>> 2015-05-27 16:33 GMT-04:00 Eduardo Lenz <[email protected]>:
>>>>>>
>>>>>> Just to make it clear...
>>>>>>>                _
>>>>>>> julia> versioninfo()
>>>>>>> Julia Version 0.3.8
>>>>>>> Commit 79599ad (2015-04-30 23:40 UTC)
>>>>>>> Platform Info:
>>>>>>>   System: Windows (x86_64-w64-mingw32)
>>>>>>>   CPU: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
>>>>>>>   WORD_SIZE: 64
>>>>>>>   BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY 
>>>>>>> Sandybridge)
>>>>>>>   LAPACK: libopenblas
>>>>>>>   LIBM: libopenlibm
>>>>>>>   LLVM: libLLVM-3.3
>>>>>>>
>>>>>>> julia> Base.SparseMatrix.CHOLMOD
>>>>>>> ERROR: CHOLMOD not defined
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wednesday, May 27, 2015 at 3:25:46 PM UTC-3, Eduardo Lenz wrote:
>>>>>>>>
>>>>>>>> Funny... I dont have CHOLMOD installed...but I am using the 
>>>>>>>> official windows installer.. I will try to make a fresh install. 
>>>>>>>>
>>>>>>>> Thanks Andreas !
>>>>>>>>
>>>>>>>> On Wednesday, May 27, 2015 at 2:59:30 PM UTC-3, Andreas Noack wrote:
>>>>>>>>>
>>>>>>>>> What do you get when you type Base.SparseMatrix.CHOLMOD.ITypes in 
>>>>>>>>> the terminal?
>>>>>>>>>
>>>>>>>>> 2015-05-27 13:56 GMT-04:00 Eduardo Lenz <[email protected]>:
>>>>>>>>>
>>>>>>>>>> Thanks Andreas.
>>>>>>>>>>
>>>>>>>>>> Indeed ... but I am using 0.4 with ldltfact and it is complaining 
>>>>>>>>>> about the type of the matrix, which is OK. 
>>>>>>>>>>
>>>>>>>>>> I am realy confused with this error.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wednesday, May 27, 2015 at 2:22:30 PM UTC-3, Andreas Noack 
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> In 0.3 the sparse LDLt and Cholesky factorizations are both in 
>>>>>>>>>>> the cholfact function. If the matrix is symmetric, but not positive 
>>>>>>>>>>> definite the result of cholfact will be an LDLt factorization. In 
>>>>>>>>>>> 0.4 the 
>>>>>>>>>>> factorizations have been split into cholfact and ldltfact.
>>>>>>>>>>>
>>>>>>>>>>> Den onsdag den 27. maj 2015 kl. 12.34.30 UTC-4 skrev Eduardo 
>>>>>>>>>>> Lenz:
>>>>>>>>>>>>
>>>>>>>>>>>> Hi.
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to solve a linear system defined by a Symmetric 
>>>>>>>>>>>> sparse matrix. The lufact is working well, but as the matrix is 
>>>>>>>>>>>> symmetric, 
>>>>>>>>>>>> I intend to use ldltfact.
>>>>>>>>>>>>
>>>>>>>>>>>> Unfortunately, it is returning the following error:
>>>>>>>>>>>>
>>>>>>>>>>>> ERROR: `ldltfact` has no method matching 
>>>>>>>>>>>> ldltfact(::SparseMatrixCSC{Float64,Int64})
>>>>>>>>>>>>
>>>>>>>>>>>> but my matrix is reported as 
>>>>>>>>>>>>
>>>>>>>>>>>> typeof(A)
>>>>>>>>>>>> SparseMatrixCSC{Float64,Int64}.
>>>>>>>>>>>>
>>>>>>>>>>>> Is it an error or Im doing something wrong.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Eduardo.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>
>>

Reply via email to