特異値分解の検算
すぐ忘れる。 svd関数の戻り値をxとして x$u %*% diag(x$d) %*% t(x$v)
で元通り。
> b <- array(rnorm(10), dim=c(5,2)) > b [,1] [,2] [1,] -0.5036082 -1.218417405 [2,] -0.7905285 1.331412278 [3,] 0.8311744 -0.147847237 [4,] -0.8628976 0.681707538 [5,] -1.1254487 -0.007460698 > b_svd <- svd(b) > u <- b_svd$u > v <- b_svd$v > sigma <- diag(b_svd$d) > u %*% sigma %*% t(v) [,1] [,2] [1,] -0.5036082 -1.218417405 [2,] -0.7905285 1.331412278 [3,] 0.8311744 -0.147847237 [4,] -0.8628976 0.681707538 [5,] -1.1254487 -0.007460698 > b [,1] [,2] [1,] -0.5036082 -1.218417405 [2,] -0.7905285 1.331412278 [3,] 0.8311744 -0.147847237 [4,] -0.8628976 0.681707538 [5,] -1.1254487 -0.007460698