私はいくつかの簡単な hmatrix の例に従おうとしています:
import qualified Numeric.LinearAlgebra as La
w = 4 La.|> [2, 0, -3, 0 :: Double]
m = (3 La.>< 4) [1::Double ..]
x = La.singularValues m
x' = sqrt . La.eigenvalues $ m La.<> La.trans m
ghci にロードします。
> x'
fromList [25.436835633480243 :+ 0.0,1.7226122475210675 :+ 0.0,2.3006847884268434e-7 :+ 0.0]
R での結果:
> x = matrix(1:12, 3, 4, byrow=T)
> x
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
> sqrt(eigen(x %*% t(x))$values)
[1] 2.543684e+01 1.722612e+00 1.159372e-07
最初の 2 つの固有値は一致しますが、3 番目の固有値ではかなり異なります。なんで?
hmatrix は複素数を使用することに注意してください。