私はSymPyにかなり慣れていないので、基本的な質問があります。あるいは、SymPyがどのように使用されるのかを単に誤解しているかもしれません。
アトムではなく、他の式の組み合わせで表される式を作成する方法はありますか?
例:
>>> 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)
>>>
補足:完全なSymPyドキュメントの「公式」PDF(または他の印刷可能な)バージョンを見つけることができますか?(私は職場でのインターネットの使用制限が厳しく、週末に自宅で仕事をするのにうんざりしています。)
アップデート:
これは私がプレリュードの提案に従うことになったものですが、それは汚れているように感じるので、このようにあまり使用されない可能性があります。コメントと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))
使用法:
>>> x = in_terms_of('J',['gram','mile','hour'])
>>> x
'9765625000*mile**2*gram/(1951609*hour**2)'
>>> in_terms_of(x,['J'])
'J'