首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >你如何写一个带有符号符号的点积?

你如何写一个带有符号符号的点积?
EN

Stack Overflow用户
提问于 2019-12-18 00:49:38
回答 3查看 695关注 0票数 0

我正在寻找在渐变中的两个向量或符号的点,以便(latex)输出类似于下面的代码将显示的内容,但具有实际的渐变函数,例如RA.dot(RB)...我该怎么做呢?

代码语言:javascript
代码运行次数:0
运行
复制
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.
EN

回答 3

Stack Overflow用户

发布于 2019-12-18 06:16:46

这很简单。使用以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
A = MatrixSymbol('\mathbf{R}_A', 1, 1)
B = MatrixSymbol('\mathbf{R}_B', 1, 1)
dt = MatrixSymbol('\cdot',1,1)

A*dt*B

或者只是:

代码语言:javascript
代码运行次数:0
运行
复制
A = MatrixSymbol('\mathbf{R}_A', 1, 1)
B = MatrixSymbol('\mathbf{R}_B', 1, 1)

A*B
票数 0
EN

Stack Overflow用户

发布于 2020-01-10 07:01:50

因此,LaTeX output的问题的解决方案是:

代码语言:javascript
代码运行次数:0
运行
复制
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()这样的函数在处理非交换符号时并不能很好地工作,所以如果你想做一些数学运算,我推荐使用以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-08-05 15:35:22

您也可以为交换符号声明它。只需将点设置为独立的非交换符号,并禁用产品简化。

代码语言:javascript
代码运行次数:0
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59378707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档