Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Finding Integrand using Weedle’s Rule

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a function f(x)     and two integers a and b. The task is to find the integrand of the given function from lower limit(a) to the upper limit(b) using Weedle’s Rule. 
The given function is: 
f(x) = \frac{1}{(1+x)^2}

Examples: 

Input: a = 0, b = 6 
Output: 1.373448

Input: a = 10, b = 13 
Output: f(x) = 0.022897 
 

Approach: 
The integration of any function f(x)     using Weedle’s Formula is given by: 

\int_{a}^{b} f(x) dx     \frac{3}{10} h (f_1 + 5f_2 + f_3 + 6f_4 + f_5 + 5f_6 + f_7)
where, 
h = \frac{(b-a)}{6}
f_i = f(x_i)     and i = [0, 6] 
x_1 = a
x_2 = x_1 + h
x_3 = x_1 + 2h
x_4 = x_1 + 3h
x_5 = x_1 + 4h
x_6 = x_1 + 5h
 

Below are the steps:  

  1. Find the value of h from the above formula i.e., h = \frac{(b-a)}{6}     .
  2. Find the value from x_1     to x_7     and calculate the value from f(x_1)     to f(x_7)
  3. Substitute the above values in Weedle’s Formula to find the integral value.

Below is the implementation of the above approach:  

C++




// C++ program to Implement Weedle's Rule
#include <bits/stdc++.h>
using namespace std;
 
// A sample function f(x) = 1/(1+x^2)
float y(float x)
{
    float num = 1;
    float denom = 1.0 + x * x;
 
    return num / denom;
}
 
// Function to find the integral value
// of f(x) with step size h, with
// initial lower limit and upper limit
// a and b
float WeedleRule(float a, float b)
{
    // Find step size h
    double h = (b - a) / 6;
 
    // To store the final sum
    float sum = 0;
 
    // Find sum using Weedle's Formula
    sum = sum + (((3 * h) / 10) * (y(a)
                                + y(a + 2 * h)
                                + 5 * y(a + h)
                                + 6 * y(a + 3 * h)
                                + y(a + 4 * h)
                                + 5 * y(a + 5 * h)
                                + y(a + 6 * h)));
 
    // Return the final sum
    return sum;
}
 
// Driver Code
int main()
{
    // lower limit and upper limit
    float a = 0, b = 6;
 
    // Function Call
    cout<< "f(x) = "<< fixed <<  WeedleRule(a, b);
    return 0;
}
// This code is contributed by shivanisinghss2110

C




// C program to Implement Weedle's Rule
#include <math.h>
#include <stdio.h>
 
// A sample function f(x) =  1/(1+x^2)
float y(float x)
{
    float num = 1;
    float denom = 1.0 + x * x;
 
    return num / denom;
}
 
// Function to find the integral value
// of f(x) with step size h, with
// initial lower limit and upper limit
// a and b
float WeedleRule(float a, float b)
{
    // Find step size h
    double h = (b - a) / 6;
 
    // To store the final sum
    float sum = 0;
 
    // Find sum using Weedle's Formula
    sum = sum + (((3 * h) / 10) * (y(a)
                                   + y(a + 2 * h)
                                   + 5 * y(a + h)
                                   + 6 * y(a + 3 * h)
                                   + y(a + 4 * h)
                                   + 5 * y(a + 5 * h)
                                   + y(a + 6 * h)));
 
    // Return the final sum
    return sum;
}
 
// Driver Code
int main()
{
    // lower limit and upper limit
    float a = 0, b = 6;
 
    // Function Call
    printf("f(x) = %f", WeedleRule(a, b));
    return 0;
}

Java




// Java program to Implement Weedle's Rule
import java.util.*;
class GFG{
 
    // A sample function f(x) = 1/(1+x^2)
    static float y(float x)
    {
        float num = 1;
        float denom = (float)1.0 + x * x;
     
        return num / denom;
    }
     
    // Function to find the integral value
    // of f(x) with step size h, with
    // initial lower limit and upper limit
    // a and b
    static float WeedleRule(float a, float b)
    {
        // Find step size h
        float h = (b - a) / 6;
     
        // To store the final sum
        float sum = 0;
     
        // Find sum using Weedle's Formula
        sum = sum + (((3 * h) / 10) * (y(a)
                                    + y(a + 2 * h)
                                    + 5 * y(a + h)
                                    + 6 * y(a + 3 * h)
                                    + y(a + 4 * h)
                                    + 5 * y(a + 5 * h)
                                    + y(a + 6 * h)));
     
        // Return the final sum
        return sum;
    }
     
    // Driver Code
    public static void main(String args[])
    {
        // lower limit and upper limit
        float a = 0, b = 6;
         
        // Function Call
        float num=WeedleRule(a, b);
        System.out.format("f(x) = "+"%.6f", num);
         
    }
}
 
// This code is contributed by AbhiThakur

Python3




# Python3 program to Implement Weedle's Rule
 
# A sample function f(x) = 1/(1+x^2)
def y(x):
    num = 1;
    denom = float(1.0 + x * x);
 
    return num / denom;
 
# Function to find the integral value
# of f(x) with step size h, with
# initial lower limit and upper limit
# a and b
def WeedleRule(a, b):
     
    # Find step size h
    h = (b - a) / 6;
     
    # To store the final sum
    sum = 0;
     
    # Find sum using Weedle's Formula
    sum = sum + (((3 * h) / 10) * (y(a)
            + y(a + 2 * h)
            + 5 * y(a + h)
            + 6 * y(a + 3 * h)
            + y(a + 4 * h)
            + 5 * y(a + 5 * h)
            + y(a + 6 * h)));
 
    # Return the final sum
    return sum;
 
# Driver Code
if __name__ == '__main__':
     
    # lower limit and upper limit
    a = 0;
    b = 6;
 
    # Function Call
    num = WeedleRule(a, b);
    print("f(x) = {0:.6f}".format(num));
 
# This code is contributed by sapnasingh4991

C#




// C# program to Implement Weedle's Rule
using System;
class GFG{
 
    // A sample function f(x) = 1/(1+x^2)
    static float y(float x)
    {
        float num = 1;
        float denom = (float)1.0 + x * x;
     
        return num / denom;
    }
     
    // Function to find the integral value
    // of f(x) with step size h, with
    // initial lower limit and upper limit
    // a and b
    static float WeedleRule(float a, float b)
    {
        // Find step size h
        float h = (b - a) / 6;
     
        // To store the final sum
        float sum = 0;
     
        // Find sum using Weedle's Formula
        sum = sum + (((3 * h) / 10) * (y(a)
                                    + y(a + 2 * h)
                                    + 5 * y(a + h)
                                    + 6 * y(a + 3 * h)
                                    + y(a + 4 * h)
                                    + 5 * y(a + 5 * h)
                                    + y(a + 6 * h)));
     
        // Return the final sum
        return sum;
    }
     
    // Driver Code
    public static void Main()
    {
        // lower limit and upper limit
        float a = 0, b = 6;
         
        // Function Call
        float num=WeedleRule(a, b);
        Console.Write("f(x) = "+num);
         
    }
}
 
// This code is contributed by AbhiThakur

Javascript




<script>
 
// Javascript program to Implement Weedle's Rule
 
// A sample function f(x) = 1/(1+x^2)
function y(x)
{
    let num = 1;
    let denom = 1.0 + x * x;
  
    return num / denom;
}
  
// Function to find the integral value
// of f(x) with step size h, with
// initial lower limit and upper limit
// a and b
function WeedleRule(a, b)
{
     
    // Find step size h
    let h = (b - a) / 6;
  
    // To store the final sum
    let sum = 0;
  
    // Find sum using Weedle's Formula
    sum = sum + (((3 * h) / 10) *
        (y(a) + y(a + 2 * h) + 5 * y(a + h) +
            6 * y(a + 3 * h) + y(a + 4 * h) +
            5 * y(a + 5 * h) + y(a + 6 * h)));
  
    // Return the final sum
    return sum.toFixed(6);
}
 
// Driver code
 
// lower limit and upper limit
let a = 0, b = 6;
 
// Function Call
let num = WeedleRule(a, b);
document.write("f(x) = " + num);
 
// This code is contributed by divyeshrabadiya07
 
</script>

Output: 

f(x) = 1.373448

 


My Personal Notes arrow_drop_up
Last Updated : 22 Dec, 2022
Like Article
Save Article
Similar Reads
Related Tutorials