我不是一个非常有经验的程序员。请问您能告诉我为什么这段代码会给我错误信息:
错误: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
是否所有用户定义的函数都可以调用?
答案 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通过等