Simpson's rule in Python

前端 未结 6 2046
悲&欢浪女
悲&欢浪女 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 00:51

    All you need to do to make this code work is add a variable for a and b in the function bounds() and add a function in f(x) that uses the variable x. You could also implement the function and bounds directly into the simpsonsRule function if desired... Also, these are functions to be implimented into a program, not a program itself.

    def simpsonsRule(n):
    
        """
        simpsonsRule: (int) -> float
        Parameters:
            n: integer representing the number of segments being used to 
               approximate the integral
        Pre conditions:
            Function bounds() declared that returns lower and upper bounds of integral.
            Function f(x) declared that returns the evaluated equation at point x.
            Parameters passed.
        Post conditions:
            Returns float equal to the approximate integral of f(x) from a to b
            using Simpson's rule.
        Description:
            Returns the approximation of an integral. Works as of python 3.3.2
            REQUIRES NO MODULES to be imported, especially not non standard ones.
            -Code by TechnicalFox
        """
    
        a,b = bounds()
        sum = float()
        sum += f(a) #evaluating first point
        sum += f(b) #evaluating last point
        width=(b-a)/(2*n) #width of segments
        oddSum = float()
        evenSum = float()
        for i in range(1,n): #evaluating all odd values of n (not first and last)
            oddSum += f(2*width*i+a)
        sum += oddSum * 2
        for i in range(1,n+1): #evaluating all even values of n (not first and last)
            evenSum += f(width*(-1+2*i)+a)
        sum += evenSum * 4
        return sum * width/3
    
    def bounds():
        """
        Description:
            Function that returns both the upper and lower bounds of an integral.
        """
        a = #>>>INTEGER REPRESENTING LOWER BOUND OF INTEGRAL<<<
        b = #>>>INTEGER REPRESENTING UPPER BOUND OF INTEGRAL<<<
        return a,b
    
    def f(x):
        """
        Description:
            Function that takes an x value and returns the equation being evaluated,
            with said x value.
        """
        return #>>>EQUATION USING VARIABLE X<<<
    

提交回复
热议问题