線形方程式系を解くために独立した列を見つけようとしています。ここで私の簡単な例:
> mat = matrix(c(1,0,0,0,-1,1,0,0,0,-1,1,0,0,0,-1,0,-1,0,0,1,0,0,1,-1), nrow=4, ncol=6, dimnames=list(c("A", "B", "C", "D"), paste("v", 1:6, sep="")))
> mat
v1 v2 v3 v4 v5 v6
A 1 -1 0 0 -1 0
B 0 1 -1 0 0 0
C 0 0 1 -1 0 1
D 0 0 0 0 1 -1
行列はフル ランクです。
qr(mat)$rank
4 が得られ、6 つの列があるため、6-4=2 の独立した列があり、そこから他の列を計算できます。列 v4 と v6 が独立していることはわかっています...私の最初の質問は、これらの列を見つける方法です (おそらく qr(mat)$pivot を使用)。
紙の上の線形方程式を並べ替えると、
[v1、v2、v3、v4、v5、v6] = [v4、v4-v6、v4-v6、v4、v4、v6、v6] であることがわかります。
したがって、v4 と v6 の任意の値から、v4 と v6 を以下のベクトルで乗算することにより、ヌル空間にあるベクトルを見つけることができます。
v4 * [1,1,1,1,0,0] + v6 * [0,-1,-1,0,1,1]
2 番目の質問は、これらのベクトルを見つける方法、つまり v4 と v6 の行列を解く方法です。例えば
qr.solve(mat, cbind(c(0,0,0,0), c(0,0,0,0)))
長さが 6 でゼロのみの 2 つのベクトルが得られます。
どんな助けでも大歓迎です、前もって感謝します!
-H-