|
IGLib 1.4
The IGLib base library for development of numerical, technical and business applications.
|
Base class for VectorFunctionBase and VectorFunctionBaseComponentwise. In general, use VectorFunctionBase and VectorFunctionBase in order to derive from. More...
Inheritance diagram for IG::Num::VectorFunctionBaseGeneral:
Collaboration diagram for IG::Num::VectorFunctionBaseGeneral:Classes | |
| class | ObjectStoreResults |
Public Member Functions | |
| VectorFunctionBaseGeneral () | |
| abstract void | Evaluate (IVectorFunctionResults evaluationData) |
| Performs evaluation of requwester function results and writes them to the provided data structure. | |
| abstract double | Value (IVectorFunctionResults evaluationData, int which) |
| Calculates and returns the particular component of the vector function value. | |
| abstract double | Derivative (IVectorFunctionResults evaluationData, int which, int component) |
| Calculates and returns the particular component of the vector function derivative. | |
| abstract double | SecondDerivative (IVectorFunctionResults evaluationData, int which, int rowNum, int columnNum) |
| Calculates and returns the particular component of the vector function's second derivative (Hessian). | |
| void | Value (IVector parameters, ref List< double > values) |
| Returns the value of vector function at the specified parameter. | |
| void | Derivative (IVector parameters, ref List< IVector > gradients) |
| Returns the first derivative of this function at the specified parameter. | |
| void | SecondDerivative (IVector parameters, ref List< IMatrix > hessians) |
| Returns the second derivative (Hessian) of this function at the specified arameter. | |
| abstract void | Evaluate (IVector parameters, ref bool calculateValues, ref List< double > values, ref bool calculateGradients, ref List< IVector > gradients, ref bool calculateHessians, ref List< IMatrix > hessians) |
| Calculation of values, gradients, and hessians of the vector function according to request flags. | |
| virtual void | NumericalDerivative (IVector x, IVector stepSizes, ref List< IVector > derivative) |
| Calculates numerical derivative of this function. Central difference formula is used. | |
| virtual void | NumericalSecondDerivative (IVector x, IVector stepsizes, ref List< IVector > secondDerivatives) |
| Calculates numerical second order derivative of this function. Central difference formula is used. | |
Protected Attributes | |
| object | _lock = new object() |
| string | _name |
| string | _description |
| int | _numParameters = -1 |
| int | _numValues = -1 |
| bool | _valuesDefined = true |
| bool | _derivativeDefined = false |
| bool | _secondDerivativeDefined = false |
| bool | _componentEvaluation = false |
| VectorFunctionBase.ObjectStoreResults | ResultsStore |
| Store of result objects for reuse. | |
Properties | |
| object | Lock [get] |
| virtual string | Name [get, set] |
| Returns a short name of the function. | |
| virtual string | Description [get, set] |
| Returns a short description of the function. | |
| virtual int | NumParameters [get, set] |
| Gets number of parameters of the current vector function (-1 for not defined, in case that function works with different numbers of parameters). | |
| virtual int | NumValues [get, set] |
| Gets number of values of the current vector function (-1 for not defined, e.g. in case that function works with different numbers of parameters and number of functions depends on number of parameters). | |
| virtual bool | ComponentWiseEvaluation [get, set] |
| Tells whether the function supports evaluation of individual components. If not then evaluation is performed through the Evaluate function. | |
| virtual bool | ValueDefined [get, set] |
| Tells whether value of the function is defined by implementation. | |
| virtual bool | DerivativeDefined [get, set] |
| Tells whether the first derivative is defined for this function (by implementation, not mathematically) | |
| virtual bool | SecondDerivativeDefined [get, set] |
| Tells whether the second derivative is defined for this function (by implementation, not mathematically) | |
Private Member Functions | |
| double | LinearCombinationValue (IVectorFunctionResults evaluationData, IVector coefficients) |
| Returns value of linear combination of functions contained in this vector function, with specified coefficients at specified parameters. | |
| void | LinearCombinationDerivative (IVectorFunctionResults evaluationData, IVector coefficients, ref IVector res) |
| Returns gradient of linear combination of functions contained in this vector function, with specified coefficients at specified parameters. | |
| double | LinearCombinationDerivative (IVectorFunctionResults evaluationData, IVector coefficients, int component) |
| Returns the specified component of gradient of combination of functions contained in this vector function, with specified coefficients at specified parameters. | |
| void | LinearCombinationSecondDerivative (IVectorFunctionResults evaluationData, IVector coefficients, ref IMatrix res) |
| double | LinearCombinationSecondDerivative (IVectorFunctionResults evaluationData, IVector coefficients, int rowNum, int columnNum) |
| Returns the specified component of Hessian of combination of functions contained in this vector function, with specified coefficients at specified parameters. | |
Base class for VectorFunctionBase and VectorFunctionBaseComponentwise. In general, use VectorFunctionBase and VectorFunctionBase in order to derive from.
$A Igor xx May10 Dec10; TODO: Implement linear combination of functions (and add them to the interface!!!)
| IG::Num::VectorFunctionBaseGeneral::VectorFunctionBaseGeneral | ( | ) | [inline] |
| abstract void IG::Num::VectorFunctionBaseGeneral::Evaluate | ( | IVectorFunctionResults | evaluationData | ) | [pure virtual] |
Performs evaluation of requwester function results and writes them to the provided data structure.
| analysisData | Data structure where request parameters are obtained and where results are written. |
Implements IG::Num::IVectorFunction.
Implemented in IG::Num::VectorFunctionBase, IG::Num::VectorFunctionBaseComponentWise, and IG::Num::VectorFunctionExamples::RosenBrockAndCircle.
| abstract double IG::Num::VectorFunctionBaseGeneral::Value | ( | IVectorFunctionResults | evaluationData, |
| int | which | ||
| ) | [pure virtual] |
Calculates and returns the particular component of the vector function value.
| evaluationData | Evaluation data that contains function parameters and can store function resuts. If the function does not support component-wise evaluation then results will be stored to this structure and returned from it. This makes reuse possible - when different components are evaluated subsequently with the same parameters, results are calculated only for the first time. |
| which | Specifies which function to evaluate. |
Implements IG::Num::IVectorFunction.
Implemented in IG::Num::VectorFunctionBase, and IG::Num::VectorFunctionBaseComponentWise.
| abstract double IG::Num::VectorFunctionBaseGeneral::Derivative | ( | IVectorFunctionResults | evaluationData, |
| int | which, | ||
| int | component | ||
| ) | [pure virtual] |
Calculates and returns the particular component of the vector function derivative.
| evaluationData | Evaluation data that contains function parameters and can store function resuts. If the function does not support component-wise evaluation then results will be stored to this structure and returned from it. This makes reuse possible - when different components are evaluated subsequently with the same parameters, results are calculated only for the first time. |
| which | Specifies which function to take. |
| component | Specifies which compoonent of the gradient should be returned. |
Implements IG::Num::IVectorFunction.
Implemented in IG::Num::VectorFunctionBase, and IG::Num::VectorFunctionBaseComponentWise.
| abstract double IG::Num::VectorFunctionBaseGeneral::SecondDerivative | ( | IVectorFunctionResults | evaluationData, |
| int | which, | ||
| int | rowNum, | ||
| int | columnNum | ||
| ) | [pure virtual] |
Calculates and returns the particular component of the vector function's second derivative (Hessian).
| evaluationData | Evaluation data that contains function parameters and can store function resuts. If the function does not support component-wise evaluation then results will be stored to this structure and returned from it. This makes reuse possible - when different components are evaluated subsequently with the same parameters, results are calculated only for the first time. |
| which | Specifies which function to take. |
| rowNum | Specifies which row of the Hessian (matrix of second derivatives) should be returned. |
| columnNum | Specifies which column of the Hessian (matrix of second derivatives) should be returned. |
Implements IG::Num::IVectorFunction.
Implemented in IG::Num::VectorFunctionBase, and IG::Num::VectorFunctionBaseComponentWise.
| void IG::Num::VectorFunctionBaseGeneral::Value | ( | IVector | parameters, |
| ref List< double > | values | ||
| ) | [inline] |
Returns the value of vector function at the specified parameter.
Implements IG::Num::IVectorFunction.
| void IG::Num::VectorFunctionBaseGeneral::Derivative | ( | IVector | parameters, |
| ref List< IVector > | gradients | ||
| ) | [inline] |
Returns the first derivative of this function at the specified parameter.
Implements IG::Num::IVectorFunction.
| void IG::Num::VectorFunctionBaseGeneral::SecondDerivative | ( | IVector | parameters, |
| ref List< IMatrix > | hessians | ||
| ) | [inline] |
Returns the second derivative (Hessian) of this function at the specified arameter.
Implements IG::Num::IVectorFunction.
| abstract void IG::Num::VectorFunctionBaseGeneral::Evaluate | ( | IVector | parameters, |
| ref bool | calculateValues, | ||
| ref List< double > | values, | ||
| ref bool | calculateGradients, | ||
| ref List< IVector > | gradients, | ||
| ref bool | calculateHessians, | ||
| ref List< IMatrix > | hessians | ||
| ) | [pure virtual] |
Calculation of values, gradients, and hessians of the vector function according to request flags.
| parameters | Parameters at which evaluation takes place. |
| calculateValues | Flag for calculation of function values, input/output. |
| values | Function values, output. |
| calculateGradients | Flag for calculation of functions gradients, input/output. |
| gradients | Gradients, output. |
| calculateHessians | Flag for calculation of Hessians, input/output. |
| hessians | Functions' hessians, output. |
Implements IG::Num::IVectorFunction.
Implemented in IG::Num::VectorFunctionBase, and IG::Num::VectorFunctionBaseComponentWise.
| double IG::Num::VectorFunctionBaseGeneral::LinearCombinationValue | ( | IVectorFunctionResults | evaluationData, |
| IVector | coefficients | ||
| ) | [inline, private] |
Returns value of linear combination of functions contained in this vector function, with specified coefficients at specified parameters.
| evaluationData | Data used for evaluation that also contains parameters (in evaluationData.Parameters) |
| coefficients | Coefficients of linear combination. |
| void IG::Num::VectorFunctionBaseGeneral::LinearCombinationDerivative | ( | IVectorFunctionResults | evaluationData, |
| IVector | coefficients, | ||
| ref IVector | res | ||
| ) | [inline, private] |
Returns gradient of linear combination of functions contained in this vector function, with specified coefficients at specified parameters.
| evaluationData | Data used for evaluation that also contains parameters (in evaluationData.Parameters) |
| coefficients | Coefficients of linear combination. |
| res | Output parameter where gradient is written to. |
| double IG::Num::VectorFunctionBaseGeneral::LinearCombinationDerivative | ( | IVectorFunctionResults | evaluationData, |
| IVector | coefficients, | ||
| int | component | ||
| ) | [inline, private] |
Returns the specified component of gradient of combination of functions contained in this vector function, with specified coefficients at specified parameters.
| evaluationData | Data used for evaluation that also contains parameters (in evaluationData.Parameters) |
| coefficients | Coefficients of linear combination. |
| component | Specifies which gradient component to return. |
| void IG::Num::VectorFunctionBaseGeneral::LinearCombinationSecondDerivative | ( | IVectorFunctionResults | evaluationData, |
| IVector | coefficients, | ||
| ref IMatrix | res | ||
| ) | [inline, private] |
| double IG::Num::VectorFunctionBaseGeneral::LinearCombinationSecondDerivative | ( | IVectorFunctionResults | evaluationData, |
| IVector | coefficients, | ||
| int | rowNum, | ||
| int | columnNum | ||
| ) | [inline, private] |
Returns the specified component of Hessian of combination of functions contained in this vector function, with specified coefficients at specified parameters.
| evaluationData | Data used for evaluation that also contains parameters (in evaluationData.Parameters) | ||
| coefficients | Coefficients of linear combination. | ||
| rowNum | Row number of the returned component.</parparam>
|
| virtual void IG::Num::VectorFunctionBaseGeneral::NumericalDerivative | ( | IVector | x, |
| IVector | stepSizes, | ||
| ref List< IVector > | derivative | ||
| ) | [inline, virtual] |
Calculates numerical derivative of this function. Central difference formula is used.
| x | Point at which derivative is calculated. |
| stepsize | Step size. |
| virtual void IG::Num::VectorFunctionBaseGeneral::NumericalSecondDerivative | ( | IVector | x, |
| IVector | stepsizes, | ||
| ref List< IVector > | secondDerivatives | ||
| ) | [inline, virtual] |
Calculates numerical second order derivative of this function. Central difference formula is used.
| x | Point at which second order derivative is calculated. |
| stepsize | Step size. |
object IG::Num::VectorFunctionBaseGeneral::_lock = new object() [protected] |
string IG::Num::VectorFunctionBaseGeneral::_name [protected] |
string IG::Num::VectorFunctionBaseGeneral::_description [protected] |
int IG::Num::VectorFunctionBaseGeneral::_numParameters = -1 [protected] |
int IG::Num::VectorFunctionBaseGeneral::_numValues = -1 [protected] |
bool IG::Num::VectorFunctionBaseGeneral::_valuesDefined = true [protected] |
bool IG::Num::VectorFunctionBaseGeneral::_derivativeDefined = false [protected] |
bool IG::Num::VectorFunctionBaseGeneral::_secondDerivativeDefined = false [protected] |
bool IG::Num::VectorFunctionBaseGeneral::_componentEvaluation = false [protected] |
Store of result objects for reuse.
object IG::Num::VectorFunctionBaseGeneral::Lock [get] |
Implements IG::Lib::ILockable.
virtual string IG::Num::VectorFunctionBaseGeneral::Name [get, set] |
Returns a short name of the function.
Implements IG::Num::IVectorFunction.
virtual string IG::Num::VectorFunctionBaseGeneral::Description [get, set] |
Returns a short description of the function.
Implements IG::Num::IVectorFunction.
virtual int IG::Num::VectorFunctionBaseGeneral::NumParameters [get, set] |
Gets number of parameters of the current vector function (-1 for not defined, in case that function works with different numbers of parameters).
Implements IG::Num::IVectorFunction.
virtual int IG::Num::VectorFunctionBaseGeneral::NumValues [get, set] |
Gets number of values of the current vector function (-1 for not defined, e.g. in case that function works with different numbers of parameters and number of functions depends on number of parameters).
Implements IG::Num::IVectorFunction.
virtual bool IG::Num::VectorFunctionBaseGeneral::ComponentWiseEvaluation [get, set] |
Tells whether the function supports evaluation of individual components. If not then evaluation is performed through the Evaluate function.
Implements IG::Num::IVectorFunction.
Reimplemented in IG::Num::VectorFunctionBase, and IG::Num::VectorFunctionBaseComponentWise.
virtual bool IG::Num::VectorFunctionBaseGeneral::ValueDefined [get, set] |
Tells whether value of the function is defined by implementation.
Implements IG::Num::IVectorFunction.
virtual bool IG::Num::VectorFunctionBaseGeneral::DerivativeDefined [get, set] |
Tells whether the first derivative is defined for this function (by implementation, not mathematically)
Implements IG::Num::IVectorFunction.
virtual bool IG::Num::VectorFunctionBaseGeneral::SecondDerivativeDefined [get, set] |
Tells whether the second derivative is defined for this function (by implementation, not mathematically)
Implements IG::Num::IVectorFunction.