我也无法弄清楚输出。最初我认为问题是因为您正在创建新的 var 对象而不是重用原始对象,但事实证明并非如此。如果可能的话,我会简单地升级到 0.7.1-git,这里的表现要好得多:
>>> import sympy
>>> sympy.__version__
'0.7.1-git'
>>> from sympy import S, Eq, solve
>>>
>>> vf, d, a, vi, t = S('vf d a vi t'.split())
>>> equations = [
... Eq(vf, vi+a*t),
... Eq(d, vi*t + a*t**2/2),
... Eq(a, 10),
... Eq(d, 60),
... Eq(vi, 5)]
>>>
>>> solve(equations)
[{vf: -35, t: -4, a: 10, vi: 5, d: 60}, {vf: 35, t: 3, a: 10, vi: 5, d: 60}]
>>> solve(equations, [a, t, vi, vf, d])
[(10, -4, 5, -35, 60), (10, 3, 5, 35, 60)]
默认情况下有很好的词典,并且指定顺序是有效的。