Математический форум Math Help Planet
http://mathhelpplanet.com/

Нахлждение минимума методом градиентного спуска
http://mathhelpplanet.com/viewtopic.php?f=21&t=33310
Страница 1 из 1

Автор:  Arlikini [ 13 май 2014, 17:42 ]
Заголовок сообщения:  Нахлждение минимума методом градиентного спуска

Всем привет.
Небольшой вопрос по методу оптимизации.
Реализовал метод градиентного спуска для нахождения минимума функции exp(-y)-cos(x^2+y). Метод работает при начальной точке x=0;y=0, но как только задаю другие параметры x;y, так появляется ошибка, никак не могу разобраться в чем дело. и еще при x=0;y=0 почему-то всего одна итерация.
Хотя для функций другого вида метод работает нормально.
Работа при x=0;y=0:
restart;
U:=exp(-y)-cos(x^2+y);
lambda:=0.1;
epsilon:=0.0001;
Ux:=diff(U,x);
Uy:=diff(U,y);
x:=0;
y:=0;
N1:=Ux;
N2:=Uy;
x:=x-lambda*N1;
y:=y-lambda*N2;
i:=1:
N1:=evalf(Ux);
N2:=evalf(Uy);
x:=x-lambda*N1;
y:=y-lambda*N2;
Nx:=max(N1,N2);
while abs(lambda*Nx)>epsilon do
N1:=Ux;
N2:=Uy;
x:=x-lambda*N1:
y:=y-lambda*N2:
Nx:=max(N1,N2);
i:=i+1:
end do:
print(X=x,Y=y);
print(`kolli4estvo iteraciy`,i);
print(`zna4enie funkcii`,U);

Автор:  one man [ 17 май 2015, 19:31 ]
Заголовок сообщения:  Re: Нахлждение минимума методом градиентного спуска

У Вас одна производная равна [math]0[/math]. Сместите чуток значение [math]x[/math] (например, [math]x=0.01[/math]), и одной начальной точкой на практике не ограничиваются.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/