0

Pythonで二重積分を行いたいです。http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.htmlの助けを借りて、私は次のことを行いました

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.

私は何をすべきか?

4

2 に答える 2

1

これによってintegrlのリターンを変更します:

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

integer.quad関数は、デフォルトで、積分値と絶対誤差の推定値を含むタプルを返します:scipy doc

于 2012-10-13T17:13:02.533 に答える
1

間違いは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)
于 2012-10-13T17:03:52.723 に答える