2016-02-05 166 views
1

我正在做一些厄密矩阵的工作。最初的工作是在matlab中完成的,但我现在正在做一些关于python的工作。我在Python中使用numpy,但是我得到python中报告的特征值与MatLab中的特征值之间的递归关系,谁能告诉我这里出了什么问题?MatLab中的特征值和厄米特矩阵的numpy之间的差异

我有这个问题的更多例子,但一个简单的例子是:

import numpy as np 
mat = [[-1,1,-1],[1,-1,1],[-1,1,1]] 
w,v = np.linalg.eig(mat) 

w = array([ -2.56155281e+00, 2.01878445e-16, 1.56155281e+00]) 

在MATLAB -

mat = [-1,1,-1;1,-1,1;-1,1,1] 
eig(mat) 

ans = 

    -2.5616 
     0 
    1.5616 

难道这MatLab的是不精确或Python投掷错误?我还有许多其他人对价值观达成一致意见,分歧是我全部数据集的一个例外。任何帮助解释这个问题都会很好。

谢谢

+0

输出:'-2.561552812808829','1.561552812808831' –

+0

如果你的矩阵是埃尔米特然后用'eigh',而不是'eig'。 – percusse

+0

[在MATLAB中如何在一个数组中存储4个以上的小数位数]可能的重复(http://stackoverflow.com/questions/16111341/how-to-store-more-than-4-decimal-places-in-一个阵列式-MATLAB) – horchler

回答

0

Matlab正在四舍五入显示的值。尝试以下获得与python相同的结果。从`Matalb`用`格式long`

format long 
mat = [-1,1,-1;1,-1,1;-1,1,1] 
eig(mat)