Professional Documents
Culture Documents
Sadraj
1 Interpolacija 2
2 Diferencirae 20
3 Integracija 27
1
1 Interpolacija
1. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza X =
[x , ..., x ] i F = [f , ..., f ] (od kojih je prvi strogo rastui) za tu tabliqno zadatu
funkciju. Tablica ne mora biti ekvidistantna.
1 n 1 n
xi + xi+1 f (xi+1 ) + f (xi )
f = , i = 1, ..., n − 1.
2 2
2
Napisati M-fajl Lagr1.m sa funkcijom L = Lagr1(x) koja za uneti argument
x vraa priblinu vrednost funkcije f u toj taqki izraqunatu pomou La-
granovog interpolacionog polinoma L, korixeem svih vrednosti iz nove
tablice.
Rexee: Neka je na segmentu [a, b] zadato n + 1 razliqitih qvorova: x , x , ..., x
i neka su y = f (x ), i = 0, n, vrednosti funkcije y = f (x) u tim qvorovima. 0 1 n
n
Q
(x − xj )
(1)
n j=0
X j6=i
Ln (x) = n
Q · yi .
i=0 (xi − xj )
j=0
j6=i
Dakle, treba napisati program koji raquna vrednost L (x) u zadatoj taqki,
prema formuli 1. Ipak, ne moemo direktno kodirati zadatu formulu bez n
odreenih izmena.
Najpre, nama je zadato n qvorova interpolacije (to su elementi vektora X1; neka
je n duina tog vektora). Samim tim, granice suma i proizvoda idu od 1 do
n. Da e, pristup qvorovima x i x vrximo pomou X1(i), odnosno, X1(j). Na
kraju, pristup vrednostima funkcije y vrximo pomou F1(i).
i j
i
novatablica;
n = length(X1);
L = 0;
for i = 1:n
p = 1;
for j = 1:n
if j ~= i
p = p * (x-X1(j))/(X1(i)-X1(j));
end
end
L = L + p*F1(i);
end
3
2. Neka je funkcija f zadata eksplicitno komandnim M-fajlom f unkcija.m.
Rexee: Neka je zadata funkcija f (x) = . U M AT LAB-u, ovakve funkcije se
1
poqie @ simbolom, iza kojeg slede argumenti izmeu obiqnih zagrada, a zatim i
telo funkcije. Dakle, naxa funkcija bi mogla da izgleda f = @(x) 1/(1 + x^2).
Nedostatak ovakve definicije funkcije je taj xto ona moe za argument da primi
samo jednu taqku x. Ukoliko elimo da za proizvo an vektor X = [x1, x2, ...,
xn], poziv f(X) vrati vektor [f(x1), f(x2), ..., f(xn)], dovo no je da opera-
tore / (de ee) i ^ (stepenovae) zamenimo operatorima ./ i .^, redom. Operator
sabiraa vektora i skalara funkcionixe onako kako bismo i oqekivali { dodaje
vrednost skalara na svaki element vektora, tako da tu nema izmene.
% funkcija.m
f = @(x) 1./(1 + x.^2);
jemo traeni vektor. Meutim, xta ako je korak h iracionalan broj? U tom
n
4
Napisati M-fajl Lagr1b.m sa funkcijom [L, y] = Lagr1b(x, a, b, n) koji formira
i vraa koeficijente Lagranovog interpolacionog polinoma L formiranog
koristei sve vrednosti iz tablice, kao i vrednost formiranog polinoma u
taqki x.
M AT LAB ima ugraenu podrxku za rad sa polinomima. Polinomi se pred-
stav aju vektorom (vrstom) svojih koeficijenata, poqevxi od koeficijenta uz
najvixi stepen. Dakle, ako je polinom n-tog stepena, tada vektor koeficijenata
sadri n + 1 element. Na primer, polinom x − 1 se u M AT LAB-u predstav a
2
5
Uporediti grafike funkcije f i formiranog interpolacionog polinoma.
function [] = grafik(a, b, n)
% Poziv funkcije: grafik(a, b, n)
% Ulazne vrednosti : (a,b) - interval na kome se funkcija tabelira
% n - broj cvorova
% Izlaz : grafici funkcije i interpolacionog polinoma
%
% Pomocne funkcije i fajlovi:
% [L,y] = Lagr1b(x,a,b,n) - vraca koeficijente polinoma
% funkcija.m - sadrzi eksplicitno zadatu funkciju f
% [X,Y] = tablica(a,b,n) - tablica funkcije
6
Rezultat poziva grafik(-10,10,11).
3. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza X =
[x1, x2, ..., xn] i F = [f1, f2, ..., fn] za tu tabliqno zadatu funkciju.
%tablica.m
X = -3:3;
f = @(x) x.^6;
F = f(X);
Jednakost elemenata vektora moemo takoe programirati for pet om, ali M AT LAB
nam pomae i ovde! Funkcijom all(V) dobijamo vrednost 1 ako nijedan element
vektora V nije 0. Kako nam ovo pomae? Naredbom V==V(1) dobijamo vektor u
kojem se na poziciji i nalazi 1 ukoliko je V = V , a 0 inaqe. Kompozicijom
funkcije all() i prethodne naredbe dobijamo 1 ako je vektor ekvidistantan, a
i 1
tablica;
n=length(X);
if x < X(2)
p = 1;
elseif x > X(n-1)
p = 2;
else
p = 0;
end
8
Napisati M-fajl N jutn.m sa funkcijom N jutn(x) koja ukoliko su svi uslovi
ispueni, vraa priblinu vrednost funkcije f u taqki x izraqunatu korix-
eem I (II ) utnovog interpolacionog polinoma, ako je vrednost funkcije
polozaj u taqki x jednaka 1 (2), odnosno izdaje odgovarajuu poruku ukoliko je
polozaj(x) = 0.
qvorovima x , i = 0, n.
0
i
i i
Nije texko zak uqiti da se raqunae konaqnih razlika vrxi iterativno. Konaqne
razlike je pogodno smestiti u matricu; matrice mogu biti dijagonalne i hori-
9
zontalne
x y ∆y ∆2 y ∆3 y ... ∆n−2 y ∆n−1 y ∆n y
x0 y0 ∆y0 ∆2 y0 ∆3 y0 ... ∆n−2 y0 ∆n−1 y0 ∆n y0
x1 y1 ∆y1 ∆2 y1 ∆3 y1 ... ∆n−2 y1 ∆n−1 y1
x2
.. ..
y2
..
∆y2
..
∆2 y2
.. . . .
∆3 y2 ... ∆n−2 y2
Polinom i
∆y0 ∆2 y0
Pn (x) = y0 +
1!h
(x − x0 ) +
∆n y0
2!h2
(x − x0 )(x − x1 ) + ...+
(2)
+ (x − x0 )(x − x1 ) · ... · (x − xn ),
odnosno, ako uvedemo smenu
n!hn
x − x0
u=
dobijamo polinom
h
∆y0 ∆2 y0
Pn (u) = y0 +
1!
u+
∆n y0
2!
u(u − 1) + ...+
(3)
+ u(u − 1) · ... · (u − n + 1),
n!
xto nazivamo prvi utnov interpolacioni polinom za ekvidistantne qvorove
(ili prvi utnov interpolacioni polinom sa konaqnim razlikama), a polinom
∆yn−1 ∆2 yn−2
Pn (x) = yn +
1!h
∆n y0
(x − xn ) +
2!h2
(x − xn )(x − xn−1 )+
(4)
+ (x − xn )(x − xn−1 ) · ... · (x − x1 ),
odnosno, ako uvedemo smenu
n!hn
x − xn
v=
dobijamo polinom
h
∆yn−1 ∆2 yn−2
Pn (v) = yn +
1!
∆n y0
v+
2!
v(v + 1) + ...+
(5)
+ v(v + 1) · ... · (v + n − 1),
n!
10
xto nazivamo drugi utnov interpolacioni polinom za ekvidistantne qvorove
(ili drugi utnov interpolacioni polinom sa konaqnim razlikama).
function [y] = Njutn(x)
% Poziv funkcije: y = Njutn(x)
% Ulazne vrednosti: x - tacka u kojoj se zeli dobiti vrednost funkcije
% date tablicom u fajlu tablica.m, koriscenjem Njutnovog
% interpolacionog polinoma sa konacnim razlikama
% Izlazne vrednosti: y - vrednost Njutnovog interpolacionog polinoma sa
% konacnim razlikama u tacki x
%
% Pomocne funkcije i fajlovi: tablicaCheck() - provera ekvidistantnost
% tablice
% polozaj(x) - vraca polozaj tacke x u
% vektoru X
% tablica.m - sadrzi tablicu (vektore X i F)
if ~tablicaCheck()
error('Tablica nije ekvidistantna. Metoda se ne moze primeniti.')
end
pol = polozaj(x);
tablica;
n = length(X);
if pol == 0
error(['Ulazni argument mora biti manji od ', num2str(X(2)), ...
' ili veci od ', num2str(X(n-1)), '.'])
end
11
elseif pol == 2
% 2. Njutnov interpolacioni polinom
q = (x-X(n))/(X(2)-X(1));
p = 1;
y = F(n);
for i = 1:n-1
p = p * (q+i-1);
y = y + p*tabk(n-i,i)/factorial(i);
end
end
4. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza
X = [x1, x2, ..., xn] i Y = [y1, y2, ..., yn] za tu tabliqno zadatu funkciju.
Tablica ne mora biti ekvidistantna.
Rexee: Zadajmo M-fajl tablica.m na sledei naqin:
% tablica.m
X = [100, 121, 144];
Y = [10, 11, 12];
tablica;
hx = diff(X);
hy = diff(Y);
r = all(hx>0);
m = all(hy>=0) || all(hy<=0);
t = m&&r;
if ~m
disp('Vektor Y mora biti monoton.')
end
12
if ~r
disp('Vektor X mora biti strogo rastuci.')
end
Napisati M-fajl vredf unk.m sa funkcijom y = vredf unk(x) koja za uneti ar-
gument x vraa priblinu vrednost funkcije f u toj taqki izraqunatu pomou
utnovog interpolacionog polinoma sa pode enim razlikama konstruisanog
korixeem svih vrednosti iz tablice.
Rexee: Neka je funkcija y = f (x) zadata tabliqnim vrednostima y = f (x ), i =
0, n, gde su x ∈ [a, b], i = 0, n, nejednako razmaknuti qvorovi, dakle,
i i
i
xi+1 − xi = hi 6= 0, i = 0, n − 1,
Pode ene razlike se obiqno zapisuju u obliku tablice pode enih razlika, i
na taj naqin se postie preglednost. Tablice su sledeeg oblika, analogno
tablicama konaqnih razlika.
x y f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] ... f [xi , xi+1 , ..., xi+n−1 ] f [xi , xi+1 , ..., xi+n ]
x0 y0 f [x0 , x1 ] f [x0 , x1 , x2 ] ... f [x0 , x1 , ..., xn−1 ] f [x0 , x1 , ..., xn ]
..
x1
..
y1
..
f [x1 , x2 ]
..
f [x1 , x2 , x3 ]
...
... f [x1 , x2 , ..., xn−1 ]
Polinom i i
0
1
1 n
0 n
0
0 1
1
2
+ L [x , x , ..., x ](x − x )(x − x ) · ... · (x − x ),
n
0
(6)
n−1
1
if ~tablicaCheck()
error('Nisu ispunjeni uslovi zadatka.')
end
tablica;
n = length(X);
% matrica u koju cemo upisivati podeljene razlike po kolonama
tabp = zeros(n-1);
% pomocna promenljiva
pod = Y;
for i = 1:n-1
pod = diff(pod)./(X(i+1:n)-X(1:n-i));
tabp(1:n-i,i) = pod;
end
disp('Tablica podeljenih razlika u formatu: X, Y, podeljene razlike')
disp([X',Y',[tabp;zeros(1,n-1)]])
14
% y = [0,y] + tabp(1,i)*p;
% end
% disp('Koeficijenti polinoma su:')
% disp(y)
% y = polyval(y,x); %vrednost polinoma
5. Neka su u komandnom fajlu podaci.m dati funkcija f i vektor X koji sadri samo
celobrojne vrednosti.
Rexee: Zadajmo M-fajl podaci.m na sledei naqin:
% podaci.m
X = [1,2,3,5,6,7,8,10];
f = @(x) sqrt(x);
podaci;
15
Napisati M-fajl inverz.m sa funkcijom inverz(y) koja za zadatu vrednost y
inverznom interpolacijom priblino odreuje x za koje je f (x) = y. (*Tablica
nee biti ekvidistantna, pa koristimo Lagranov interpolacioni polinom).
Rexee: Neka su y = f (x ) zadate vrednosti funkcije y = f (x) u qvorovima
interpolacije x , i = 0, n. Postupak nalaea argumenta x koji odgovara zada-
i i
toj vrednosti y funkcije y = f (x), koja nije data u tablici, naziva se inverzna
i
[X1,Y1] = tablica();
n = length(X);
y = 0;
for i = 1:n
p = 1;
for k = 1:n
if k ~= i
p = p * (x-X(k))/(X(i)-X(k));
16
end
end
y = y + Y(i)*p;
end
funkcija;
X = linspace(a, b, n);
Y = f(X);
Napisati M-fajl promenaZnaka.m sa funkcijom [c, d] = promenaZnaka(a,
b, n) koja na osnovu nizova X i Y dobijenih pozivaem funkcije tablica(a,
b, n) pronalazi i kao rezultat vraa prvi interval [x , x ] u kome funkcija
mea znak (c = x , d = x ). Pretpostav a se da takav interval postoji.
i i+1
i i+1
17
% Pomocna funkcija: [X,Y] = tablica(a,b,n) - tabeliranje funkcije
c = X(k);
d = X(k+1);
∆yn−1 ∆2 yn−2
y ∗ = yn + q+ q(q + 1) + ...+
1! 2!
∆n y0
+ q(q + 1) · ... · (q + n − 1),
n!
odakle je
y ∗ − yn
2
∆n y0
1 ∆ yn−2
q= − q(q + 1) + ... + q(q + 1) · ... · (q + n − 1) ,
∆yn−1 ∆yn−1 2! n!
gde je
y ∗ − yn
2
∆n y0
1 ∆ yn−2
F (q) = − q(q + 1) + ... + q(q + 1) · ... · (q + n − 1) .
∆yn−1 ∆yn−1 2! n!
18
function [y] = nula(a, b, n)
% Poziv funkcije: y = nula(a,b,n)
% Ulazni argumenti: (a,b) - interval
% n - broj cvorova
% Izlazni argumenti: y - nula funkcije odredjena inverznom interpolacijom,
% koristeci 2. Njutnov interpolacioni polinom sa
% konacnim razlikama stepena 3, na segmentu [c,d];
% kriterijum zaustavljanja iterativnog niza je
% |q_i-q_(i-1)| <=10^(-4), i=2,3,...
%
% Pomocne funkcije: [c,d] = promenaZnaka(a,b,n) - vraca segment na kome
% funkcija menja znak
% [X,Y] = tablica(a,b,n) - tabeliranje funkcije
if isempty([c,d])
error('Funkcija ne menja znak.')
end
[X,Y] = tablica(c,d,4);
kon = Y;
% Potrebne su nam konacne razlike do reda 3
tabk = zeros(3);
for i = 1:3
kon = diff(kon);
tabk(1:4-i,i) = kon;
end
disp([X', Y', [tabk;zeros(1,3)]])
19
2 Diferencirae
7. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza
X = [x , x , ..., x ] i Y = [y , y , ..., y ] (od kojih je prvi strogo rastui) za tu tabliqno
zadatu funkciju. Tablica ne mora biti ekvidistantna.
1 2 n 1 2 n
tablica;
n = length(X);
for i = 1:n-2
Yi(i) = (Y(i+2)-Y(i))/(X(i+2)-X(i));
end
% Moze i krace:
% tablica;
% Yi=(Y(3:end)-Y(1:end-2))./(X(3:end)-X(1:end-2));
[X,Y,Yi] = izvod();
n = length(Yi);
tab = zeros(n-1);
pod = Yi;
X1 = X(2:end-1);
for i=1:n-1
pod = diff(pod)./(X1(i+1:n)-X1(1:n-i));
tab(1:n-i, i) = pod;
end
s = Yi(1);
p = 1;
for i = 1:n-1
p = p*(x-X1(i));
s = s + p*tab(1, i);
end
V = s;
[X, Y, I] = izvod();
y = 0;
% Savet je da se prvo sortiraju vrednosti novih cvorova
% u rastucem poretku pre pravljenja tablice podeljenih razlika,
% jer iako teorijski moramo dobiti istu vrednost, racunska greska
% koja nastaje prilikom odredjivanja podeljenih razlika moze
% dovesti do toga da se rezultati razlikuju.
21
[X1, ind] = sort(I);
Y1 = X(2:end-1);
Y1 = Y1(ind);
n = length(Y1);
tab = zeros(n-1);
pod = Y1;
for i = 1:n-1
pod = diff(pod)./(X1(i+1:n)-X1(1:n-i));
tab(1:n-i, i) = pod;
end
8. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza
X = [x , x , ..., x ] i Y = [y , y , ..., y ] (od kojih je prvi strogo rastui) za tu tabliqno
zadatu funkciju. Tablica mora biti ekvidistantna (sa korakom h).
1 2 n 1 2 n
22
% Y2 - tablica drugog izvoda funkcije f u cvorovima
%
% Pomocne funkcije: tablica - sadrzi vektore X i Y
tablica;
n = length(X);
h = X(2) - X(1);
for i = 1:n-2
Y2(i) = (Y(i) - 2*Y(i+1) + Y(i+2))/(h*h);
end
% Moze i krace:
% tablica;
% Y2 = diff(diff(Y))/h^2;
[X,Y,Y2] = drugiizvod();
n = length(Y2);
X2 = X(2:end-1);
kon = Y2;
tabk = zeros(n-1);
for i = 1:n-1
kon = diff(kon);
tabk(1:n-i, i) = kon;
end
s = Y2(1);
p = 1;
q = (x - X2(1))/(X2(2)-X2(1));
for i = 1:n-1
p = p*(q-i+1);
s = s + tabk(1, i)*p/factorial(i);
end
23
V = s;
Rexee:
function x = nula()
% Poziv funkcije: x = nula()
% Ulazni argumenti: (~) - nema
% Izlazni argumenti: x - priblizna vrednost nule drugog izvoda funkcije f
%
% Pomocne funkcije: [X,Y,Y2] = drugiizvod() - sadrzi tablice funkcije
% i prvog izvoda funkcije
[X,Y,Y2] = drugiizvod();
n = length(Y2);
X2 = X(2:end-1);
kon = Y2;
tabk = zeros(n-1);
for i = 1:n-1
kon = diff(kon);
tabk(1:n-i, i) = kon;
end
h = X2(2) - X2(1);
q0 = g(0);
q1 = g(q0);
while abs(q0 - q1) > 10^(-4)
q0 = q1;
q1 = g(q0);
end
x = X2(1) + q1*h;
24
9. Neka je funkcija f zadata tabliqno M-fajlom tablica.m koji generixe dva niza
X = [x , x , ..., x ] i Y = [y , y , ..., y ] (od kojih je prvi strogo rastui) za tu tabliqno
zadatu funkciju. Tablica mora biti ekvidistantna (sa korakom h).
1 2 n 1 2 n
tablica;
n = length(Y);
kon = Y;
tabk = zeros(n-1);
for i = 1:n-1
kon = diff(kon);
tabk(1:n-i, i) = kon;
end
h = X(2)-X(1);
q = (x-X(1))/h;
% 1. nacin:
% Direktno kodiramo prvi izvod Njutnovog interp. polinoma
i1 = (tabk(1,1) + (tabk(1,2)*(2*q-1)/2) + ...
(tabk(1,3)*(3*q*q-6*q+2)/6) + ...
(tabk(1,4)*(4*q*q*q-18*q*q+22*q-6)/24))/h;
% 2. nacin:
% Prvo nadjemo koeficijente Njutnovog interp. polinoma
P = Y(1);
Q = 1;
for i = 1:4
Q = conv(Q, [1,-i+1]);
P = [0,P] + Q*tabk(1,i)/factorial(i);
end
% Zatim, izracunamo izvod i vrednost polinoma u tacki
% koriscenjem ugradjenih funkcija za rad sa polinomima
i1 = polyval(polyder(P)/h, (x-X(1))/h);
25
Napisati M-fajl izvod2.m sa funkcijom izvod2(x) koja raquna vrednost dru-
gog izvoda tabelirane funkcije u taqki x koristei diferencirae I utnovog
interpolacionog polinoma zak uqno sa konaqnim razlikama reda 4.
Rexee:
function i2 = izvod2(x)
tablica;
n = length(Y);
kon = Y;
tabk = zeros(n-1);
for i = 1:n-1
kon = diff(kon);
tabk(1:n-i, i) = kon;
end
h = X(2)-X(1);
q = (x-X(1))/h;
i2 = (tabk(1,2) + (tabk(1,3)*(6*q-6)/6) + ...
(tabk(1,4)*(12*q*q-36*q+22)/24))/(h*h);
26
3 Integracija
10. Neka je funkcija f zadata eksplicitno komandnim M-fajlom f unkcija.m.
Rexee: Zadajmo M-fajl f unkcija.m na sledei naqin.
% funkcija.m
f = @(x) x.^5;
funkcija;
X = linspace(a, b, 9);
h = X(2) - X(1); %ili h=(b-a)/8;
27
Napisati M-fajl simps.m sa funkcijom I = simps(a, b) koja priblino raquna
i vraa vrednost odreenog integrala funkcije f (granice integracije su a i
b) korixeem uopxtene Simpsonove kvadraturne formule sa n = 9 qvorova.
funkcija;
X = linspace(a, b, 9);
h = X(2) - X(1); %ili h=(b-a)/8;
F = f(X);
Rexee:
function [X,Y] = vredfunk(k,p)
% Poziv funkcije: [X,Y] = vredfunk(k,p)
% Ulazne vrednosti: k - prirodan broj takav da je x=2,3,...,k
% p =1 indikator da se koristi Simpsonova kv.f. ili
% =2 indikator da se koristi trapezna kv.f.
% Izlazne vrednosti: X - vektor koji sadrzi razlicite krajeve
28
% intervala integracije x=2,3,...,k
% Y - vrednosti integrala na intervalima (1,X(1)),
% (1,X(2)),...,(1,X(end))
%
% Pomocne funkcije: simps(), trapez()
if k < 2
error('Prvi argument mora biti veci ili jednak od 2.')
end
X = 2:k;
% inicijaluzujemo Y sa bilo cim
Y = X;
for i = 1:k-1
if p == 1
Y(i) = simps(1, X(i));
elseif p == 2
Y(i) = trapez(1, X(i));
end
end
29
function [I, briter] = integralt(a, b, tol)
% Poziv funkcije: [I, briter] = integralt(a, b, tol)
% Ulazne vrednosti: (a,b) - krajevi intervala integracije
% tol - tacnost sa kojim treba izracunati integral
% Izlazne vrednosti: I - priblizna vrednost integrala
% briter - broj iteracija
%
% Pomocni M-fajl: funkcija.m - sadrzi eksplicitni izraz funkcije f
funkcija;
% polovimo korak
h = h/2;
X = a:h:b;
F = f(X);
I = h/2*(F(1)+F(end)+2*sum(F(2:end-1)));
30
function [I, briter] = integrals(a, b, tol)
% Poziv funkcije: [I, briter] = integrals(a, b, tol)
% Ulazne vrednosti: (a,b) - krajevi intervala integracije
% tol - tacnost sa kojim treba izracunati integral
%
% Izlazne vrednosti: I - priblizna vrednost integrala
% briter - broj iteracija
%
% Pomocni M-fajl: funkcija.m - sadrzi eksplicitni izraz funckije f
funkcija;
% polovimo korak
h = h/2;
X = a:h:b;
F = f(X);
I = h/3 * (F(1) + F(end) + 4*sum(F(2:2:end-1)) + 2*sum(F(3:2:end-1)));
briter = 2;
Rexee:
function [] = grafik(a,b)
% Poziv funkcije: grafik(a,b)
% Ulazne vrednosti: (a,b) - krajevi intervala integracije funkcije f
% Izlazne vrednosti: (~) - nema (osim grafika)
%
% Pomocni M-fajl: funkcija.m
tol = 10.^(-1:-1:-6);
% inicijalizujemo brojeve iteracija sa bilo cim
brt = tol;
31
brs = tol;
for i = 1:6
% vrednosti integrala nam ne trebaju, pa cemo ih upisati u bilo koju
% promenljivu, npr. I
[I, brt(i)] = integralt(a, b, tol(i));
[I, brs(i)] = integrals(a, b, tol(i));
end
% Iscrtavamo grafike
% x-osa: tol (za oba grafika)
% y-osa: brt (za crveni grafik), brs (za plavi grafik)
plot(tol, brt, 'r', tol, brs, 'b')
% Dodajemo legendu:
% prvi argument je prvi grafik koji se iscrtava (Trapez),
% drugi argument je drugi grafik koji se iscrtava (Simpson)
legend('trapezna','Simpsonova')
32
12. Neka je funkcija f (koja ne mora biti (samo) pozitivna) zadata eksplicitno funkci-
jskim M-fajlom f unkcija.m.
Rexee: Zadajmo M-fajl f unkcija.m na sledei naqin.
% funkcija.m
f = @(x) x.^5;
funkcija;
33
X = a:h:b;
F = f(X);
I1 = h/3 * (F(1) + F(end) + 4*sum(F(2:2:end-1)) + 2*sum(F(3:2:end-1)));
% Polovimo korak
h = h/2;
X = a:h:b;
F = f(X);
I2 = h/3 * (F(1) + F(end) + 4*sum(F(2:2:end-1)) + 2*sum(F(3:2:end-1)));
briter = 2;
I = I2;
za izraqunavae integrala.
a
Rexee:
function I = integral(f, a, b)
% Poziv funkcije: I = integral(f, a, b)
% Ulazne vrednosti: (a,b) - krajevi intervala integracije
% Izlazne vrednosti: I - vrednost integrala dobijena koriscenjem
% ugradjene funkcije quad()
I = quad(f, a, b);
koja treba da je taqna za polinome xto je mogue veeg stepena. Funkcija treba
da vraa matricu sistema i vektor leve strane.
34
Rexee: Sistem 7 u raspisanom obliku glasi
Z d
t(x)dx = A0 + A1 + ... + An
0
Z d
d nd
t(x)xdx = A0 · 0 + A1 · + ... + An ·
..
0 n n
Z d n n
n n d nd
t(x)x dx = A0 · 0 + A1 · + ... + An ·
0 n n
Sada, uz pa ivo voee raquna o indeksima, nije texko kodirati sistem. U
ovom sluqaju, matricu sistema qine koeficijenti uz qlanove A , i = 0, n, a vek-
tor leve strane qini vektor vrednosti integrala sa leve strane. i
M = zeros(n+1);
v = zeros(1, n+1);
for i = 1:(n+1)
for j = 1:(n+1)
M(i,j) = ((j-1)*d/n)^(i-1);
end
p = @(x) t(x).*x.^(i-1);
v(i) = integral(p, 0, d);
end
v = v' ;
Formirati M-fajl koef icijenti.m sa funkcijom koeficijenti(d, t, n) koja
odreuje koeficijente A prethodne kvadraturne formule. Dozvo eno je korix-
ee operatora \ za rexavae sistema.i
Rexee:
function rez = koeficijenti(d, t, n)
% Poziv funkcije: rez = koeficijenti(d, t, n)
% Ulazne vrednosti: d, n - parametri zadatog sistema
% t - tezisna funkcija
% Izlazne vrednosti: rez - resenje zadatog sistema
%
% Pomocni M-fajl: sistem.h - konstruise vrednosti M i v
35
[M, v] = sistem(d, t, n);
rez = M\v;
L = zeros(n+1);
% U prvu vrstu upisujemo koeficijente polinoma nultog stepena
L(1,n+1) = 1;
% U drugu vrstu upisujemo koeficijente polinoma prvog stepena
L(2,n) = 1;
36
% Iscrtavanje grafika
37
Navedimo nekoliko prvih Qebixev evih polinoma:
T0 (x) = 1,
T1 (x) = x,
T2 (x) = 2x2 − 1,
T3 (x) = 4x3 − 3x,
..
Postoje i drugi naqini zadavaa Qebixev evog polinoma, a jedan od ih je
1 h √ n √ n i
Tn (x) = 2 2
x+ x −1 + x− x −1 , n = 1, 2, ...
2
function C = Cebisev_poly(n)
% Poziv funkcije: C = Cebisev_poly(n)
% Ulazne vrednosti: n - stepen Cebisevljevog polinoma
% Izlazne vrednosti: C - matrica koja u vrstama sadrzi redom koeficijente
% Cebisevljevih polinoma stepena 0, 1, ..., n
C = zeros(n+1);
% U prvu vrstu upisujemo koeficijente polinoma nultog stepena
C(1, n+1) = 1;
% U drugu vrstu upisujemo koeficijente polinoma prvog stepena
C(2, n) = 1;
% Popunjavamo ostale vrste po rekurentnoj formuli.
% Naredba (pomeranje za jedno mesto u levo svih koeficijenata polinoma) [C(i,2:end),0]
% ekvivalentna je mnozenju x*C_(i)(x);
% tj. odsecamo prvu nulu sa leve strane (C(i,2:end)),
% a zatim dodajemo jednu sa desne strane [C(i,2:end),0];
for i = 2:n
C(i+1,:) = 2*[C(i,2:end),0] - C(i-1,:);
end
% Iscrtavanje grafika
boje = 'cmykrgb';
X = linspace(-1,1);
38
Grafiqki rezultat poziva C = Cebisev poly(4).
Napisati M-fajl integrali.m sa funkcijom integrali(f, a, b) koja korix-
eem ugraene M AT LAB funkcije quad() raquna i xtampa vrednosti sledeih
integrala:
Z b Z b Z Z b b
f (x)dx, f (x) · sin(x)dx, f (x) · L5 (x)dx, L5 (x) · L3 (x)dx,
sloena funkcija.
i
Rexee:
function [] = integrali(f, a, b)
% Poziv funkcije: integrali(f, a, b)
% Ulazne vrednosti: f - funkcija cije integrale pronalazimo
% (a,b) - krajevi intervala integracije
% Izlazne vrednosti: (~) - nema
%
% Pomocni M-fajl: legendre_poly.m - vraca korficijente Lezandrovih
% polinoma do stepena n
39
15. Napisati M-fajl legendre.m sa funkcijom L = legendre(n) koja kao rezultat
vraa Leandrov polinom L stepena n na intervalu [−1, 1].
Rexee:
function l = legendre(n)
% Poziv funkcije: l = legendre(n)
% Ulazne vrednosti: n - stepen
% Izlazne vrednosti: l - Lezandrov polinom stepena n
% na invervalu [-1,1]
L = zeros(n+1);
L(1, n+1) = 1;
L(2, n) = 1;
for i = 2:n
L(i+1,:) = (2*i-1)/i*[L(i,2:end),0] - (i-1)/i*L(i-1,:);
end
l = L(n+1, :);
Rexee:
function [P] = polinom(n, m)
% Poziv funkcije: P = polinom(n, m)
% Ulazne vrednosti: n - stepen Lezandrovog polinoma
% m - stepen izvoda
% Izlazne vrednosti: P - polinom izracunat preko zadate formule
%
% Pomocni M-fajl: legendre.m - racuna odgovarajuci Lezandrov polinom
L = legendre(n);
P = conv([-1,0,1], L);
40
Napisati M-fajl integral.m sa funkcijom I = integral(n, m, tol) koja sa
taqnoxu tol priblino odreujeZi kao rezultat vraa vrednost integrala
1
P (x)ex dx.
% Granice integracije
a = -1;
b = 1;
briter = 2;
I = S2;
41