Search code examples
pythonmathplotphysicsintegral

How do I plot the integral of e^(-t^2) from x=0 to x=3 in Python?


I need to both calculate and plot the integral below in Python:

integral of the function e^(-t^2) from x=0 to x=3

So far I've managed to calculate the integral using Simpson's rule. The next bit which I'm struggling with is plotting the integral of e^(-t^2) vs x from x=0 to x=3 (see the image above).

Here's the code I've written to calculate the integral -

from math import exp

def f(t):
    return exp(-(t**2))

a = 0
b = 3
h = 0.1
N = int((b-a)/h)
s_even = 0
s_odd = 0

for k in range(1,N,2):
    s_odd += f(a+k*h)

for k in range(2,N,2):
    s_even += f(a+k*h)

s = f(a) + f(b) + 4*s_odd + 2*s_even
Integral = h*s/3
print(Integral)

How do I then create a graph of this integral?


Solution

  • Thanks for your help Red Cricket. It looks like you may have graphed the function e^(-t^2) rather than the integral of that function. Nonetheless, I think I've worked it out; I've discovered scipy has an integrate function:

    from math import exp
    from numpy import arange
    from scipy import integrate
    
    def f(t):
        return exp(-(t**2))
    
    a = 0
    b = 3
    h = 0.1
    N = int((b-a)/h)
    
    s_even = 0
    s_odd = 0
    
    for k in range(1,N,2):
        s_odd += f(a+k*h)
    
    for k in range(2,N,2):
        s_even += f(a+k*h)
    
    s = f(a) + f(b) + 4*s_odd + 2*s_even
    I = h*s/3
    
    function = []
    x = []
    for t in arange(0,4,h):
        function.append(f(t))
    for i in arange(0,4,h):
        x.append(i)
    
    function_int = integrate.cumtrapz(function,x,initial=0)
    
    plot(x,function_int)
    show()
    print(I)
    

    This produces a graph of the integral and prints the final value of the integral itself. Hooray!