simpsFunction function Null safety

double simpsFunction(
  1. double a,
  2. double b,
  3. int n,
  4. Function f
)

Compute the numerical integration of f() using the Simpson's rule.

  • a : start interval of the integration
  • b : final interval of the integration
  • n : number of the points between the interval
  • f : function to integrate

References

  1. "Numerical integration". https://rosettacode.org/wiki/Numerical_integration#Java. Retrieved 2019-07-31.

Examples

var i = simpsFunction(0, 2*pi, 20, (x) => cos(x));

print(truncate(i, 4));

/* output:
0
*/

Implementation

double simpsFunction(double a, double b, int n, Function f) {
  var range = checkParamsGetRange(a, b, n);
  var nFloat = n.toDouble();
  double sum1 = f(a + range / (nFloat * 2.0));
  var sum2 = 0.0;
  for (var i = 1; i < n; i++) {
    var x1 = a + range * (i.toDouble() + 0.5) / nFloat;
    sum1 += f(x1);
    var x2 = a + range * i.toDouble() / nFloat;
    sum2 += f(x2);
  }
  return (f(a) + f(b) + sum1 * 4.0 + sum2 * 2.0) * range / (nFloat * 6.0);
}