% LMA400, 2017, Föreläsning 7, Exempel 4, Euler framåt
% Vi beräknar y(1)
%     y' = -y^2, 0 <= y <= 1
%   y(0) = 1
% med hjälp av linjär approximation
%   y(x + h) = y(x) + y'(x)*h
% där h = 1/N för olika värden på N.

dy = @(y) -y^2;             % Högerledet i differentialekvationen
y0 = 1;                     % Värdet av y(0)
plot([0, 20], [0.5, 0.5], ...
      'r', 'LineWidth', 2)  % Referenslinje för korrekt y(1)
hold on
for N = 1:20                % Loop över de olika antalen steg: 
    h = 1/N;                % Längden av ett steg
    y = y0;                 % Sätt y = y(0) från början
    for i = 1:N             % Loop över stegen
        y = y + dy(y)*h;    % Ta ett steg
    end
    plot(N, y, 'ok')        % Markera värdet av y(1) för detta antal steg
end
xlabel('Antal steg N')
ylabel('y(1)')