开发者

Mathematical Integration of a function in Python

I'm trying to integrate this function:

Mathematical Integration of a function in Python

However I'm running into an error of:

Traceback (most recent call last):

  File "<ipython console>", line 1, in <module>

  File "siestats.开发者_运维知识库py", line 349, in NormalDistro

    P_inner = scipy.integrate(NDfx,-dev,dev)

TypeError: 'module' object is not callable

My code runs this:

# Definition of the mathematical function:
def NDfx(x):

    return((1/math.sqrt((2*math.pi)))*(math.e**((-.5)*(x**2))))

# This Function normailizes x, u, and o2 (position of interest, mean and st dev) 
# and then calculates the probability up to position 'x'

def NormalDistro(u,o2,x):


    dev = abs((x-u)/o2)


    P_inner = scipy.integrate(NDfx,-dev,dev)

    P_outer = 1 - P_inner

    P = P_inner + P_outer/2

    return(P)

Function NormalDistro is mean for import and used like this:

foo.NormalDistro(30,2.5,1.25)

As an example.


The module you are attempting to call is scipy.integrate, you need to call one of the functions within the module. Based on previous comments on chat you are probably wanting to use scipy.integrate.quad().

Also, it returns a tuple of (Result,MaximumError), so you shouldn't use P_inner directly in the sum for P, you want P = P_inner[0] + P_outer/2


return doesn't require (), simply return P works just fine

Though this actually wouldn't fix the issue you're seeing, as return(foo) should also work.

More information on the error would be helpful.


The integral of a gaussian is defined as the errorfunction. It is available from pythons math libaray or scipy.special (if you need a vectorized function). Its called erf. Also available is erfc, the complementary error function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜