% K6.5
% Denna kod skrevs på övningen 2017-11-01 i SF1545

clear

% Eulers metod för att lösa ett system
%   y' = f(t,y),
%   y(0) = y0
% där y och f är vektorer.

% Obs: första steget är att skriva om den givna diffekvationen
% som ett system av första ordningen genom att införa nya
% variabler.

dt = 0.01; % steglängd
t0 = 3; tend = 5; % start och sluttid
nsteps = (tend-t0)/dt; % antal steg

y0 = [1; -1] % startvärden (nu en vektor)
t = t0:dt:tend; % vektor med alla tidpunkter
y = zeros(2, numel(t)); % matris som ska innehålla lösningen
% Lösningen lagras nu i en matris där varje rad motsvarar en av
% variablerna och varje kolonn motsvarar en tidpunkt.
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) % detta ritar ut båda raderna i y som varsin kurva


% Funktion för högerledet i diffekvationen y'=f(t,y)
function dudx = f(x,u)
    dudx = [u(2); 10+2*u(1)*u(2)-4*x*(u(1)+u(2))^2];
end
