2017-02-03 7 views
2
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) 

出力:sympyで方程式に - 、+、*、/などの演算を使用するにはどうすればよいですか?

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()では、出力が最初の期間を失うことが予想されます。

方程式に - 、+、*、/などの操作を正しく使用するにはどうすればよいですか?

答えて

2

lhs属性、rhs属性をそれぞれ呼び出すことによって、方程式の左辺または右辺を操作できます。例えば、

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

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

関連する問題