我有一个与
scipy.integrate.quad
方法相关的问题:假设我有一个基函数,其中使用四元方法包含两个嵌套函数,并且我需要其中的两个输出值。但是你必须定义大函数的变量才能输出值。
例如,我想要这样的东西:
from scipy.integrate import quad
def myfunction(x):
function_0 = 1.25 * x ** 2
function_1 = function_0 * 9.81 + 2 * x
myreturn1 = function_1 * np.pi
myreturn2 = function_1 * np.pi ** 2
return quad(myreturn1, 0, np.inf)[0], quad(myreturn2, 0, np.inf)[0]
val1, val2 = myfunction(x)
当我调用这个函数时,你必须定义一个变量“x”,否则会输出错误。 有更好的方法吗?
quad
期望一个函数作为第一个参数,但是 function_0
、function_1
,以及因此的 myreturn1
和 myreturn2
只是表达式(如果您提供一个数字作为 x
,最有可能评估为数字) .
您也应该将它们全部定义为函数。您可以通过在内部调用另一个函数来定义一个函数:
from scipy.integrate import quad
def function_0(x):
return 1.25 * x ** 2
def function_1(x):
return function_0(x) * 9.81 + 2 * x
def myreturn1(x):
return function_1(x) * np.pi
def myreturn2(x):
return function_1(x) * np.pi ** 2
def myfunction():
return quad(myreturn1, 0, np.inf)[0], quad(myreturn2, 0, np.inf)[0]
val1, val2 = myfunction()