用户定义的函数是否可调用?

时间:2016-09-16 20:52:04

标签: python numpy

我不是一个非常有经验的程序员。请问您能告诉我为什么这段代码会给我错误信息:

错误:quad:第一个参数不可调用

代码:

from matplotlib import pyplot as plt
import numpy as np
import scipy.integrate as integrate

def parabola(x, a):
    return a+x**2

x=np.arange(-10, 10, 1)

plt.plot(x, parabola(x,2))

plt.show()

int1=integrate.quad(parabola(x,2), -5, 5)
print int1

是否所有用户定义的函数都可以调用?

2 个答案:

答案 0 :(得分:3)

您的代码中存在两个问题:

1)你调用函数parabola()。而是将其作为参数传递给integrate

2)parabola()是一个双参数函数。 integrate期望单参数函数。

要解决第二个问题,您需要将双参数函数转换为单参数函数。这是一种称为部分应用程序函数的通用技术。

试试这个:

def parabola1(x): return parabola(x, 2)

int1 = integrate.quad(parabola1, -5, 5)
print int1

答案 1 :(得分:1)

尝试:

int1=integrate.quad(parabola, -5, 5, args=(2,))

quad签名是:

quad(func, a, b, args=(), ...)

功能,较低范围,较高范围,args_to_pass通过等