问题是使用星号导入,而不是在不同的名称空间下导入每个包。
此导入功能sympy.functions.elementary.trigonometric.cos
的cos
名称为:
from sympy import *
之后,<ufunc 'cos'>
以名称导入cos
,覆盖之前的定义:
from scipy import *
然后,它用cos
完全相同功能的另一个副本(来自matplotlib包)覆盖先前的功能:
from pylab import *
这也导入相同<ufunc 'cos'>
的np.cos
名称。 这是导入事物的正确方法 :
import numpy as np
最后,剩下的是cos函数的副本,该函数知道如何将自身应用于浮点数,而不是sympy对象。当您尝试喜欢该功能适用于sympy对象phi
你得到的AttributeError
。总而言之,解决此特定问题的方法是修复导入,并知道是要使用sympy的函数还是numpy的函数。