LevenbergMarquardt constructor

LevenbergMarquardt(
  1. ParametrizedUnaryFunction<double> parametrizedFunction, {
  2. double? initialValue,
  3. dynamic initialValues,
  4. double? minValue,
  5. dynamic minValues,
  6. double? maxValue,
  7. dynamic maxValues,
  8. double gradientDifference = 1e-1,
  9. dynamic gradientDifferences,
  10. double damping = 1e-2,
  11. double dampingStepDown = 9.0,
  12. double dampingStepUp = 11.0,
  13. bool centralDifference = false,
  14. double improvementThreshold = 1e-3,
  15. double errorTolerance = 1e-7,
  16. int maxIterations = 100,
})

Implementation

LevenbergMarquardt(
  this.parametrizedFunction, {
  double? initialValue,
  dynamic initialValues,
  double? minValue,
  dynamic minValues,
  double? maxValue,
  dynamic maxValues,
  double gradientDifference = 1e-1,
  dynamic gradientDifferences,
  this.damping = 1e-2,
  this.dampingStepDown = 9.0,
  this.dampingStepUp = 11.0,
  this.centralDifference = false,
  this.improvementThreshold = 1e-3,
  this.errorTolerance = 1e-7,
  this.maxIterations = 100,
})  : initialValues = parametrizedFunction.toVector(initialValues,
          defaultParam: initialValue),
      minValues = parametrizedFunction.toVector(minValues,
          defaultParam: minValue ?? DataType.integer.safeMin.toDouble()),
      maxValues = parametrizedFunction.toVector(maxValues,
          defaultParam: maxValue ?? DataType.integer.safeMax.toDouble()),
      gradientDifferences = parametrizedFunction.toVector(gradientDifferences,
          defaultParam: gradientDifference) {
  if (parametrizedFunction.count == 0) {
    throw ArgumentError.value(parametrizedFunction, 'parametrizedFunction',
        'Expected at least 1 parameter.');
  }
  if (damping <= 0.0) {
    throw ArgumentError.value(
        damping, 'damping', 'Expected positive damping factor.');
  }
}