當我嘗試進行簡化,使用sympy.simplify
,下面的表達式:關鍵錯誤,而在一個表達式進行簡化
0.0625*v**2*cos(0.5*u)**2 + (-0.25*v*sin(0.5*u)*sin(u) + (0.5*v*cos(0.5*u) + 1)*cos(u))**2 + (-0.25*v*sin(0.5*u)*cos(u) - (0.5*v*cos(0.5*u) + 1)*sin(u))**2
我得到的錯誤:
/usr/local/lib/python2.7/dist-packages/sympy-0.7.7.dev0-py2.7.egg/sympy/simplify/fu.pyc in f(rv)
1323 key = cos(a*cc, evaluate=False)
1324 ccs.append(cc)
-> 1325 take = min(coss[key], take or coss[key])
1326 # update exponent counts
1327 for i in range(k):
KeyError: cos(1.0*u)
什麼似乎是問題在這裏?它自我表達似乎很直截了當。
編輯1:
只是爲了清楚起見,這是罪魁禍首:
simplify(expr)
其中expr
是以上表達式。
編輯2:
這裏是產生錯誤代碼:更換COS
from sympy import cos,sin, simplify
from sympy.abc import u,v
expr = 0.0625*v**2*cos(0.5*u)**2 + (-0.25*v*sin(0.5*u)*sin(u) + (0.5*v*cos(0.5*u) + 1)*cos(u))**2 + (-0.25*v*sin(0.5*u)*cos(u) - (0.5*v*cos(0.5*u) + 1)*sin(u))**2
simplify(expr)
如何破線1325成更小的位,所以你可以看到更多明確的錯誤是什麼?例如。你有沒有嘗試過自己評估'coss [key]'? 'take or coss [key]'怎麼樣? – barny
這是Sympy庫,而不是我自己的代碼。我只是在錯誤信息中粘貼了最後一個鏈接。 – imranal
那麼如何編輯你的問題來顯示你的一些實際的代碼(特別是一個miminal,可執行的,可驗證的子集,而不僅僅是一個給出錯誤的行),而不是庫代碼呢? – barny