私はSaul I. Gassの第5回リニアプログラミングの作業中です。Scipy linalg LUの分解は、私の教科書に異なる結果をもたらします。
彼与え、次のテキストおよび例: 「その後、n×nの正則行列、が... ...私たちが許可すれば、製品 = LUとして表現することができる考えますU(又はL)の対角要素が1にすべて等しくなるよう、次いでLU分解が一意になり...」
しかし、私はまだ何が起こっているかを言うことができないと、なぜLとUされています
は、私は、このSO質問から見つかったこのコードで可逆低アッパー分解を得ることができました私の教科書とは違う。誰も私にこれを説明できますか?
ので、このコード:
import numpy as np
import scipy.linalg as la
a = np.array([[1, 1, -1],
[-2, 1, 1],
[1, 1, 1]])
(P, L, U) = la.lu(a)
print(P)
print(L)
print(U)
D = np.diag(np.diag(U)) # D is just the diagonal of U
U /= np.diag(U)[:, None] # Normalize rows of U
print(P.dot(L.dot(D.dot(U)))) # Check
は、この出力を与える:
[[ 0. 1. 0.]
[ 1. 0. 0.]
[ 0. 0. 1.]]
[[ 1. 0. 0. ]
[-0.5 1. 0. ]
[-0.5 1. 1. ]]
[[-2. 1. 1. ]
[ 0. 1.5 -0.5]
[ 0. 0. 2. ]]
[[ 1. 1. -1.]
[-2. 1. 1.]
[ 1. 1. 1.]]
。 – percusse