Unfortunately not. See https://github.com/JuliaLang/julia/pull/10402

2015-06-04 9:18 GMT-04:00 Dominique Orban <[email protected]>:

> 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