% ENM 2.2
% Denna kod skrevs på övningen 2017-09-07 i SF1545

clear

% Funktionsdefinitioner med @-notation
gurka1 = @(x) exp(x)
gurka2 = @(x) 10*cos(x)

%x = -2:0.01:2
x = linspace(-15, 3, 100) % 100 punkter mellan -15 och 3
plot(x, gurka1(x), x, gurka2(x))
grid on % rutnät

f = @(x) exp(x) - 10*cos(x); % ska vara noll
fp = @(x) exp(x) + 10*sin(x); % fprim

% Beräkna den positiva roten med 8 decimalers precision
% Newton-Raphsons metod
xnn = 1.2 % startgissning
xn = xnn + 100; % något långt ifrån startgissningen (för att starta slingan)
tol = 0.5e-8 % för 8 decimaler
while abs(xn-xnn) > tol % fortsätt tills skillnaden blir mindre än tol
    xn = xnn; % det som var nytt förra gången är gammalt nu
    xnn = xn - f(xn)/fp(xn) % det nya den här gången
    change = abs(xn-xnn) % förändringen
end
% change minskar i varje steg!

format long
xnn % slutsvaret

% (Egentligen är det skillnad på 8 korrekta decimaler och
% 8 korrekta siffror. Här räknar vi med 8 korrekta decimaler,
% vill man ha korrekta SIFFROR måste man titta på relativfelet
% istället för absolutfelet.)
