Click or drag to resize

BoundedMultiVariableFunctionFitterM Class

Class MultiVariableFunctionFitter< M > fits a parameterized multivariable function to a set of points where the parameters have inequality constraints.
Inheritance Hierarchy
SystemObject
  CenterSpace.NMath.CoreMultiVariableFunctionFitterM
    CenterSpace.NMath.CoreBoundedMultiVariableFunctionFitterM

Namespace: CenterSpace.NMath.Core
Assembly: NMath (in NMath.dll) Version: 7.4
Syntax
[SerializableAttribute]
public class BoundedMultiVariableFunctionFitter<M> : MultiVariableFunctionFitter<M>
where M : new(), IBoundedNonlinearLeastSqMinimizer

Type Parameters

M

[Missing <typeparam name="M"/> documentation for "T:CenterSpace.NMath.Core.BoundedMultiVariableFunctionFitter`1"]

The BoundedMultiVariableFunctionFitterM type exposes the following members.

Constructors
 NameDescription
Protected methodBoundedMultiVariableFunctionFitterM(Boolean) For internal use only.
Public methodBoundedMultiVariableFunctionFitterM(DoubleParameterizedFunctional) Constructs a BoundedMultiVariableFunctionFitter instance with the given generalized function.
Public methodBoundedMultiVariableFunctionFitterM(DoubleParameterizedFunctional, M) Constructs a BoundedMultiVariableFunctionFitter instance with the given generalized function and minimizer.
Public methodBoundedMultiVariableFunctionFitterM(FuncDoubleVector, DoubleVector, Double, Int32) Constructs a BoundedMultiVariableFunctionFitter instance for the given parameterized delegate.
Public methodBoundedMultiVariableFunctionFitterM(FuncDoubleVector, DoubleVector, Double, ActionDoubleVector, DoubleVector, DoubleVector, Int32) Constructs a BoundedMultiVariableFunctionFitter instance for the given parameterized delegate.
Top
Properties
 NameDescription
Public propertyFunction Gets and sets the parameterized function.
(Inherited from MultiVariableFunctionFitterM)
Public propertyMinimizer Gets and sets the function minimizer.
(Inherited from MultiVariableFunctionFitterM)
Top
Methods
 NameDescription
Public methodClone Creates a deep copy of this MultiVariableFunctionFitter.
(Inherited from MultiVariableFunctionFitterM)
Public methodFit(DoubleMatrix, DoubleVector, DoubleVector) Fits a function to the specified points.
(Inherited from MultiVariableFunctionFitterM)
Public methodFit(DoubleMatrix, DoubleVector, DoubleVector, DoubleVector, DoubleVector) Fits a function to the specified points where the resulting function parameters satisfy the given inequality constriants
C#
parameterLowerBounds[i] < parameters[i] < parameterUpperBounds[i]
for each i.
Public methodResidualVector Computes the residual vector from the given data points and solution.
(Inherited from MultiVariableFunctionFitterM)
Top
Fields
 NameDescription
Protected fieldf_ The parameterized function.
(Inherited from MultiVariableFunctionFitterM)
Protected fieldminimizer_ The minimizer.
(Inherited from MultiVariableFunctionFitterM)
Top
Remarks
In the space of the function parameters, begining at a specified starting point, finds a minimum (possibly local) in the sum of the squared residuals with respect to a set of data points subject to the supplied inequality constraints on the parameters. You must supply at least as many data points to fit as your function has parameters.
For example, the following code fits a function of the form data to the following function:
            F(p, x) = p[0]x[0]x[1]^2 + p[1]sin(x[0]) + p[2]x[1]^3;
            
to a set of 10 data points, beginning at point (1, 1, 1) in the parameter space. and satisfying the parameter constraints 0 < p[0] < 100 0 < p[1] < 50 0 < p[2] < 75
C#
DoubleMatrix x = new DoubleMatrix(10, 2);
x[Slice.All, 0] = new DoubleVector("3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4");
x[Slice.All, 1] = new DoubleVector("16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3");
DoubleVector upperBounds = new DoubleVector("100, 50, 75");
DoubleVector lowerBounds = new DoubleVector("0 0 0");
DoubleVector yValues = new DoubleVector("95.09 23.11 60.63 48.59 89.12 76.97 45.68 1.84 82.17 44.47");
DoubleVector initialParameters = new DoubleVector("10 10 10");


Func<DoubleVector, DoubleVector, double> f = delegate(DoubleVector p, DoubleVector xdata)
{
  return Math.Pow(p[0] * xdata[0] * xdata[1], 2.0) + p[1] * Math.Sin(xdata[0]) + Math.Pow(p[2] * xdata[1], 3.0);
};


MultiVariableFunctionFitter<TrustRegionMinimizer> fitter = new MultiVariableFunctionFitter<TrustRegionMinimizer>(f);
DoubleVector solution = fitter.Fit(x, yValues, initialParameters, lowerBounds, upperBounds);
Note that problems can have multiple local minima. Trying different initial parameter points is recommended for better solutions. Also, the initial parameter should satisfy the parameter constraints.
See Also