% Skript som demonstrerar korleis Newtons metode fungerar

% Gir funksjonen som skal vere null - og den deriverte
TestFunk=@(x) -.2+x.*sin(x);
TestFunkDeriv=@(x) sin(x)+x.*cos(x);

% Set x_0 og talet på iterasjonar
x0=1.;
ItMax=3;

% Bestemer intervallet vi skal plotte over
xMin=-1;
xMax=2;
xVek=xMin:1e-2:xMax;

% Tilordnar xNy
xNy=x0;

% Set aksar:
Vaxis=[0 1.5 -.3 1.7];

% Plottar funksjonen
plot(xVek,TestFunk(xVek),'linewidth',2)
axis(Vaxis)
hold on
plot([xMin xMax],[0 0],'k-')
pause
plot(xNy,0,'rx')      % Plottar ny skjæring i raudt
axis(Vaxis)
pause                 % Stoppar og ventar på tastetrykk

% For-løkke som implementerar Newtons metode - med plott av tangentar
for It=1:ItMax
  It
  xGml=xNy;           % Oppdaterar den gamle x-verdien
  xNy=xGml-TestFunk(xGml)/TestFunkDeriv(xGml);
  Tang=TestFunk(xGml)+TestFunkDeriv(xGml)*(xVek-xGml);
  plot(xVek,Tang,'k') % Plottar tangent
  plot(xGml,0,'kx')   % Plottar forige sjkæringspunkt svart
  plot(xNy,0,'rx')    % Plottar ny skjæring raudt
  axis(Vaxis)
pause                 % Stoppar og ventar på tastetrykk
end
hold off
