我正在寻找在渐变中的两个向量或符号的点,以便(latex)输出类似于下面的代码将显示的内容,但具有实际的渐变函数,例如RA.dot(RB)...我该怎么做呢?
from sympy import *
from sympy.interactive import printing
printing.init_printing(use_latex = True)
RA = Symbol('\mathbf{R}_A', commutative = False)
RB = Symbol('\mathbf{R}_B', commutative = False)
dt = Symbol('\cdot', commutative = False)
display(RA*dt*RB)
# I would prefer something like
display(RA.dot(RB)) # If RA and RB are type Vector, VectorAdd etc.
发布于 2019-12-17 22:16:46
这很简单。使用以下命令:
A = MatrixSymbol('\mathbf{R}_A', 1, 1)
B = MatrixSymbol('\mathbf{R}_B', 1, 1)
dt = MatrixSymbol('\cdot',1,1)
A*dt*B
或者只是:
A = MatrixSymbol('\mathbf{R}_A', 1, 1)
B = MatrixSymbol('\mathbf{R}_B', 1, 1)
A*B
发布于 2020-01-09 23:01:50
因此,LaTeX output的问题的解决方案是:
from sympy import *
from sympy.interactive import printing
printing.init_printing(use_latex = True)
A, B, dt = symbols('A B \cdot', commutative = False)
display(A*dt*B)
然而,像simplify(),expand(),factor()这样的函数在处理非交换符号时并不能很好地工作,所以如果你想做一些数学运算,我推荐使用以下代码:
expr = A*dt*B
l = [i for i in expr.atoms()]
nl = [Symbol(str(i)) for i in l]
for i in range(len(l)):
expr = expr.subs(l[i],nl[i])
### Perform your maths now that everything is commutative, then revert back to non-comm
发布于 2021-08-05 07:35:22
您也可以为交换符号声明它。只需将点设置为独立的非交换符号,并禁用产品简化。
import sympy as sm
a,b,c= sm.symbols('a b c')
dt = sm.Symbol('\cdot ',commutative=False)
sm.Mul(a,dt,b,dt,c,evaluate=False)
https://stackoverflow.com/questions/59378707
复制