我正在编写一个脚本来计算方程的定积分。我正在编写一个辅助函数,它将系数作为参数并返回x的函数。
def eqn(x, k, c, a):
return ((k*x + c**(1-a))
接下来,我定义了一个计算定积分的函数,使用从scipy导入的四元组:
from scipy.integrate import quad
def integral(eqn, c_i, y_i):
integral_i, integral_err = quad(eqn, c_i, y_i)
print integral_i
然后我通过传递参数
来调用该函数k = calc_k(7511675,1282474,0,38,2)
eqn = carbon_path_eqn(x, k, 7511675, 2)
carbon_path_def_int(eqn,0,38)
但是,我收到一条错误消息,指出'名称x未定义'。我理解x
并不是全局定义的,但是我想知道如何编写一个辅助函数,它接受参数,并且仍然返回一个可以在{{中使用的x函数。 1}}?
谢谢!
PS - @bpachev,这是其他帖子的后续跟踪
答案 0 :(得分:0)
这里的错误是功能' eqn'不返回函数,它在某个点x返回函数的值,给定参数k,c,a。
quad应该传递一个函数(在你的情况下,eqn),其中第一个参数(在你的情况下,x)被假定为集成函数的变量。您还需要传递其余参数的四元组(在您的情况下为(k,c,a))和两个限制(在您的情况下为c_i,y_i)。换句话说,像这样调用四元组:
quad(eqn,c_i,y_i,args=(k,c,a))
这些都在scipy文档http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html中解释。
答案 1 :(得分:0)