% Tehtävä 1
% Erilaisten ode-funktioiden interaktiivisuudesta johtuen tämä proseduuri
% "teht1" ei sellaisenaan auta paljoa. Sen sijaan matlab-editorin
% suorituskomennot (F5 jne) yhdessä pienten muokkailujen kanssa auttavat
% tutkimaan.
function y = teht1()
% oletustarkkuus. Nämä kuviot häviävät seuraavien alle.
ode45(@f, [0,20], 1)   %tuottaa kovasti askelmia t = 10:n tienoilla
ode113(@f, [0,20], 1)  %tuottaa hyvin samanlaisen esityksen kuin ode45

% lisätään tarkkuutta:
tarkka = odeset('reltol', 1e-4, 'abstol', 1e-7);
epatarkka = odeset('reltol', 1e-2, 'abstol', 1e-4);

% mutta tulos ei parane niinkään.
[xs1, ys1] = ode45(@f, [0,20], 1);
[xs2, ys2] = ode45(@f, [0,20], 1, tarkka);
[xs3, ys3] = ode45(@f, [0,20], 1, epatarkka);

% kaikilla tarkkuuksilla päästään tyydyttäviin tuloksiin.
plot(xs1,ys1, 'b*', xs2,ys2, 'r.', xs3,ys3, 'g+')
y = 0;

% Tarkasteltava differentiaaliyhtälö x' = f(x,t)
function y = f(x,t)
y = 3*x - x.^2 + sin(t);
