
% funkcija Adams rešava problem eksplicitnom Adamasovom metodom reda 4.
% Podaci o Košijevom problemu zadati su fajlom primer čije se ime prosleđuje
% kao string argument. Početnih 4 vrednosti y0, y1, y2, y3 računaju se kao
% vrednoti polinoma čiji su koeficijenti zadati vektorom p
% korak se prosleđuje kao treći ulazni argument
% funkcija vraća aproksimaciju rešenja u čvorovima mreže.
% za test primer uzeti primer sa časa
% poziv y=Adams('primer3',[-17/60, 1/3,-1/3,1/2,-1,1],0.1)
function y=Adams(primer,P,h)
run(primer)
x=x0:h:xm; % čvorovi mreže
% vrednost aproksimacije u prve četiri tačke dobijamo pomoću
s=4; % red metode
yinit=polyval(P,x0:h:x0+(s-1)*h);
disp(yinit)
p=koefAdamsE(4);
%ukoliko su nam je poznata formula za izračunavanje, recimo rešenje tražimo
% eksplicitnom Adamsovom metodom reda 4, umesto da računamo koeficijente možemo
% direktno u donjoj petlji ubaciti formlu, tj. uzeti vektor p=[55/24- 59/24 37/24 -3/8]          -3/8

n=(xm-x0)/h; % dakle, imamo n+1 čvorova mreže
y=zeros(1,n+1);
y(1:s)=yinit;
F=zeros(1,n+1);
F(1:s)=f(x(1:s),y(1:s));
for j=s:n
y(j+1)=y(j)+h*p*F(j:-1:j-s+1)'; % p=[55/24- 59/24 37/24 -3/8] za metodu reda 4
                                % p=[3/2,-1/2] za metodu reda 2
F(j+1)=f(x(j+1), y(j+1)); % upisujemo novu vrednost desne strane
end




