Sympy公式推导中如何保留向量点积符号不自动展开计算
解决方法
你可以通过自定义无自动求值逻辑的Sympy函数实现点积符号保留,不要调用默认会自动展开的.dot()方法即可,具体操作如下:
步骤1:定义依赖和自定义点积函数
from sympy import MatrixSymbol, Function, symbols # 定义未绑定求值逻辑的点积函数,Sympy不会自动触发展开计算 dot = Function('dot') t = symbols('t') x1 = MatrixSymbol('x1', 1,2) x2 = MatrixSymbol('x2', 1, 2)
步骤2:验证运算效果
# 点积不会自动展开 >>> dot(x1, x2) dot(x1, x2) # 代入等式运算符合预期 >>> y = (dot(x1,x2) - dot(x2,x1)) * t >>> y.coeff(t, 1) dot(x1, x2) - dot(x2, x1)
可选:修改输出显示为x1 * x2格式
如果需要输出样式和你预期的完全一致,可以重写函数的字符串渲染逻辑:
class Dot(Function): def __str__(self): return f"{self.args[0]} * {self.args[1]}" dot = Dot >>> dot(x1,x2) x1 * x2
内容的提问来源于stack exchange,提问作者jc92me
相关产品推荐
相关产品推荐

