Resolviendo sistemas de ecuaciones con SymPy

Estoy tratando de resolver un conjunto de ecuaciones con SymPy 0.7.1:

from sympy import * equations = [ Eq(S('vf'), S('vi + a*t')), Eq(S('d'), S('vi*t + 1/2*a*t**2')), Eq(S('a'), S('10')), Eq(S('d'), S('60')), Eq(S('vi'), S('5')) ] print solve(equations) 

produce el resultado correcto, pero en un orden extraño:

 [(-4, 10, 60, -35, 5), (3, 10, 60, 35, 5)] 

¿Cómo puedo identificar qué valor se ajusta a qué variable? El orden variable parece arbitrario. La documentación sugiere proporcionar argumentos adicionales:

 print solve(equations, var('a'), var('d'), var('t'), var('vi'), var('vf')) 

Pero esto parece no tener efecto.

¡Gracias de antemano por cualquier ayuda!

No puedo entender las salidas tampoco. Originalmente pensé que el problema era porque estaba creando nuevos objetos var en lugar de reutilizar los originales, pero resultó que no era así. Si es posible, simplemente actualizaría a 0.7.1-git, donde las cosas se comportan mucho mejor:

 >>> import sympy >>> sympy.__version__ '0.7.1-git' >>> from sympy import S, Eq, solve >>> >>> vf, d, a, vi, t = S('vf da 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)] 

Buenos diccionarios por defecto, y la especificación del orden funciona.