File Exchange

Simpson's Rule Integration

version 1.6 (1.71 KB) by

Computes an integral "I" via Simpson's rule in the interval [a,b] with n+1 equally spaced points

Updated

This function computes the integral "I" via Simpson's rule in the interval [a,b] with n+1 equally spaced points

Syntax: I = simpsons(f,a,b,n)

Where,
f= can either be an anonymous function (e.g. f=@(x) sin(x)) or a vector containing equally spaced values of the function to be integrated
a= Initial point of interval
b= Last point of interval
n= # of sub-intervals (panels), must be integer

Written by Juan Camilo Medina - The University of Notre Dame

Example 1:

Suppose you want to integrate a function f(x) in the interval [-1,1].
You also want 3 integration points (2 panels) evenly distributed through the
domain (you can select more point for better accuracy).
Thus:
f=@(x) ((x-1).*x./2).*((x-1).*x./2);
I=simpsons(f,-1,1,2)

Example 2:

Suppose you want to integrate a function f(x) in the interval [-1,1].
You know some values of the function f(x) between the given interval,
those are fi= {1,0.518,0.230,0.078,0.014,0,0.006,0.014,0.014,0.006,0}
Thus:
fi= [1 0.518 0.230 0.078 0.014 0 0.006 0.014 0.014 0.006 0];
I=simpsons(fi,-1,1,[])
note that there is no need to provide the number of intervals (panels) "n",
since they are implicitly specified by the number of elements in the vector fi

Jacob Davis

Jacob Davis (view profile)

When I first started using it it worked great, but now whenever I try to use a function it gives me an error that says "Undefined function or variable 'x'." What am I doing wrong?

jinc chen

Maxime Boudreau

Maxime Boudreau (view profile)

Could it be possible that the algorithm isn't complete if n is odd? In that case, I think the formula doesn't take the last subinterval into account.

To see it, you can try:
simpsons(@sin,0,pi,100)
simpsons(@sin,0,pi,101)
simpsons(@sin,0,pi,102)
...

Ivan

shin

shin (view profile)

goddd

Juan Camilo Medina