2024-04-19 05:22:46 发布
网友
我一直收到错误
TypeError: 'numpy.float64' object is not callable"
我原以为我已经很小心地避免在函数中重复变量,但是每当我试图执行时,这个错误就会出现
scipy.integrate.odeint(doublepend,fnaught,t,args=(L,9.81,M))
我不知道发生了什么事。请参见下面的代码。在
我意识到我不需要多次导入numpy。我将这些函数设计成一个小的函数库,以便以后用作示例。在
我们需要查看一些堆栈,但即使这样,也很难确定哪个变量会产生问题。在
这个错误意味着某些代码试图执行类似x(args)的操作,即使用x作为函数。但与预期相反,x是一个数字,而不是一个函数。在
x(args)
x
解决方案是确定引起问题的变量,并将其追溯到代码中。在
立刻,odeint的输入看起来不错:
odeint
odeint(doublepend,fnaught,t,args=(L,9.81,M))
其中只有第一个,doublepend必须是一个函数。看起来是这样的,但我会在odeint呼叫之前检查一下。在
doublepend
fnaught是初始条件。您似乎创建了一个值的元组。我会生成一个数组,但我认为odeint会自动完成。在
fnaught
t是一个数组
t
args获取一个数元组。这些将传递给您的doublepend。在
args
doublepend(fnaught, 0, L, 9.81, M)是否运行?它返回什么?在
doublepend(fnaught, 0, L, 9.81, M)
另一个答案认为问题在于doublepend函数。堆栈跟踪可以清楚地表明这一点,正如上面的测试计算一样
好的-错误就在那个又长又丑的dy[3]表达式中。把它拆开,找出你在哪里用()来表示一个数字而不是函数。在
dy[3]
()
这看起来很可疑
np.cos(thetanaught-phinaught)))) (mtheta+mphi)
np.cos()的计算结果是一个数字,下一个(methata...)看起来像一个函数调用。如果我删除dy[3]的最后两行,它就会运行。在那行的延续处丢失了一些东西。在
np.cos()
(methata...)
我们需要查看一些堆栈,但即使这样,也很难确定哪个变量会产生问题。在
这个错误意味着某些代码试图执行类似
x(args)
的操作,即使用x
作为函数。但与预期相反,x
是一个数字,而不是一个函数。在解决方案是确定引起问题的变量,并将其追溯到代码中。在
立刻,
odeint
的输入看起来不错:其中只有第一个,
doublepend
必须是一个函数。看起来是这样的,但我会在odeint
呼叫之前检查一下。在fnaught
是初始条件。您似乎创建了一个值的元组。我会生成一个数组,但我认为odeint
会自动完成。在t
是一个数组args
获取一个数元组。这些将传递给您的doublepend
。在doublepend(fnaught, 0, L, 9.81, M)
是否运行?它返回什么?在另一个答案认为问题在于
doublepend
函数。堆栈跟踪可以清楚地表明这一点,正如上面的测试计算一样^{pr2}$
好的-错误就在那个又长又丑的
dy[3]
表达式中。把它拆开,找出你在哪里用()
来表示一个数字而不是函数。在这看起来很可疑
np.cos()
的计算结果是一个数字,下一个(methata...)
看起来像一个函数调用。如果我删除dy[3]
的最后两行,它就会运行。在那行的延续处丢失了一些东西。在相关问题 更多 >
编程相关推荐