我必须定义一个包含积分的函数,但它一直给我这个错误
ValueError: invalid callable given
下面是我使用的代码
import numpy as np
from scipy.integrate import quad
def w(x, w0):
return w0*(1+x)
def fun(x, w0, H_i):
f = ( 3 * (1+w(w0, x)) ) / ( 1+x )
return quad(f,np.inf,0) + 2*np.log(H_i)
当我用任何值尝试这个函数时,它总是给我那个错误。我能做些什么来解决这个问题?非常感谢,祝你有一个美好的一天:)
1条答案
按热度按时间qacovj5a1#
“ValueError:invalid callable given”错误表示代码在传递给quad函数的参数时遇到了问题。此函数需要一个接受单个参数并返回浮点数的可调用函数。然而,在有趣的函数中,实际上是将quad函数本身作为第一个参数传入。
要解决这个问题,您应该修改您的fun函数,以定义一个新函数,该函数接受单个参数并返回被积函数的值。然后可以将这个新函数传递给quad函数。
下面是一个示例,说明如何修改代码以实现此目的:
在这个修改的fun函数中,我们定义了一个新的函数被积函数,它接受一个参数t并返回被积函数。然后我们将这个被积函数作为第一个参数传递给quad函数。
通过进行这些更改,您的有趣函数应该可以正常工作,而不会抛出“invalid callable”错误。
希望这有帮助!