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

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

и

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 --И я так понял.. это какой-то тип овражной функции. поэтому могут быть проблемс