返回方程的函数

时间:2016-08-25 18:30:13

标签: python python-2.7 scipy

我正在编写一个脚本来计算方程的定积分。我正在编写一个辅助函数,它将系数作为参数并返回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,这是其他帖子的后续跟踪

2 个答案:

答案 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)

这不是你问的。然而,正如其他人提到的,同情可能会让你的生活更轻松。例如,假设您需要能够在下面的代码中评估 x 函数的积分,例如f,其中 a b 是任意常数。以下是你如何使用sympy来做到这一点。

定义函数,将其与 x 相结合并保存结果,然后评估 a b 值的结果<强> X

sample use of sympy