[python 2.7 和 numpy v1.11.1] 我正在查看矩阵条件数,并尝试在不使用函数 np.linalg.cond() 的情况下计算矩阵的条件数。
根据 numpy 的文档,矩阵条件数的定义是“x 的范数乘以 x 的倒数的范数”。
||X|| * ||X^-1||
对于矩阵
a = np.matrix([[1, 1, 1],
[2, 2, 1],
[3, 3, 0]])
print np.linalg.cond(a)
1.84814479698e+16
print np.linalg.norm(a) * np.linalg.norm(np.linalg.inv(a))
2.027453660713377e+17
我的计算哪里出错了?
谢谢!
请您参考如下方法:
您正在尝试使用 Frobenius 范数定义来计算条件。这是条件计算的可选参数。
print(np.linalg.norm(a)*np.linalg.norm(np.linalg.inv(a)))
print(np.linalg.cond(a, p='fro'))
产生
2.02745366071e+17
2.02745366071e+17
