function v = f(z); % f.m(x) % Laskee funktion arvon. % z = [x,y]' in R^2 %--------------------- x = z(1); y = z(2); v = 10*cos(x)*cos(y)/(x^2+y^2+10); end %***************************************************** function vec = gradf(z); % gradf.m(x) % Laskee funktion gradientivektorin pisteessä z. % z = [x,y]' ja v = [v1,v2]' in R^2 %--------------------- x = z(1); y = z(2); v1 = (-10*sin(x)*cos(y)*(x^2+y^2+10)-20*x*cos(x)*cos(y))/(x^2+y^2+10)^2; v2 = (-10*cos(x)*sin(y)*(x^2+y^2+10)-20*y*cos(x)*cos(y))/(x^2+y^2+10)^2; vec = [v1;v2]; end %***************************************************** %h3lisa0.m % harjoitus 3 lisätehtävä % 0: piirretään kolmiulotteinen kuva % ------------------------------- n = 40; x = linspace(-4,4,n); y = linspace(-4,4,n); z = zeros(n,n); for i=1:n for j=1:n z(i,j) = f([x(i),y(j)]'); end end surf(x,y,z); %***************************************************** %h3lisa1.m % harjoitus 3 lisätehtävä % 1: piirretään tasa-arvokäyrästö % ------------------------------- n = 20; x = linspace(-4,4,n); y = linspace(-4,4,n); z = zeros(n,n); for i=1:n for j=1:n z(i,j) = f([x(i),y(j)]'); end end contour(x,y,z); %***************************************************** %h3lisa2.m % harjoitus 3 lisätehtävä % 1: piirretään tasa-arvokäyrästö % 2: etsitään optimia % ------------------------------- n = 20; x = linspace(-4,4,n); y = linspace(-4,4,n); z = zeros(n,n); for i=1:n for j=1:n z(i,j) = f([x(i),y(j)]'); end end hold off contour(x,y,z); hold on; m = 20; s = 0.05; xk = linspace(0,0,m); yk = linspace(0,0,m); xk(1) = 1; yk(1) = 1; for k=2:m p = [xk(k-1),yk(k-1)]'; p2 = (p + s*gradf(p)); xk(k) = p2(1); yk(k) = p2(2); end plot(xk,yk,'k-o'); axis([-4,4,-4,4]); hold off