protected void Reset()
{
if ( m_IterationsCount == 0 )
m_Lambda = m_InitialLambda;
for ( int i=0; i < m_Dimension; i++ )
{
m_MinPoint[i] = m_InitialPoint[i];
m_PreviousMinPoint[i] = m_MinPoint[i] - 1.0;
}
// Calculate the function value and the jacobian
m_MinValue = m_Estimator.Eval( m_MinPoint, m_Jacobian );
m_PreviousMinValue = m_MinValue + 1;
// Calculate initial scaling factor
for ( int i=0; i < m_Dimension; i++ )
{
double Diag = 0.0;
for ( int j=0; j < m_ParametersCount; j++ )
Diag += m_Jacobian[j,i] * m_Jacobian[j,i];
Diag = Math.Sqrt( Diag );
if ( Diag < Math.Sqrt( EPSILON ) )
Diag = 1.0;
m_Diagonal[i] = Diag;
}
}