【发布时间】:2017-12-21 21:37:56
【问题描述】:
import sympy
import math
from sympy import *
a, b, c, d, stf, lc = symbols('a b c d stf lc')
init_printing()
expr = (2*(sin (a) + sin (b)/2)*(sin (c) + sin (d)/2)*stf)+(2*(cos (a) + cos (b)/2)*(cos (c)+ cos (d)/2)*lc)*2
expr
当我运行这个 ine 时,ig 给了我结果: 2*lc*(2*cos(a) + cos(b))(cos(c) + cos(d)/2) + stf(2*sin(a) + sin(b ))*(sin(c) + sin(d)/2)
我意识到 expr 中的第一个公式并不是最简单的,但是当我尝试仅将其打印出来时,它会进行一些奇怪的简化。 当我 替换所有变量并再次打印出来,它更进一步: (2sin(30)+sin(40))(250sin(30)+500sin(60))+(cos(40)+2cos(30))(5000cos(60)+2500cos(30))
是否有任何选项可以让 SymPy 不更改公式中元素的顺序,只用漂亮的乳胶打印出来,然后替换变量并再次打印,但保持第一个公式中所有元素的顺序? 我不想称之为任何形式的简化,至少现在还没有,因为这个公式已经足够简单了。
【问题讨论】: