Je suis assez nouveau à SymPy et j'ai ce qui pourrait être une question de base. Ou je pourrais simplement mal interpréter comment SymPy est censé être utilisé.SymPy: Comment retourner une expression en termes d'autres expressions?
Existe-t-il un moyen de créer une expression qui ne soit pas représentée par des atomes, mais par une combinaison d'autres expressions?
Exemple:
>>> from sympy.physics.units import *
>>> expr1 = m/s
>>> expr2 = mile/hour
>>> expr1
m/s
>>> expr2
1397*m/(3125*s)
>>> expr1.in_terms_of([mile,hour]) #in my dreams?
3125*mile/(1397*hour)
>>>
Sur une note latérale: Puis-je trouver un PDF 'officielle' (ou autre imprimable) version de la documentation complète sympy? (Je suis soumis à des restrictions draconiennes d'utilisation d'Internet au travail et je suis fatigué de faire le travail à la maison le week-end.)
Mise à jour:
C'est ce que j'ai fini avec la suggestion de Prélude, mais il est pas susceptible d'obtenir beaucoup d'utilisation comme ça car il se sent sale. Commentaires et bienvenue de WTF.
def in_terms_of(self, terms):
expr2 = eval(str(self), physics.units.__dict__)
converter = {}
for term in terms:
term_expr = physics.units.__dict__[term]
coeff = term_expr.as_coeff_terms()[0]
unit = physics.units.Unit('my_'+term, term)
converter[term_expr/coeff] = unit/coeff
return str(expr2.subs(converter))
Utilisation:
>>> x = in_terms_of('J',['gram','mile','hour'])
>>> x
'9765625000*mile**2*gram/(1951609*hour**2)'
>>> in_terms_of(x,['J'])
'J'
Vous serez heureux d'apprendre que la prochaine version de sympy, nous prévoyons d'expédier les documents html et pdf docs pour le téléchargement. – asmeurer