# Cholesky type and multiplication

Hi,

I am lost why this operation does not work…
u=[4. 0.; 0. 4.]
cholesky(u)*[1.;0.]

it seems it has to do that with the special matrix type of Cholesky. Should I transform this type back to normal matrix?

thanks a lot for your help.

u=[4. 0.; 0. 4.]
cholesky(u).U * [1.;0.] # Upper Triangular or F.L for lower triangular


thanks a lot! I assumed that cholesky(u) by default gives upper triangular

If it just gave an ordinary matrix, this would lose the information that it was a Cholesky factorization. By returning a special Cholesky type, it can be used in place of the original matrix for things like solving systems of equations \:

julia> A = rand(3,3); A = A'A # random SPD matrix
3×3 Array{Float64,2}:
0.227769  0.306165  0.155967
0.306165  1.00758   0.484895
0.155967  0.484895  0.967645

julia> C = cholesky(A)
Cholesky{Float64,Array{Float64,2}}
U factor:
3×3 UpperTriangular{Float64,Array{Float64,2}}:
0.477252  0.641517  0.326802
⋅        0.772035  0.35652
⋅         ⋅        0.856586

julia> C \ [3,4,5] # solve Ax = [3,4,5]
3-element Array{Float64,1}:
12.98633638730901
-1.9180590129375255
4.035174666757661

julia> A * ans
3-element Array{Float64,1}:
2.9999999999999996
4.0
5.000000000000001

5 Likes