/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.math.impl.minimization; import com.opengamma.strata.collect.array.DoubleArray; import com.opengamma.strata.collect.array.DoubleMatrix; /** * Describes the transformation (and its inverse) from a set of n variables (e.g. model parameters) to a set of m variables * (e.g. fitting parameters), where m <= n.The principle use is in constrained optimisation, where the valid values of the parameters * of a model live in some hyper-volume in R^n, but we wish to work with unconstrained variables in R^m. <p> * The model parameters are denoted as <b>y</b> and the unconstrained variables as <b>y*</b>, which are related by the vector function * <b>y*</b> = f(<b>y</b>), and its inverse <b>y</b> = f<sup>-1</sup>(<b>y*</b>). The i,j element of the Jacobian is the rate of change of * the i<sup>th</sup> element of <b>y*</b> with respect to the j <sup>th</sup> element of <b>y</b>, which is a (matrix) function of <b>y</b>, * i.e. <b>J</b>(<b>y</b>). The inverse Jacobian is the rate of change of <b>y</b> with respect to <b>y*</b>, i.e. <b>J</b><sup>-1</sup>(<b>y*</b>). * These four functions must be provided by implementations of this interface. */ public interface NonLinearParameterTransforms { int getNumberOfModelParameters(); int getNumberOfFittingParameters(); /** * Transforms from a set of model parameters to a (possibly smaller) set of unconstrained fitting parameters * @param modelParameters the model parameters * @return The fitting parameters */ DoubleArray transform(DoubleArray modelParameters); /** * Transforms from a set of unconstrained fitting parameters to a (possibly larger) set of function parameters * @param fittingParameters The fitting parameters * @return The model parameters */ DoubleArray inverseTransform(DoubleArray fittingParameters); /** * Calculates the Jacobian - the rate of change of the fitting parameters WRT the model parameters * @param modelParameters The model parameters * @return The Jacobian */ DoubleMatrix jacobian(DoubleArray modelParameters); /** * Calculates the inverse Jacobian - the rate of change of the model parameters WRT the fitting parameters * @param fittingParameters The fitting parameters * @return the inverse Jacobian */ DoubleMatrix inverseJacobian(DoubleArray fittingParameters); }