LoginSignup
3
4

More than 5 years have passed since last update.

det( )は行列式の計算で本当に使える?

Last updated at Posted at 2016-06-24

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  # 行列式の性質で計算する。
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4