【发布时间】:2013-09-13 04:19:50
【问题描述】:
我需要用 python 对一个符号矩阵进行对角化。在 Mathematica 中可以轻松完成,但使用模块 numpy.linalg 时出现问题。
为了具体,考虑矩阵
[[2, x], [x, 3]]
其中x 是一个符号变量。我想我遇到了问题,因为 numpy 包是为数值计算提供的,而不是符号的,但我找不到如何用 sympy 来做。
【问题讨论】:
-
如果你创建
x = sympy.Symbol('x'),然后初始化一个numpy矩阵为A = np.array([[2, x], [x, 3]])呢? -
@Bill 这失败了,因为 numpy 无法安全地将类型强制转换为它可以处理的东西。
-
Matrix([[2,x],[x,3]]).diagonalize() 应该足够了。不要为此使用 numpy,即使您使用
dtype=object,数值算法也完全不适合符号计算。 -
@Krastanov,你能解释一下为什么我使用 Matrix([[2,x],[x,3]]).diagonalize() 得到两个矩阵吗?第二个是正确的,但不知道第一个。谢谢
-
@dapias 看到我的回答。
标签: python numpy matrix sympy diagonal