% Harjutustund 17, ylesanne 1
% 1) lahendame täpselt
syms yy(x);
% y'=y+1, Matlabis y'-> diff(y,x)
vorrand=diff(yy,x)==yy+1;
yldlahend=dsolve(vorrand) % C1*e^x-1
% dif. võrrandi erilahend algtingimusel y(0)=1. St x0=0 ja y0=1
tingimus=yy(0)==1;
erilahend=dsolve(vorrand,tingimus) % 2*e^x-1. ..... C1=2
% meid huvitab erilahendi joon. Hiljem leiame selle ligikaudsete
% meetoditega
f=matlabFunction(erilahend)
fplot(f,[0,5])

% leiame dif. võrrandi lahendi väärtuse, kui x=3.
n=10; % osalõikude arv
x0=0;
xn=3;
h=(xn-x0)/n; % sammu pikkus
x(1)=0; % algtingimus x_0
y(1)=1; % algtingimus y_0

% defineerime funktsiooni f(x,y).
% Kuna f sümbol on juba kasutuses, võtame g
g=@(x,y) y+1;
for i=2:n+1
 x(i)=x(i-1)+h;
 y(i)=y(i-1)+h*g(x(i-1),y(i-1));
end
x
y
% võime kirjutada välja ka y-i väärtuse, kui x=3
yeuler=y(n+1)
hold on
plot(x,y,'o-')
% täpne funktsiooni väärtus x=3 korral
f(3)

% lahendame prognoosi-korrelatsioonimeetodiga
for i=2:n+1
 x(i)=x(i-1)+h;
 y(i)=y(i-1)+h/2*g(x(i-1),y(i-1))+h/2*g(x(i),y(i-1)+h*g(x(i-1),y(i-1)));
end
x
y
yprogn=y(n+1)
hold on
plot(x,y,'*-')