如何在同意中使用 - ,+,*,/等方程式的操作?

时间:2017-02-03 14:13:00

标签: python sympy

from sympy import *
nx, ny, nz = symbols('nx ny nz')
ax, ay, az = symbols('ax ay az')
bx, by, bz = symbols('bx by bz')
e1 = Eq(ax * nx + ay * ny + az * nz, 0)
e2 = Eq(bx * nx + by * ny + bz * nz, 0)
e3 = Eq(nx**2 + ny**2 + nz**2, 1)
pprint(e1)
pprint(e2)
e4 = e1 * bx
pprint(e4)
e5 = e2 * ax
pprint(e5)
e6 = e4 - e5
pprint(e6)

输出:

ax⋅nx + ay⋅ny + az⋅nz = 0
bx⋅nx + by⋅ny + bz⋅nz = 0
bx⋅(ax⋅nx + ay⋅ny + az⋅nz = 0)
ax⋅(bx⋅nx + by⋅ny + bz⋅nz = 0)
-ax⋅(bx⋅nx + by⋅ny + bz⋅nz = 0) + bx⋅(ax⋅nx + ay⋅ny + az⋅nz = 0)

有关

e4 = e1 * bx
pprint(e4)

我原本期望输出类似于这个等式

bx⋅ax⋅nx + bx⋅ay⋅ny + bx⋅az⋅nz = 0

此外,没有任何操作似乎真正适用于乘法方程。例如,在e6.simplify()中,我原本预计输出将失去第一个任期。

如何在方程式上正确使用 - ,+,*,/等操作?

1 个答案:

答案 0 :(得分:2)

您可以分别通过调用lhsrhs属性来操纵等式的左侧或右侧。例如,

e4 = Eq((bx * e1.lhs).expand(), 0)
pprint(e4)
  

ax⋅bx⋅nx + ay⋅bx⋅ny + az⋅bx⋅nz = 0