% ENM 7.4
% Denna kod skrevs på övningen 2017-11-01 i SF1545

clear

% Eulers metod för att lösa
%   y' = f(t,y),
%   y(0) = y0

dt = 0.1; % steglängd
t0 = 0; tend = 30; % start och sluttid
nsteps = (tend-t0)/dt; % antal steg

for y0 = [0 3 10] % startvärden (prova tre olika)
    t = t0:dt:tend; % vektor med alla tidpunkter
    y = zeros(size(t)); % vektor som ska innehålla lösningen
    y(1) = y0; % startvärde!
    for n=1:nsteps
        % Eulers metod
        y(n+1) = y(n) + dt*f(t(n), y(n));
    end
    plot(t, y)
    hold on
end


% Denna funktion är högerledet i diffekvationen y'=f(t,y)
% (y är här variabeln h, vattennivån i tanken)
function dhdt = f(t, h)
    A = 0.8; C = 0.1; g = 9.81; % konstanter
    if h >= 0 && h <= 20
        Qin = 1 - h/20;
    else
        Qin = 0;
    end
    Qut = C*sqrt(2*g*h);
    dhdt = (Qin - Qut)/A;
end
