2017-05-31 4 views
2

Ich verwende Matrix-Klasse in Ruby, um Eigenwerte und Eigenvektoren zu berechnen. Mit diesem Code:Ist das ein Ruby's Bug in der Klasse Matrix?

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

das sollte richtige Ergebnis sein:

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

, die ich bestätigte mit numpy Python.

Allerdings habe ich das Ergebnis unter:

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

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

Ist das ein Fehler des Rubin? Mein Rubys Version unter:

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

Antwort

0

Diese keineswegs wäre eine Antwort bedeuten, aber ich werde es hier aus Gründen der Formatierung setzen:

Wenn es um Mathematik geht, würde ich verwenden, um zu überprüfen die Korrektheit des Ergebnisses:

> 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 

ich das Ergebnis über vertrauen, das Rubin bedeutet wahrscheinlich besser tun, als python/numpy.

+0

Vielen Dank für Ihre Antwort. Und könnten Sie mir sagen, warum ist Ruby besser als Python/Numpy auf diese Frage Ihrer Meinung nach? – Ireul

+0

Wie ich in der Zusammenfassung schrieb, vertraue ich [Tag: r] mehr als sowohl [Tag: Ruby] und [Tag: Python], wenn es um Mathe geht. Und das Ruby-Ergebnis ist dasselbe wie das, das mit R ausgegeben wurde, während das von Python nicht ist. – mudasobwa

+0

OK, ich habe es. Danke ^^ – Ireul

Verwandte Themen