function []=blatt3() z0=[-5,5]; beta=0.5; gamma=0.01; [x,y]=gradarmijo(@f, @gradientf, z0, beta, gamma) end function [z,fz] = gradarmijo(f, gradientf, z_0, beta, gamma) %z=z_0; %fz=f(z_0); z1=0; s=1; i=1; z(i,:)=z_0; fz(i,1)=f(z_0); while norm(gradientf(z(i,:))) > 0.00001 s = 1; z1 = z(i,:) - s*gradientf(z(i,:)); while f(z1) > f(z(i,:)) - gamma*s* norm(gradientf(z(i,:)))^2 s= beta*s; z1= z(i,:) - s*gradientf(z(i,:)); end i=i+1; z(i,:) = z1; fz(i,1) = f(z1); end n=length(z); z_real = z(n,:); conv(1)=0; step(1)=0; for i=1:n conv(i)=norm(z(i,:) - z(n,:)); step(i)=i; end plot(step,log(conv)) end function y=f(z) y = z(1)^2+ z(2)^2 + ( sin(z(1)) + cos(z(1)) )^2; end function y=gradientf(z) y = [ 2*z(1) + 2*( sin(z(1)) + cos(z(1)))*(cos(z(1)) - sin(z(1))), 2*z(2)]; end