# SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.analysis.integration.univariate.riemann.newtoncotes

## Class Simpson

• java.lang.Object
• com.numericalmethod.suanshu.analysis.integration.univariate.riemann.newtoncotes.Simpson
• All Implemented Interfaces:
Integrator, IterativeIntegrator

public class Simpson
extends Object
implements IterativeIntegrator
Simpson's rule can be thought of as a special case of Romberg's method. It is the weighted average (or extrapolation) of two successive iterations of the Trapezoidal rule. Simpson's rule is often an accurate integration rule. Simpson's is expected to improve on the trapezoidal rule for functions which are twice continuously differentiable. However for rougher functions the trapezoidal rule is likely to be more preferable.
• ### Constructor Summary

Constructors
Constructor and Description
Simpson(double precision, int maxIterations)
Construct an integrator that implements Simpson's rule.
• ### Method Summary

All Methods
Modifier and Type Method and Description
int getMaxIterations()
Get the maximum number of iterations for this iterative procedure.
double getPrecision()
Get the convergence threshold.
double h()
Get the discretization size for the current iteration.
double integrate(UnivariateRealFunction f, double a, double b)
Integrate function f from a to b, $\int_a^b\! f(x)\, dx$
double next(int iteration, UnivariateRealFunction f, double a, double b, double sum)
Compute a refined sum for the integral.
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Constructor Detail

• #### Simpson

public Simpson(double precision,
int maxIterations)
Construct an integrator that implements Simpson's rule.
Parameters:
precision - the convergence threshold
maxIterations - the maximum number of iterations
• ### Method Detail

• #### integrate

public double integrate(UnivariateRealFunction f,
double a,
double b)
Description copied from interface: Integrator
Integrate function f from a to b, $\int_a^b\! f(x)\, dx$
Specified by:
integrate in interface Integrator
Parameters:
f - a univariate function
a - the lower limit
b - the upper limit
Returns:
$$\int_a^b\! f(x)\, dx$$
• #### next

public double next(int iteration,
UnivariateRealFunction f,
double a,
double b,
double sum)
Description copied from interface: IterativeIntegrator
Compute a refined sum for the integral.
Specified by:
next in interface IterativeIntegrator
Parameters:
iteration - the index/count for the current iteration, counting from 1
f - the integrand
a - the lower limit
b - the upper limit
sum - the last sum
Returns:
a refined sum
• #### h

public double h()
Description copied from interface: IterativeIntegrator
Get the discretization size for the current iteration.
Specified by:
h in interface IterativeIntegrator
Returns:
the discretization size
• #### getMaxIterations

public int getMaxIterations()
Description copied from interface: IterativeIntegrator
Get the maximum number of iterations for this iterative procedure. For those integrals that do not converge, we need to put a bound on the number of iterations to avoid infinite looping.
Specified by:
getMaxIterations in interface IterativeIntegrator
Returns:
the maximum number of iterations
• #### getPrecision

public double getPrecision()
Description copied from interface: Integrator
Get the convergence threshold. The usage depends on the specific integrator. For example, for an IterativeIntegrator, the integral is considered converged if the relative error of two successive sums is less than the threshold.
Specified by:
getPrecision in interface Integrator
Returns:
the precision