2017-05-31 54 views
2

我在ruby中使用Matrix類來計算特徵值和特徵向量。有了這個代碼:這是類Matrix中的ruby錯誤嗎?

m = Matrix[[0.6868,0.6067],[0.6067,0.5978]] 
v, d, v_inv = m.eigensystem 

正確的結果應該是:

[ 1.25057433 0.03398123] 
[[ 0.73251454 -0.68075138] 
[ 0.68075138 0.73251454]] 

其使用Python我證實numpy

不過,我得到以下結果:

d=[[0.033970204576497576, 0], 
[0, 1.2506297954235022]] 

v=[[0.6807528514962294, 0.7325131774785713], 
[-0.7325131774785713, 0.6807528514962294]] 

這是一個Ruby的錯誤嗎?我的紅寶石的以下版本:

ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] 

回答

0

這將是沒有意思的答案,但我會把它放在這裏格式的緣故:

當涉及到數學,我會用檢查結果的正確性

> entries <- c(0.6868, 0.6067, 0.6067, 0.5978) 
> input <- matrix(entries, nrow=2, byrow=TRUE) 
> input 

#  [,1] [,2] 
# [1,] 0.6868 0.6067 
# [2,] 0.6067 0.5978 

> input_eigen <- eigen(input) 
> input_eigen 

$values 
# [1] 1.2506298 0.0339702 

$vectors 
#   [,1]  [,2] 
# [1,] -0.7325132 0.6807529 
# [2,] -0.6807529 -0.7325132 

我相信上面的結果,這意味着紅寶石可能做的更好,比Python/numpy的。

+0

謝謝你的回答。 你能告訴我,爲什麼在這個問題上ruby比Python/numpy更好? – Ireul

+0

正如我在總結中寫到的,當涉及到數學時,我比[tag:ruby]和[tag:python]都多[[:]]。紅寶石的結果與R產生的結果相同,而python的結果不是。 – mudasobwa

+0

好的,我明白了。 謝謝^^ – Ireul