NumDart

Calculus

Numerical integration with the trapezoidal and Simpson rules, cumulative integrals and derivatives.

Like scipy.integrate.trapezoid, scipy.integrate.simpson

Integrate and differentiateIntegrate sampled data and functions with the trapezoidal and Simpson rules, and differentiate numerically.
import 'dart:math' as math;

import 'package:scidart/numdart.dart';

void main() {
  // integral of sin(x) from 0 to pi is exactly 2
  var x = linspace(0, math.pi, num: 101);
  var y = arraySin(x);
  print('trapezoidal: ${trapzArray(y, x: x)}');
  print('simpson: ${simpsArray(y, x: x)}');
  print('simpson on a function: ${simpsFunction(0, math.pi, 100, math.sin)}');

  // derivative of x^3 at x = 2 is 12
  print('d/dx x^3 at 2: ${differentiateFunction(2, (double x) => x * x * x)}');
  print('cumulative integral: ${cumIntegration(Array([1, 2, 3, 4])).toList()}');
}
Output
trapezoidal: 1.9998355038874442
simpson: 2.0000000108245044
simpson on a function: 2.000000000676472
d/dx x^3 at 2: 11.999999927070348
cumulative integral: [1.5, 4.0, 7.5]

Edit this guide on GitHub