import numpy as np
def my_LU(B):
A = np.array(B)
n = len(A)
L = np.zeros(shape=(n, n))
U = np.zeros(shape=(n, n))
for k in range(n - 1):
vvector = A[:, k]
vvector[k + 1:] = vvector[k + 1:] / vvector[k]
vvector[0:k + 1] = np.zeros(k + 1)
L[:, k] = vvector
L[k][k] = 1.0
for l in range(k + 1, n):
B[l, :] = B[l, :] - vvector[l] * B[k, :]
A = np.array(B)
L[k + 1][k + 1] = 1.0
U = A
print(U)
print(L)
A = np.array([[2,1,5],
[4,1,12],
[-2,-4,5]])
my_LU(A)
'''answer:
[[ 2 1 5]
[ 0 -1 2]
[ 0 0 4]]
[[ 1. 0. 0.]
[ 2. 1. 0.]
[-1. 3. 1.]]
'''