Метод сопряженных градиентов
Запись от simonovada размещена 07.12.2019 в 19:10
Показов 1389
Комментарии 1
Метки matlab, поиск минимума функции
|
clear all; f = @(x,y)(x^2+2.*y^2+(exp(x)).*(exp(y)));%и сходная функция gradx=@(x,y)2*x+(exp(x)).*(exp(y)); grady=@(x,y)4*y+(exp(x)).*(exp(y)); x0=1; y0=1; e=0.05; p=1; alfa=1; a=-5; b=5; D=e/2; p=1; beta=1; while sqrt(gradx(x0,y0)*gradx(x0,y0)+grady(x0, y0)*grady(x0,y0))<100 if rem(p,2)==1 dx=-gradx(x0,y0); dy=-grady(x0,y0); g=@(alfa)f(x0+(alfa*dx),y0+alfa*dy); min_alfa=dihot(a,b,e,D,g); alfa=min_alfa; x0=x0+(alfa*dx);%- тк d=-diff(x,y) y0=y0+(alfa*dy); dx=-gradx(x0,y0); dy=-grady(x0,y0); p=p+1; if sqrt((gradx(x0,y0))^2+(grady(x0,y0))^2)< =e break end else g=@(alfa)f(x0+(alfa*dx),y0+(alfa*dy)); min_alfa=dihot(a,b,e,D,g); alfa=min_alfa; x1=x0-(alfa*dx);%- тк d=-diff(x,y) y1=y0-(alfa*dy); beta=(dx^2 + dy^2)/(dx^2 + dy^2); dx1=-gradx(x1,y1)+beta*dx; dy1=-grady(x1,y1)+beta*dy; x0=x1; yo=y1; dx=dx1; dy=dy1; p=p+1; end end minxy =[x0,y0]; minf=f(x0,y0); disp(['X Y: ' num2str(minxy,5)]) disp(['min(X,Y): ' num2str(minf,5)]) |
Метки matlab, поиск минимума функции
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
-
Запись от bedvit размещена 08.12.2019 в 12:43


