% EX 2.1

% Bestäm nollställena till f(x) = (x^3 + 3x^2 - 3)/(x^2 - x - 1) med tre
% decimalers noggrannhet
% Samma rötter som g(x) = x^3 + 3x^2 - 3 (täljaren till f)
% Derivata g'(x) = 3x^2 + 6x;

% Plotta funktionen
x = -3:0.005:1;
g = x.^3 + 3*x.^2 - 3;
plot(x, g)

% Tre nollställen, ungefärliga värden
ns(1) = -2.5;
ns(2) = -1.3;
ns(3) = 0.9;

% Newton-Raphson
for i = 1:3
  step = 1;  % Steget i gränsprocessen
  % När steget < 10^-3 har vi 3 decimalers noggrannhet
  while step >= 10^-3
    % ns <- ns - g(ns)/g'(ns) 
    new_ns = ns(i) - (ns(i)^3 + 3*ns(i)^2 - 3)/(3*ns(i)^2 + 6*ns(i));
    step = abs(new_ns - ns(i));
    ns(i) = new_ns;
  end
end
disp('De tre rötterna med tre decimalers noggrannhet:')
disp(num2str(ns', '%0.3f'))


% Körning:
% >> EX_21
% De tre rötterna med tre decimalers noggrannhet:
% -2.532
% -1.347
%  0.879
