ランクが増えない

  • こちらの記事から
  • RjpWikiの行列関係の記事はこちら
  • その他、比較的よく忘れる(けれども使いたくなる)処理はこちら
  • 要素の値が等差数列になっている正方行列のランクは2
ns<-2:100
ranks<-ranksRandom<-rep(0,length(ns))

for(i in 1:length(ns)){
n<-ns[i]
A<-matrix(c(1:(n^2)),n,n)
B<-matrix(runif(n^2),n,n)
x<-eigen(A)                #固有値と固有ベクトル
D<-diag(x$value)         #対角行列
P<-x$vectors             #固有ベクトルが行列になっている

A^3                       #これは要素を3乗した行列
A%*%A%*%A
P%*%D^3%*%solve(P)    #対角化して計算
D
P
ranks[i]<-qr(A)$rank
ranksRandom[i]<-qr(B)$rank
}
par(mfcol=c(1,2))
plot(ranks)

plot(ranksRandom)
par(mfcol=c(1,1))
  • いただいたコメントから、「ランク=1」の行列をつくるための条件もわかるので、そうやって作ってみて、さらにそうやって作った複数の行列の線形結合のランクについてもみてみます
  • こちらへ書いたコメントの通り
n<-10
m<-matrix(0,n,n)

k<-15
ranks<-rep(0,k)
for(i in 1:k){
 v<-runif(n)

 u<-runif(n)
 tmpm<-matrix(0,n,n)
 for(j in 1:n){
  tmpm[,j]<-u[j]*v
 }
 #tmpm<-u%*%t(v) # u,vからの行列の作り方はこれでもよい

 m<-m+tmpm
 ranks[i]<-qr(m)$rank

}

plot(ranks)