In [1]:
using NMfE
In [2]:
A=Float64[16 4 8;4 5 -4;8 -4 22];
In [3]:
b=Float64[4, 2, 5];
In [4]:
n = size(A, 1)
d = zeros(n);
In [5]:
ldlt!(A, d)
In [6]:
lower = zeros(3, 3)
for i in 1:n
for j in 1:i
lower[i, j] = A[i, j] / d[j]
end
end
In [7]:
# Lower Triangular Factors:
lower
Out[7]:
In [8]:
# Diagonal Terms
d
Out[8]:
In [9]:
# Forward substitution
ldlfor!(A, b)
for i in 1:n
A[i, :] = A[i, :] / d[i]
end
In [10]:
# Backward substitution
subbac!(A, b)
# Solution Vector
b
Out[10]:
In [11]:
d = copy(b) # Copy b to d, reset both A and b
A=Float64[16 4 8;4 5 -4;8 -4 22]
b=Float64[4, 2, 5]
c = A\b
Out[11]:
In [12]:
round(A * c, 14) == b
Out[12]:
In [13]:
round(c, 14) == d
Out[13]: