【问题标题】:logm function of hermitian matrix returns non-hermitian matrix厄米矩阵的 logm 函数返回非厄米矩阵
【发布时间】:2013-04-06 01:31:23
【问题描述】:

当我在 scipy 中使用线性代数模块来计算 厄米矩阵 的矩阵对数时,它输出的矩阵不是厄米矩阵。我首先使用以下方法定义一个向量:

n = np.random.uniform(size = 3) + 1j*np.random.uniform(size = 3)

然后我定义各自的厄米矩阵:

N = np.outer(n,n.conj())

但是,linalg.logm(N) 不返回 厄米矩阵。为什么会这样?

【问题讨论】:

  • N 在我运行此代码时不是矩阵。
  • 对不起,我的意思是 np.random.uniform(size = 3)。我已经更正了 OP。
  • 你的矩阵是单数的;事实上,它的秩为 1。它没有对数。

标签: python numpy scipy linear-algebra


【解决方案1】:

随机矩阵的除一个特征值之外的所有特征值都为零。由于矩阵上的函数可以写成矩阵特征值上的函数,我明白为什么对数在那里有问题,因为 log(0) 没有定义。也许函数没有看到这个问题,只是返回垃圾。

我猜你只需要确保你的随机 Hermitian 矩阵具有非零特征值。

【讨论】:

  • 关于为什么结果不是 Hermitian 的问题:这里 logm 中使用的算法不是以将隐秘性保留为精确属性的方式编写的。由于输入矩阵位于奇异点,由于舍入误差,结果对应于接近输入矩阵的某个矩阵 eps 的 logm。由于不完全保留隐匿性,因此 eps-close 矩阵通常是非厄密矩阵。现在,一个很好的问题是:为什么在这种情况下funm(N, np.log, disp=0) 中计算的误差估计不准确?
  • 是的,我会试试的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-11
  • 2017-10-10
相关资源
最近更新 更多