det( )
今日まで、行列式の計算はdet()で使ってたが、本日に意外なことを発見した。原因はまだわからない。
tの設定値 | 行列式計算1 det() | 行列式計算2 |
---|---|---|
10 | -0.0025 | 0 |
100 | -8.5178 | 0 |
1000 | 1583.648 | 0 |
10000 | 6361243 | 0 |
行列式計算1と行列式計算2の差は何なんだろう。
行列式の計算はdet()を使わないほうがよい。
しかし、性質で計算すれば、相当時間がかかる。他のコマンドはあるか知らない。
n <- 3 # 行列の列の数
t <- 10000 # 行列の行の数
X <- matrix(0, t, n )
X[,2] <- rep(c(1,3,65,78,1,2,3,4,55), length = t) # 数列1 値の設定は何でもよい
X[,3] <- rep(c(23,4,6,89,2), length = t) # 数列2
X[,1] <- 2 * X[,2] + 5 * X[,3] # 数列1と数列2の一次結合
In <- t(X) %*% X # 一次従属の性質で、t(X)%*%X の行列式は0である。
det(In) # det()で行列式を計算する。
value <- In[1,1]*(-In[2,3]*In[3,2]+In[2,2]*In[3,3]) -
In[1,2]*(-In[2,3]*In[3,1]+In[2,1]*In[3,3]) +
In[1,3]*(-In[2,2]*In[3,1]+In[2,1]*In[3,2])
value # 行列式の性質で計算する。