Нужно написать программу на с++, которая с помощью градиентного метода минимизирует функцию Розенброка. 

Эта функция имеет точку минимума 

 и 

  
void task2(double (*fun)(double,double)){
        double eps = 1e-6;
        
        vector<double> vec;
        vec.push_back(-100);
        vec.push_back(10);
        Point X_1(2,vec);
        Point X_2(X_1);
        double norm1;
        
while(1)
{
        Point grd( Grad(fun, X_1) ); //<< endl;
        // найти такое l чтобы в нем функция fun была минимальна
        double l = 0.001;
        
        if ( norm(grd) < eps )
                break;
        X_2 = X_1 - l * grd;
        X_1 = X_2;
}
cout << X_1;
}
  Градиент находит корректно, с точностью 

Но не могу выбрать шаг 

 так, чтобы метод сходился к точке (1,1).
Ясно что 

 , и 

 это функция, которую нужно минимизировать
-- 05.05.2014, 21:04 --И я так понял.. это какой-то тип овражной функции. поэтому могут быть проблемс