我對SymPy相當陌生,有什麼可能是一個基本問題。或者我可能會誤解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'
你會很高興地聽到,有SymPy的下一個版本,我們計劃出貨了HTML文檔和PDF文檔下載。數量爲 – asmeurer 2012-09-13 02:42:02