% Script file newton2.m
% This script implements newton's method in two dimensions.
% Required input is the functions f(x,y) and g(x,y), and the
% Jacobian J(x,y). These should be provided in mfiles f.m,
% g.m and bigj.m .
% The script asks for a first guess p1, which should be entered
% as a column vector. The script then plots this point, and
% pauses before computing the next point p2. After hitting
% return, the script computes p2, plots it, and pauses, waiting
% for user to hit return for the next iterate p3. Iterates
% p1, ..., p5 are computed in this fashion. The numerical values
% are displayed on the screen.
% It is very useful to use the contour command to plot
% the zero level curves of f and g to approximately locate the
% root. Then hold on so that the iterates are plotted on the
% contour map.
p = input('enter the starting value p = [x1;y1] ');
x = p(1); y = p(2);
disp(' ')
disp(' iterate x y f(x,y) g(x,y) ')
ff = f(x,y); gg = g(x,y);
fprintf(' %d %0.5f %0.5f %0.5f %0.5f\n',1,x,y,ff,gg)
plot([x], [y], '*')
hold on
disp('hit return to continue')
pause
for n = 2:5
p = bigj(x,y)\(bigj(x,y)*p - [f(x,y);g(x,y)]);
x = p(1); y = p(2);
ff = f(x,y); gg = g(x,y);
fprintf(' %d %0.5f %0.5f %0.5f %0.5f\n',n,x,y,ff,gg)
plot([x], [y], '*')
if n < 5
disp(' hit return to continue ')
pause
end
end
hold off