sympy Matrices不一致

时间:2016-01-18 22:50:31

标签: python math matrix sympy

我试图用sympy来帮助我在矩阵表达式中分离出一个向量。我写了这段代码:

    import sympy
    from sympy import symbols, MatrixSymbol, Matrix
    from sympy import Identity    

    Xp = MatrixSymbol('Xp', 3,1)
    t = MatrixSymbol('t', 3,1)
    n = MatrixSymbol('n', 3,1)
    H = n.T*Xp*Identity(3) - t*n.T

我的意图是孤立n。我不确定sympy是否能做到这一点,但我已经得到了一个' ShapeError:Matrices n' * Xp和我没有对齐',我认为这个错误不应该发生在n&# 39; * Xp是标量,因此它应该能够与矩阵相乘。

如何让表达式n.T*Xp*Identity(3)有效? 并且,能否同意帮我隔离这个等式中的向量n?

1 个答案:

答案 0 :(得分:1)

n.T*Xp*Identity(3) 

具有维度签名

(1,3)*(3,1)*(3,3)

显然无效。

n*Xp.T*Identity(3) 

可行。

如果你想解决

H=(n.T*X)*I-t*n.T

对于n,第一个注意事项是,这并不总是可行的。假设存在解决方案,请注意

1/(t.T*t)*t.T*H=1/(t.T*t)*(n.T*X)*t.T-n.T

这样

n = a*t - b*H.T*t

其中a未知且b=1/(t.T*t)。插入原始等式给出

H = (a*t.T*X-b*t.T*H*X)*I - a*t*t.T + b*t*t.T*H

H - b*t*t.T*H +b*(t.T*H*X)*I = a*((t.T*X)*I - t*t.T)

在右侧矩阵的每个非平凡分量中将给出a的值,但只有当所有这些值都相同时才存在解。