2015-04-03 315 views

回答

2

根据文档np.linalg.cond被定义为数组的常量乘以数组的常量的倒数,这不是你正在寻找的。但是你想要做什么可以很容易地完成:

import numpy as np 

    Eigs = np.linalg.eigvals(yourarrayhere) 
    cond = np.max(Eigs)/np.min(Eigs) 
+1

条件数是大1和小*奇异值*的比值,而不是特征值的比率。对于一般的矩阵来说,这些并不是一回事。对于所谓的[正常矩阵](https://en.wikipedia.org/wiki/Normal_matrix),奇异值是特征值的绝对值。 – 2015-04-03 08:46:22

+0

我认为有些人对条件编号有不同的定义。例如,在Bertsekas的非线性编程中,第二版和第三版印刷中,他特别将第67页的条件编号的最大特征值与最小特征值的比值称为条件编号。如果条件编号较大,他会调用矩阵条件不良的条件 – jfish003 2015-04-03 12:38:28

+0

标准线性代数定义就是上述2-范数的比例,即奇异值的比例。这等于仅用于(正定)正态矩阵的特征值的比率。你上面写的是不正确的,因为numpy.linalg.cond使用标准定义。 – 2015-04-03 20:02:55