首页 文章

返回方程的函数

提问于
浏览
2

我正在编写一个脚本来计算方程的定积分 . 我正在编写一个辅助函数,它将系数作为参数并返回x的函数 .

def eqn(x, k, c, a):
    return ((k*x + c**(1-a))

接下来,我使用从scipy导入的quad定义一个计算定积分的函数:

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)

但是,我得到一个错误说'name x is not defined' . 我明白 x isn 't defined globally, but I'我想知道如何编写一个辅助函数,它接受参数,并仍然返回一个可以在_2472310中使用的x函数?

谢谢!

PS - @bpachev,这是其他帖子的后续跟进

2 回答

  • 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 .

  • 0

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

    定义函数,将其与 x 集成并保存结果,然后评估 abx 的值的结果 .

    sample use of sympy

相关问题