[L U P]=lu(a); [L0 U0]=lu(a)とすると L0 = 1.0000 0 0 0 0.5000 1.0000 1.0000 0 0.3333 1.0000 0 0 0.2500 0.9000 -0.6000 1.0000 U0 = 1.0000 0.5000 0.3333 0.2500 0 0.0833 0.0889 0.0833 0 0 -0.0056 -0.0083 0 0 0 0.0004本当に , かチェックする。 norm(U0-U) norm(L0-P*L)どちらも0になる。 |
[L U p]=lu(a,'vector')とすると L = 1.0000 0 0 0 0.3333 1.0000 0 0 0.5000 1.0000 1.0000 0 0.2500 0.9000 -0.6000 1.0000 U = 1.0000 0.5000 0.3333 0.2500 0 0.0833 0.0889 0.0833 0 0 -0.0056 -0.0083 0 0 0 0.0004 p = 1 3 2 4 |
p は置換行列 の “情報を持った” ベクトルである。
となっているとき、
解が分かりやすい連立1次方程式を用意しよう。
x=(1:4)'; b=a*x;解は、もちろん a\bとすれば求まるが、[L U P]=lu(a); で求めた L, U, P を使うには U\(L\(P*b))とすれば良く、[L U p]=lu(a,'vector'); で求めた L, U, p を使うには U\(L\b(p))とすれば良い。 |
>> x=(1:4)' x = 1 2 3 4 >> b=a*x; >> a\b ans = 1.0000 2.0000 3.0000 4.0000 >> U\(L\(P*b)) ans = 1.0000 2.0000 3.0000 4.0000 >> U\(L\b(p)) ans = 1.0000 2.0000 3.0000 4.0000 |