Simpson's rule in Python

前端 未结 6 2185
悲&欢浪女
悲&欢浪女 2021-01-06 00:43

For a numerical methods class, I need to write a program to evaluate a definite integral with Simpson\'s composite rule. I already got this far (see below), but my answer is

6条回答
  •  借酒劲吻你
    2021-01-06 01:09

    You can use this program for calculating definite integrals by using Simpson's 1/3 rule. You can increase your accuracy by increasing the value of the variable panels.

    import numpy as np
    
    def integration(integrand,lower,upper,*args):    
        panels = 100000
        limits = [lower, upper]
        h = ( limits[1] - limits[0] ) / (2 * panels)
        n = (2 * panels) + 1
        x = np.linspace(limits[0],limits[1],n)
        y = integrand(x,*args)
        #Simpson 1/3
        I = 0
        start = -2
        for looper in range(0,panels):
            start += 2
            counter = 0
            for looper in range(start, start+3):
                counter += 1
                if (counter ==1 or counter == 3):
                    I += ((h/3) * y[looper])
                else:
                    I += ((h/3) * 4 * y[looper])
        return I
    

    For example:

    def f(x,a,b):
        return a * np.log(x/b)
    I = integration(f,3,4,2,5)
    print(I)
    

    will integrate 2ln(x/5) within the interval 3 and 4

提交回复
热议问题