首页 文章

sympy Matrices不一致

提问于
浏览
1

我正在尝试使用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'* Xp是一个标量所以它应该是能够与矩阵相乘 .

如何才能使表达式 n.T*Xp*Identity(3) 有效?并且,能否同意帮助我在这个等式中分离出向量n?

1 回答

  • 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 的值,但只有在所有这些值相同的情况下才存在解 .

相关问题