我已閱讀this SO post其中說名稱空間衝突是導致此錯誤的原因之一。我經常遇到這個錯誤。所以,我想了解究竟發生了什麼?圖書館期望什麼?sympy AttributeError:'Pow'對象沒有屬性'sin'
編輯:fun = lambda x: 4*x*(np.sin(x**2) - 3)*np.cos(x**2)
來自一個測試案例,所以我幾乎必須使用它作爲'fun'函數。對不起,錯過了這些信息。請討論尊重這個約束。
編輯2:這是一個錯誤再現代碼,而不是完整的腳本。 任務是通過使用擾動Δ= 10 -8的前向差分近似來計算可以評估numpy陣列的輸入函數的微分。
代碼:
import sympy
import numpy as np
# TESTING...
x = sympy.Symbol('x')
fun = lambda x: 4*x*(np.sin(x**2) - 3)*np.cos(x**2)
print fun
h = 10e-8 #perturbation
print fun(x)
print fun(x+h)
df = (fun(x+h) - fun(x))/h
print "diff is:", df
錯誤:
<function <lambda> at 0x000000001068E2E8>
Traceback (most recent call last):
File "<ipython-input-75-0582d8ebb11b>", line 1, in <module>
runfile('D:/test_hw3.py', wdir='D:')
File "D:\anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "D:\anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 87, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "D:/test_hw3.py", line 23, in <module>
print fun(x)
File "D:/test_hw3.py", line 20, in <lambda>
fun = lambda x: 4*x*(np.sin(x**2) - 3)*np.cos(x**2)
AttributeError: 'Pow' object has no attribute 'sin'
請問您可以根據我的編輯檢查您的答案。謝謝。 – devautor
@devautor你真的應該使用sympy嗎? – kennytm
是的,我是。你有其他選擇嗎? [雖然我的要求不會讓我追求他們這個任務] – devautor