gpt4 book ai didi

python - Sympy - 符号向量的点积和范数

转载 作者:行者123 更新时间:2023-12-03 09:34:07 25 4
gpt4 key购买 nike

有没有办法表达一个涉及向量和对它们的操作的符号表达式而不评估它们?

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│ ⎠

但相反,我希望它评估为这样的东西,同时仍然能够在以后替换符号向量。
    ⎛ 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⎠ ⎠

关于python - Sympy - 符号向量的点积和范数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55238138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com