2012-10-13 44 views
0

我想在python中做一个double积分。从http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html采取的帮助下,我做了以下python中的双积分

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


def func(x,a): 
    return a*x*x 

def integrl(a): 
    return integrate.quad(func,0,10,args=(a)) 

print integrate.quad(lambda x: integrl(x),0,1) 

但我得到以下错误

Traceback (most recent call last): 
File "test.py", line 12, in <module> 
print integrate.quad(lambda x: integrl(x),0,1) 
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 245, in quad 
retval = _quad(func,a,b,args,full_output,epsabs,epsrel,limit,points) 
File "/usr/lib/python2.7/dist-packages/scipy/integrate/quadpack.py", line 309, in _quad 
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit) 
quadpack.error: Supplied function does not return a valid float. 

我应该怎么办?

回答

0

错误出现在integrl函数中。在此我应该指定要与哪个参数进行整合。正确的代码应该阅读

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


def func(x,a): 
    return a*x*x 

def integrl(a): 
    return integrate.quad(func,0,10,args=(a))[0] 

print integrate.quad(lambda x: integrl(x),0,1) 
1

变化integrl由这一个回报:

return integrate.quad(func,0,10,args=(a))[0] 

的integrate.quad函数返回默认包含整合的价值和绝对错误的估计的元组: scipy doc