Uploaded by mufassirabbasi789

Calculus Exam: Critical Points of Multivariable Function

advertisement
Output from Matlab:
Code:
clc;
close all;
clear all;
format long;
disp('Steepest Descent Method');
disp('=============');
%Starting points
x01=-1;
x02=0;
%Function F in Symbolic Format
a='(x^2*y - 2*x*y^2 + 3*x*y + 4)';
%Insert the desired magnitude of final direction vector (0.0001 is fine)
eserror=0.0001;
%Leave the rest unchanged
%=================================
syms x y
% Hessian Of F
fprintf('Function = %s\n', a);
A=[diff(diff(a,x),x),diff(diff(a,x),y);...
diff(diff(a,y),x),diff(diff(a,y),y)];
%First Order Derivative of F
B=[diff(a,x);diff(a,y)];
disp 'Hessian......';
pretty(simplify(A))
disp 'Gradient......';
pretty(simplify(B))
disp('Eigen Values');
[v,d]=eig(A);
disp(d);
num_of_iterations=1;
syms alpha
f=(subs(subs(a,x,x01),y,x02));
fprintf('f(x0)=%f\n',f);
while (num_of_iterations<7)
disp('_________________________________________');
fprintf('Iteration = %d\n', num_of_iterations);
temp=(subs(subs(B,x,x01),y,x02));
fprintf('Gradient of X%d\n', num_of_iterations-1);
disp(temp);
temp4=([x01;x02]);
fprintf('X%d =\n', num_of_iterations-1);
disp(temp4);
temp = temp4-alpha.*(temp);
fprintf('X%d - alpha. gradient(X%d) =\n', num_of_iterations-1, num_of_iterations-1);
disp(temp);
f_alpha= subs(subs(a,x, temp(1,1)), y, temp(2,1));
fprintf('f(X%d - alpha. gradient(X%d)) =\n', num_of_iterations-1, num_of_iterations-1);
disp(f_alpha);
diff_f_alpha = diff(f_alpha,alpha);
fprintf('diff(f(X%d - alpha. gradient(X%d)))/diff alpha =\n', num_of_iterations-1, num_of_iterations-1);
disp(diff_f_alpha);
alphaval=solve(diff_f_alpha, 'alpha');
alphaval2=eval(alphaval);
if alphaval2<0
disp 'Diverges';
break;
end
newxkplus1 = [x01;x02]-alphaval2.*(subs(subs(B,x,x01),y,x02));
x01 = newxkplus1(1,1);
x02 = newxkplus1(2,1);
fprintf('x%d =\n',num_of_iterations);
disp(newxkplus1)
num_of_iterations=num_of_iterations+1;
f=(subs(subs(a,x,x01),y,x02));
fprintf('f(x%d)=%f\n',num_of_iterations,f);
end
Download