一直碰到“TypeError:”数字浮点数64“对象不可调用”

2024-04-19 05:22:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直收到错误

TypeError: 'numpy.float64' object is not callable"

我原以为我已经很小心地避免在函数中重复变量,但是每当我试图执行时,这个错误就会出现

scipy.integrate.odeint(doublepend,fnaught,t,args=(L,9.81,M))

我不知道发生了什么事。请参见下面的代码。在

^{pr2}$

我意识到我不需要多次导入numpy。我将这些函数设计成一个小的函数库,以便以后用作示例。在


Tags: 函数numpyobjectis错误notscipy小心
1条回答
网友
1楼 · 发布于 2024-04-19 05:22:46

我们需要查看一些堆栈,但即使这样,也很难确定哪个变量会产生问题。在

这个错误意味着某些代码试图执行类似x(args)的操作,即使用x作为函数。但与预期相反,x是一个数字,而不是一个函数。在

解决方案是确定引起问题的变量,并将其追溯到代码中。在

立刻,odeint的输入看起来不错:

odeint(doublepend,fnaught,t,args=(L,9.81,M))

其中只有第一个,doublepend必须是一个函数。看起来是这样的,但我会在odeint呼叫之前检查一下。在

fnaught是初始条件。您似乎创建了一个值的元组。我会生成一个数组,但我认为odeint会自动完成。在

t是一个数组

args获取一个数元组。这些将传递给您的doublepend。在

doublepend(fnaught, 0, L, 9.81, M)是否运行?它返回什么?在

另一个答案认为问题在于doublepend函数。堆栈跟踪可以清楚地表明这一点,正如上面的测试计算一样


^{pr2}$

好的-错误就在那个又长又丑的dy[3]表达式中。把它拆开,找出你在哪里用()来表示一个数字而不是函数。在

这看起来很可疑

np.cos(thetanaught-phinaught))))   (mtheta+mphi)

np.cos()的计算结果是一个数字,下一个(methata...)看起来像一个函数调用。如果我删除dy[3]的最后两行,它就会运行。在那行的延续处丢失了一些东西。在

相关问题 更多 >