NumDart
Calculus
Numerical integration with the trapezoidal and Simpson rules, cumulative integrals and derivatives.
Like scipy.integrate.trapezoid, scipy.integrate.simpson
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]
- Sampled data:
trapzArray,simpsArrayandcumIntegrationtake the samplesyand either the positionsxor a constant spacingdx. - Functions:
trapzFunctionandsimpsFunctionintegrate a Dart function betweenaandbwithnintervals. - Derivatives:
differentiateFunctionuses a finite difference at one point, anddifferentiateArraydifferentiates sampled data.