0

線形方程式系を解くために独立した列を見つけようとしています。ここで私の簡単な例:

> 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-

4

2 に答える 2

3

ピボット情報を使用して、一連の独立した列を見つけます。

q <- qr(mat)

mmat <- mat[,q$pivot[seq(q$rank)]]

mmat
##   v1 v2 v3 v5
## A  1 -1  0 -1
## B  0  1 -1  0
## C  0  0  1  0
## D  0  0  0  1

qr(mmat)$rank
## [1] 4

なぜこれが機能するのですか?の意味は、育てられた でpivot与えられます。特に:QR.Auxiliaries {base}?qr.Q

qr.R returns R. This may be pivoted, e.g., if a <- qr(x) then x[, a$pivot] = QR.
The number of rows of R is either nrow(X) or ncol(X) (and may depend on whether
complete is TRUE or FALSE).

数値的な安定性のために、絶対値が減少するように固有値を並べ替えるために、ピボットが行われます。これはまた、任意の0固有値が最後にあることを意味q$rankしますq$pivot(そして、現在の例では存在しません。ここQで、 は 4x4 直交行列です)。

最後の行は、QR.Auxiliaries {base}この関係を示しています。

pivI <- sort.list(a$pivot) # the inverse permutation
stopifnot(
 all.equal(x[, a$pivot], qr.Q(a) %*% qr.R(a)),          # TRUE
 all.equal(x           , qr.Q(a) %*% qr.R(a)[, pivI]))  # TRUE too!
于 2013-02-18T19:05:19.897 に答える
0

v4 と v6 から開始する場合、v1 と v2 または v3 のいずれかを選択する必要があるため、行 1 と 2 にゼロ以外の値を持つものがさらに 2 つ必要です。これらはすべて、ランクが最大になる可能性のある基底の選択肢です。

> qr(mat[, c(1,2,4,6)])$rank
[1] 4
> qr(mat[, c(1,2,3,5)])$rank
[1] 4
> qr(mat[, c(1,3,4,6)])$rank
[1] 4

「独立した列」が一意に決定されるわけではありません。互いにスカラー倍数である列など、必然的に依存する列のセットが存在する場合がありますが、ここではそうではありません。

一方、これはランク不足になります:

> qr(mat[, c(1,2,3,4)])$rank
[1] 3
于 2013-02-18T19:05:18.827 に答える