Sympy-点积和符号向量规范

拉屎

有没有一种方法可以表达不涉及矢量和对其进行运算的符号表达式?

from sympy import symbols, acos, MatrixSymbol, Matrix

rA = MatrixSymbol("r^A", 2, 1)
rB = MatrixSymbol("r^B", 2, 1)
rA, rB = Matrix(rA), Matrix(rB) # Basically I want to skip this step
acos((rA.dot(rB)) / rA.norm())

这会将表达式计算为:

    ⎛r_00__A⋅r_00__B + r_10__A⋅r_10__B ⎞ 
acos⎜─────────────────────────────────⎟
    ⎜      _________________________  ⎟
    ⎜     ╱          2            2   ⎟
    ⎝   ╲╱  │r_00__A│  + │r_10__A│    ⎠

但是相反,我希望它能够对这样的结果进行评估,同时仍然可以稍后替换符号Vector。

    ⎛ r_A⋅r_B ⎞
acos⎜─────────⎟
    ⎝ ||r_A|| ⎠
劳伦·瓦拉德

你可以替换.dot,并.norm通过矩阵产品:acos(A.T*B/sqrt(A.T*A))
最小的工作示例:

In [1]: from sympy import *
In [2]: init_printing(use_unicode=True)
In [3]: init_printing(use_latex=False)
In [4]: A = MatrixSymbol('A', 2, 1)
In [5]: B = MatrixSymbol('B', 2, 1)
In [6]: acos(A.T*B/sqrt(A.T*A))
Out[6]: 
    ⎛           -1/2⎞
    ⎜ T   ⎛ T  ⎞    ⎟
acos⎝A ⋅B⋅⎝A ⋅A⎠    ⎠

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章