Upload
ante-sunara
View
231
Download
0
Embed Size (px)
Citation preview
8/9/2019 PINM - Laboratorijske vjebe - 2008
1/36
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE I
M A T L A B
to je MATLAB?
MATLAB (od engl. matrix laboratory) je programski paket za numeriko raunanje imodeliranje, a takoer i vii programski jezik namijenjen primjeni u znanosti i tehnici. Kaouvod u laboratorijske vjebe i MATLAB, razmotrimo prvo naine pohrane brojeva u raunalu.
Aritmetika digitalnog elektronikog raunala
Kod zapisa broja u raunskom stroju prvo se suoavamo s problemom unosa velikih brojeva ilibrojeva s mnogo (moda i beskonano mnogo) decimala u fiziki ograniene sklopove.Kako bi se ovim i drugim problemima doskoilo, nastoji se optimalno iskoristitiraspoloivi prostor.
1. Floating point (eksponencijalni, scientific) format realnog broja
U floating point formatu (engl. format pomine toke), brojevi u dekadskom sustavu su oblikaz...z
10x.yy...y , pri emu je znamenka x razliita od nule (broj je normaliziran). Npr, broj1234.5 u formatu pomine toke ima oblik 3101.2345 . Broj x.yy...y naziva se mantisa, a
broj z...z eksponent. Koliko e znamenaka imati mantisa i eksponent ovisi naravno orealizaciji zapisa unutar raunala. Tako malo bolji (tzv. scientific) depni kalkulator koji imaosam mjesta na displeju rezervira est mjesta za zapis znamenaka mantise i dva za zapisznamenaka eksponenta. Na taj nain se na displeju depnog kalkulatora mogu prikazati brojeviod 99109.99999 do 99109.99999 . Najmanji prikazivi pozitivni broj je -99101.00000 . (UMATLAB-u se floating point broj z...z10x.yy...y zapisuje kao z...zx.yy...ye . Npr.
002-1.2340eje0.01234a003,+1.2345eje1234.5 .)
2. Zaokruivanje broja
Broj ...857142857142857142.075 = ne moemo itav pohraniti u raunalo, pa se sluimozaokruivanjem ili rezanjem vika decimala. Zaokruivanjem na pet decimalnih mjestamantise tako dobijemo rezultat 11014286.7 (uinjena greka je 710...85714.2 ), a rezanjem
11014285.7 (greka je 710...14285.7 ), pa je oito da je zaokruivanje mnogo bolja metoda.Raunala i bolji kalkulatori uvijek se slue zaokruivanjem.3. IEEE standard
1
8/9/2019 PINM - Laboratorijske vjebe - 2008
2/36
U digitalnom se raunalu brojevi prikazuju u binarnom brojevnom sustavu (baza mu je 2, aznamenke 0,1). Pria o floating point formatu i zaokruivanju brojeva, lako se prenosi i u
binarni sustav.
Utjecajni ameriki Institute of Electrical and Electronics Engineers (IEEE) predloio je ovakavstandard za organizaciju podataka u digitalnom raunalu (vrijedi za gotovo sve PC, radnestanice, kao i za najvanije numerike programske pakete koji na njima rade npr. MATLAB,Mathematica, Maple,...).
Brojevi se zapisuju binarno, u nekom od formata pomine toke. Osnovni je format jednostruke preciznosti (single precision format), gdje se brojevi organiziraju u 32-bitnerijei:
1 2 3 4 5 6 7 8 9 10 11 30 31 32. . .
1 bit za zapis predznaka mantise8 bita za zapis eksponenta
(ukljuujui i njegov predznak)23 bita za zapis mantise
Trik: poto je broj normaliziran, zzyyy ...2.1 , vodea znamenka se ne pamti i podrazumijeva se da je jednaka 1 (uteda). Ovako se mogu zapisati brojevi od otprilike
3810 do 3810 (dekadski), s tonou od otprilike sedam decimala.
Jo ee se koristi tzv. format dvostruke preciznosti (double precision format), gdje su zazapis broja predviena 64 bita, tj:
1 bit za zapis predznaka mantise11 bita za zapis eksponenta i njegovog predznaka52 bita za zapis mantise.
Vodea znamenka se opet ne pamti. Ovako moemo zapisati brojeve reda veliine otprilike od30710 do 30710 , s mantisom od otprilike petnaest dekadskih mjesta iza zareza. U MATLAB-u
emo raditi upravo s formatom dvostruke preciznosti.
S obzirom na mogunosti stroja, koriste se i vei formati, npr. etverostruke preciznosti
(quadruple precision) - rije se sastoji od 128 bita, itd.IEEE aritmetika uvodi jo i brojeve Inf , NaN , eps :
Inf40010 010400 Inf0
1
2
8/9/2019 PINM - Laboratorijske vjebe - 2008
3/36
InfInf +2 InfInf 2 InfInf 5
InfInfInf + InfInfInf InfInf Inf
NaN0
0NaN
Inf
Inf NaNInf 0
NaNInfInf NaNInf 1 NaNNaN3
Broj1652 102204.22 =eps je ocjena greke zaokruivanja u binarnoj floating point
aritmetici dvostruke preciznosti (eps je najmanji pozitivni broj za kojeg je 11 >+eps - uaritmetici raunala).
Kako pokrenuti MATLAB?
1. Ukljuiti raunalo i, po potrebi, ekran.2. Unijeti svoj Username i Password kad se pojavi prozor za identifikaciju, ili kliknuti samo na
OK.
3. Kad raunalo podigne Windowse i ispie sve uobiajene poruke, kliknuti miem redom:Start - Programs - MATLAB for Windows - MATLAB. Otvorit e se MATLAB-ov
prozor.
Zapis brojeva i osnovnih operatora
+ zbrajanje < je manje- oduzimanje je vee/ desno dijeljenje >= je vee ili jednako\ lijevo dijeljenje == je jednako^ potenciranje ~= nije jednako
Specijalne varijable
Ime Znaenje Vrijednost
ans automatski poprima vrijednost izraza kad izraz nije pridruen varijablieps strojni epsilon (ocjena greke zaokruivanja) 5 22 2.2204e-016
Inf + npr. 1/0 ili npr. (1e20)^20NaN Not-a-Number npr. 0/0 ili npr. NaN+3
i imaginarna jedinica (i ) 1pi 3.14159265358979...
Elementarne matematike funkcije ugraene u MATLAB
Ime Znaenje Poziv Rezultatsin sinus sin(3*pi) ans =
3.6738e-016
3
8/9/2019 PINM - Laboratorijske vjebe - 2008
4/36
cos kosinus cos(2*pi/3) ans =-0.5000
tan tangens tan(pi/4) ans =1.0000
asin arkus sinus asin(1) ans =1.5708
acos arkus kosinus acos(1) ans =0
atan arkus tangens atan(1) ans =0.7854
sinh hiperbolni sinus sinh(0) ans =0
cosh hiperbolni kosinus cosh(0) ans =1
tanh hiperbolni tangens tanh(-3) ans =-0.9951
asinh area sinus hiperbolni asinh(1) ans =0.8814
acosh area kosinus hiperbolni acosh(1) ans =0
atanh area tangens hiperbolni atanh(-0.9951) ans =-3.0046
sqrt kvadratni (drugi) korijen sqrt(2) ans =1.4142
exp eksponencijalna funkcija (baza e) exp(1) ans =
2.7183log logaritamska funkcija (baza e) log(1) ans =0
log10 logaritamska funkcija (baza 10) log10(0) Warning: Log of zeroans =-Inf
abs apsolutna vrijednost (modul) abs(3-4*i) ans =5
real realni dio kompleksnog broja real(-3+2*i) ans =-3
imag imaginarni dio kompleksnog broja imag(-3+2*i) ans =2conj kompleksno konjugiranje conj(-3+2*i) ans =
-3.0000 - 2.0000iround zaokruivanje broja
na najblii cijeli brojround(2.3) ans =
2round(3.5) ans =
4PRIMIJENJENA I NUMERIKA MATEMATIKA
LABORATORIJSKE VJEBE II
Matrice u MATLAB-u
4
8/9/2019 PINM - Laboratorijske vjebe - 2008
5/36
Kako upisati matricu
Matricu
=
642
121A u MATLAB-u upisujemo naredbom
A=[1 2 -12 4 6]
ili A=[1 2 -1; 2 4 6]
A MATLAB e odgovoriti:
A =1 2 -12 4 6
Aritmetike operacije s matricama
Operacija Znak NapomenaZbrajanje matrica + Matrice moraju biti istih dimenzija.Oduzimanje matrica - Matrice moraju biti istih dimenzija.Mnoenje matrice brojem *Mnoenje matrice matricom * Matrice moraju biti ulanene.Desno dijeljenje matrica / Matricu ne moemo dijeliti matricom! O znaenju ovihLijevo dijeljenje matrica \ znakova opirnije u Dodatku na kraju ove vjebe.Potenciranje matrice ^ Matrica mora biti kvadratna.Transponiranje matrice Mnoenje elemenata dvijumatrica lan po lan
.* Matrice moraju biti istih dimenzija.S lijeve ili desne strane znaka moe biti i broj.
Desno dijeljenje elemenatadviju matrica lan po lan
./ Matrice moraju biti istih dimenzija.S lijeve ili desne strane znaka moe biti i broj.
Lijevo dijeljenje elemenatadviju matrica lan po lan
.\ Matrice moraju biti istih dimenzija.S lijeve ili desne strane znaka moe biti i broj.
Potenciranje elemenata dvijumatrica lan po lan
.^ Matrice moraju biti istih dimenzija.S lijeve ili desne strane znaka moe biti i broj.
Primijenimo li koju od elementarnih matematikih funkcija na matricu, ona e se takoerraunati lan po lan. Npr. za [ ]10014=X , rezultat naredbe sqrt(X) bit e matrica[ ]1012 . Indeksiranje matrica takoer se vri na uobiajen nain.Koritenje znaka dvotoke (:)
Dvotoka (engl. colon) vrlo je koristan znak u MATLAB-u. Evo samo nekih primjera njenog
koritenja:
1) Ako npr. drugi redak matrice
=
642
121A elimo pospremiti u varijablu B, koristimo
naredbu
5
8/9/2019 PINM - Laboratorijske vjebe - 2008
6/36
B=A(2,:)
2) Slino, trei stupac iste matrice dat e nam naredba
A(:,3)
3) Matricu = 2
23
20Y , iji su elementi jednoliko rasporeeni, moemo kreirati
naredbomY=0:pi/2:2*pi
Drugaije, ako istu matricu elimo generirati prema broju elemenata, a ne razmaku izmeususjednih elemenata, moemo takoer koristiti
Y=linspace(0, 2*pi, 5)
Matrine funkcije ugraene u MATLAB
Funkcija Argumenti to radizeros(m,n) m, n su prirodni brojevi Generira nul-matricu od m redaka i n stupaca.
eye(n) n je prirodni broj Generira jedininu matricu reda n.diag(X) X je jednoredna
ili jednostupana matricaGenerira dijagonalnu matricu iji su elementiredom elementi od X.
rank(A) A je proizvoljna matrica Rauna rang matrice A.size(A,1) A je proizvoljna matrica Ispisuje broj redaka matrice A.
size(A,2) A je proizvoljna matrica Ispisuje broj stupaca matrice A.sum(A) A je proizvoljna matrica Ako je A jednoredna ili jednostupana, zbraja sve
elemente od A, a ako nije, zbraja ih po stupcima.prod(A) A je proizvoljna matrica Ako je A jednoredna ili jednostupana, mnoi sve
elemente od A, a ako nije, mnoi ih po stupcima.det(A) A je kvadratna matrica Rauna determinantu matrice A.inv(A) A je kvadratna matrica Rauna inverznu matricu matrice A.
U MATLAB -u ima smisla i tzv. prazna matrica [ ] . Ova se vrijednost obino pojavljuje kao
rezultat nebuloznih naredbi, ili izraza koji u sebi ukljuuju praznu matricu. Npr,
X=1:2:0 ima za posljedicu X =[]
Dodatak: Rjeavanje sustava linearnih jednadbi
Ako je sustav zadan u matrinom zapisu BAX = , gdje matrice A i B imaju isti broj redaka
(zbog ulanenosti!), lijevo dijeljenje matrica, (operacija \) slui za rjeavanje tog sustava.Stavljamo: X=A\B
6
8/9/2019 PINM - Laboratorijske vjebe - 2008
7/36
Primjer 1: Rijeimo sustav AX=B, za zadane matrice:
a)
=
542
431
321
A ,
=
7
9
6
B ; b)
=
755
542
431
321
A ,
=
10
7
9
6
B ;
c)
=
7543
5432
5211
A ,
=
7
9
6
B ; d)
=
755
542
431
321
A ,
=
3
7
9
6
B .
Rjeenja:
a) Nakon: A=[1 2 3;-1 3 4;2 4 5];B=[6;9;7];
stavljamo: X=A\B
Dobijemo: X =-1-45
Provjera: A*X
zaista daje: ans =697
b) Kad unesemo nove matrice i
naredbu X=A\B, rezultat je:
X =
-1.0000-4.00005.0000
(provjerite s A*X).
c) U ovom sluaju, dobijemo: X =0
-4.700010.9000-4.1000
to se i opet moeprovjeriti s A*X.
U ovom sluaju sustav zapravo ima beskonano mnogo rjeenja, ali MATLAB kao numerikiprogram izrauna samo jedno od njih. To e se deavati kadgod budemo imali vie od jednogrjeenja.
7
8/9/2019 PINM - Laboratorijske vjebe - 2008
8/36
d) Konano, za posljednji sustavje rezultat dobiven naredbomX=A\B:
X =-2.00000.0000
2.0000
Meutim, provjera s A*X daje: ans =4.000010.00006.00004.0000
to se vrlo razlikujeod naega B.
U emu je stvar? Ovaj sustav ustvari nema rjeenja. Meutim numeriki program poputMATLAB-a ne usudi se davati nesigurne procjene poput ovih o rjeivosti sustava i pokuavasve to je u njegovoj moi da nae bilo kakvo, pa ak i pogreno rjeenje. Zbog toga je dobrodobivena rjeenja uvijek provjeriti.
Napomena: Operacija dijeljenja matrica moe se koristiti i za rjeavanje openitijihmatrinih jednadbi. Tada naredba X=A\B rauna rjeenje Xmatrine jednadbe
AX=B i to stupac po stupac. Opet je potrebno da matrice A i B imaju isti brojredaka.
S druge strane, rjeenje X matrine jednadbe XA=B moemo raunati desnimdijeljenjem, tj. naredbom X=B/A, naravno, ako A i B imaju isti broj stupaca.
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE III
Grafika u MATLAB - u
Jednostavni grafikoni - naredba plot(X)
8
8/9/2019 PINM - Laboratorijske vjebe - 2008
9/36
Pretpostavimo da je
=
3
5
4
2
X jednostupana matrica upisana u MATLAB.
Ovo su rezultati naredbi:
plot(X) plot(X, '*')
1 1.5 2 2.5 3 3.5 4-3
-2
-1
0
1
2
3
4
5
1 1.5 2 2.5 3 3.5 4-3
-2
-1
0
1
2
3
4
5
Isto bi dobili da je X bila jednoredna matrica. U sluaju da smo imali
=
126
237
143
121
A
nakon naredbe plot(A) slika bi izgledala:
1 1.5 2 2.5 3 3.5 4-1
0
1
2
3
4
5
6
7
Crtanje grafa funkcije - naredba plot(X,Y)
Pretpostavimo da treba skicirati graf funkcije4
2 +=x
xy na segmentu [ ]10,10 . Radimo:
x=-10:0.05:10; formiranje matrice x -ova, za koje e se raunati i crtati funkcijske vrijednostiy= x./(x.^2+4); formiranje matrice vrijednosti funkcije u tokama (vorovima) x
plot(x,y) crtanje grafa funkcije, tj. svih zadanih vrijednosti (x(i),y(i)).
Rezultat ovih naredbi vidi se na slici (a).
9
8/9/2019 PINM - Laboratorijske vjebe - 2008
10/36
Ako na jednoj slici elimo crtati grafove vie funkcija, koristimonaredbu
plot(X1,Y1,X2,Y2,...)
Na primjer, ako elimo skicirati ponaanje funkcija1
3,cos, 321 +
===x
yxyxy
na segmentu [ ]6,0 , piemo naredbe:
x=0:0.01:6;y1=sqrt(x);y2=cos(x);y3=3./(x+1);
plot(x, y1, x, y2, x, y3) i dobijemo sliku (b).
-10 -5 0 5 10-0.25
-0.2
-0.15
-0.1
-0.05
0
0.05
0.1
0.15
0.2
0.25
0 1 2 3 4 5 6-1
-0.5
0
0.5
1
1.5
2
2.5
3
slika (a) slika (b)
U crtanju grafova, MATLAB koristi osam razliitih boja, zatim specijalne tipove znakova zaoznaavanje toaka (toka ., plus +, zvjezdica *, krui o, iksi x), a takoer i zacrtanje crta koje spajaju te toke (puna -, isprekidana --, tokasta :, kombinirana -.).
Ako nam zatreba, koordinatnu mreu moemo postaviti (i takoer
izbrisati) naredbom
grid
Primjeri
Zadatak 1. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije521114)(
234 +++= xxxxxf na intervalu [-10,10].
Zadatak 2. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije
2
)(x
exf
=na intervalu [-10,10].
10
8/9/2019 PINM - Laboratorijske vjebe - 2008
11/36
Zadatak 3. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije4
)(2 +
=x
xxf
na intervalu [-10,10].
Zadatak 4. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije4
)(2
=x
xxf
na intervalu [-10,10].
Zadatak 5. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije
=2
)(x
xxf
na intervalu [-10,10].
Zadatak 6. Koristei MATLAB-ovu grafiku, ispitaj ponaanje funkcije
=x
xf1
sin)(
na intervalu [-10,10].
Zadatak 7. Koristei MATLAB-ovu grafiku, odredi koliko rjeenja ima jednadba
xe x cos5
1
= na intervalu [0,10].
Zadatak 8. Koristei MATLAB-ovu grafiku, odredi koliko rjeenja ima jednadbaxx 2cos= na skupu pozitivnih realnih brojeva.
Zadatak 9. Koristei MATLAB-ovu grafiku, odredi koliko rjeenja ima jednadbax
ex
x=
+2
1za x>-1.
Zadatak 10. Koristei MATLAB-ovu grafiku, odredi koliko rjeenja ima jednadba2+= xchx na skupu realnih brojeva.
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE IV
1. Uvjetne naredbe (naredbe kontrole toka)
Naredba for
Naredba for slui za ponavljanje odreene naredbe ili niza naredbi unaprijed zadani broj puta. Sintaksa for petlje:
11
8/9/2019 PINM - Laboratorijske vjebe - 2008
12/36
forvarijabla=izraz1:izraz2:izraz3naredbe
end
varijablapoprima vrijednosti od izraz1 doizraz3 s korakom izraz2.(Ako je korak 1, ne moramo ga pisati)
Primjer 1. Zadane su jednoredne matrice x=[-3 3 9 15] i f=[3 5 4 2]. Koristei naredbu for izraunaj:
= 4
1
)()(k
kfkx .
x=-3:6:15;f=[3 5 4 2]s=0for k=1:4
s=s+x(k)*f(k);ends
zadajemo matricu xzadajemo matricu finicijaliziramo s
poinje for-petlja(u kojoj u etiri koraka raunamo s)
petlja zavravaispisujemo konano s
Rezultat:s=
72
Uoi, za zadane x i f, mogli smo umjesto petlje koristiti: s=sum(x.*f)ili: s=x*f '
Primjer 2. Izraunaj
!1!1
!1
1
1 7=
koristei naredbu for.
y=1;for ind=0:9
y=y*(175-ind)/(10-ind);endy
inicijaliziramo ypoinje for-petlja od k koraka(u kojoj se koristi ekonomina formaza raunanje binomnog koeficijenta)ispisujemo konano rezultat y
Rezultatnaredbi:
y=5.7130e+015
Naredba while
Naredba while ponavlja odreenu naredbu ili niz naredbi dok je ispunjen uvjet iz izraza.
Sintaksa while-petlje: while izraznaredbe
end
Napomena: Za izlaz iz petlje (for kao i while) esto se koristi naredba break.Primjer 3: Koristei naredbu while, izraunaj (do na tonost eps) sumu reda
=14
1
n n.
12
8/9/2019 PINM - Laboratorijske vjebe - 2008
13/36
s=0;n=1;d=1;while d>=eps
d=(1/n)^4;s=s+d;
n=n+1;ends
inicijalizacija sume sinicijalizacija indeksa ninicijalizacija doprinosa duvjet: doprinos je vei od tonosti strojadoprinos u n-tom korakusuma u n-tom koraku
n se poveava za 1kraj petljeispiimo konanu sumu s
Rezultat(u dugom formatu):
s=
1.08232323371052
Naredba if:
Naredba if izvrit e navedene naredbe ako je uvjet dan izrazom ispunjen. Mogue je upotrebiti i varijantuif...else. Sintaksa je:
ifizraznaredbe
end
osnovni oblik naredbe if
proireni oblik naredbe if
ifizraznaredbe
else naredbeend
Primjer 4: Koristei naredbu if, skiciraj rjeenja (x,y) nejednadbe 3694 22 + yx .
holdx=linspace(-4,4,100);y=linspace(-4,4,100);for n=1:100
for m=1:100if 4*x(n)^2+9*y(m)^2
8/9/2019 PINM - Laboratorijske vjebe - 2008
14/36
Kako kreiramo jedan m file
U otvorenom MATLAB ovu prozoru, kliknimo miem redom: File New M-file. Pojavit e se prozorteksteditora (u starijim verzijama MATLAB a, to je bio Notepad), u kojem emo pisati nae naredbe.
Kad zavrimo s pisanjem naredbi, trebamo kazati raunalu da kreirani file imenuje i spremi u memoriju sekstenzijom m (da bi ga MATLAB kasnije mogao prepoznati kao mfile i izvriti). Kliknemo li miem slijedFile Set Path, dolazimo do popisa foldera u kojima MATLAB trai svoje mfileove. Mi emo ih pohranjivatiu folder C:\matlabR12\work. Pri pohrani postupamo ovako:
U prozoru Notepada u kojem smo pisali naredbe, miem kliknemo file Save As i zatim:
1. Po potrebipromijenimo direktorij u C:\matlabR12\work.2. Dodijelimo ime i ekstenziju ("ime.m") pod kojim e se file pohraniti u memoriju.3. Kliknemo na Save.
Obini m file (engl. script file)
Ako imamo neki dui niz naredbi, koji nam se u radu ee ponavlja, moemo ga zapisati u obini m file. Prisvakom pozivu imena tog m filea, izvrit e se naredbe koje on sadri.
Svaki od etiri primjera iz prethodne toke mogli smo realizirati pomou obinog m filea.
14
8/9/2019 PINM - Laboratorijske vjebe - 2008
15/36
Funkcijski m file
Funkcijskim mfileom kreiramo novu funkciju. Ovako kreirana funkcija ravnopravna je funkcijamaugraenim u MATLAB-u (kao to su npr. sin, log, det, itd.) Na taj nain moemo prema naoj volji i
potrebama proiriti biblioteku postojeih funkcija. Sintaksa je:
function varijabla=ime funkcije(ulazne varijable)naredbe
U prvom retku mora biti imefunkcije i varijable kojimaoperira.
Ime funkcijskog m-filea mora biti isto kao i ime funkcije koja se njima definira. Samu funkciju pozivamo kaoi svaku drugu funkciju, koristei njeno ime, zagrade, ulazne i izlazne varijable. Varijable mogu biti i brojevi imatrice. Jasno je da broj i tip varijabli u definiciji i pozivu funkcije moraju biti isti.
function [izlazne varijable]=ime funkcije(ulazne varijable)
naredbe
Funkcija moe imati i
vie izlaznih varijabli.
Primjer 1. Napii funkcijski m-file bk.m, koji e raunati:
) !(!
!
knk
n
k
n
=
za zadane prirodne brojeve n, k.
function y=bk(n,k)y=1;for ind=0:k-1
y=y*(n-ind)/(k-ind);end
Definicija funkcije i argumenata.Inicijaliziramo y.Poinje for petlja od k koraka (u kojoj se koristiekonomina forma za raunanje binomnog koeficijenta).Petlja zavrava, u y ostaje konana vrijednost funkcije.
Uoi, mogli smo izbjei for-petlju iskratiti funkciju upotrebom:
function y=bk(n,k)y=prod([n-k+1:n]./[1:k]);
Primjer 2. Napii funkcijski m-file f1.m, koji e raunati funkciju1
100)(
2
3
1 +=x
xxf za zadane vrijednosti x.
function y=f1(x)y=x.^3-100./(x.^2+1);
Najbolje je pretpostaviti da je argument funkcije matrica,tako e uobiajeno raunanje lan po lan vrijediti.
Primjer 3. Napii funkcijski m-file poiss.m, koji e za zadane a, k raunati funkciju
15
ak
ek
akapoiss
=!
),(
8/9/2019 PINM - Laboratorijske vjebe - 2008
16/36
function y=poiss(a,k)for m=1:size(k,1);
for n=1:size(k,2);y(m,n)=exp(-a)*prod(a./[1:k(m,n)]);
endend
Definira se funkcija s argumentima k, a.Dvije petlje osiguravaju da k moe biti
proizvoljna matrica (to e nam trebati ustatistici). Kao izlaz imamo matricu istedimenzije kao k. Kao i prije, izbjegavase direktno raunanje faktorijela.
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE V
Numerika u MATLAB-u
1. Numeriko rjeavanje jednadbi
Problem: Rijeiti jednadbu ( ) 0=xf metodom bisekcije (polovljenja).Teorijska
podloga i dodatni komentari o izolaciji korijena dani su na predavanju.
Algoritam metode bisekcije
Da bi mogli koristiti metodu bisekcije trebamo prvo nai brojeve a, b takve da f(a) i f(b) imaju razliitepredznake. Ako je funkcija f neprekidna na intervalu [a,b], to znai da e u tom intervalu sigurnoimati barem jednu nultoku c. Pretpostavimo da smo izolirali korijen jednadbe ( ) 0=xf , tj. odredilisegment [a,b] koji sadri jedan i samo jedan korijen c jednadbe. Oznaimo aa =0 , bb =0 .
Izraunamo2
00 ba + (polovimo segment) i
+
2
00 baf .
Ispitujemo u kojoj polovini segmenta lei korijen jednadbe.
1. Ako je 02
00 =
+ baf , uzimamo da je
2
00 bac+
= traeni korijen jednadbe.
2. Ako je 02
00
+ baf i ( )[ ]0
00 sgn2
sgn afba
f =
+
, oznaimo2
001
baa
+= i 01 bb = .
Ako je 02
00
+ baf i ( )[ ]0
00 sgn2
sgn bfba
f =
+, oznaimo 01 aa = i
2
001
bab
+= .
Kako je ( )[ ] ( )[ ]11 sgnsgn bfaf , korijen jednadbe je u segmentu [ ]11,ba na kojem moemo ponovitipostupak polovljenja.Nakon k koraka doli smo do segmenta [ ]kk ba , .
Izraunamo2
kk ba + (polovimo segment) i
+
2
kk baf .
1. Ako je 02
=
+ kk baf , uzimamo da je2
kk bac+
= traeni korijen jednadbe.
16
8/9/2019 PINM - Laboratorijske vjebe - 2008
17/36
2. Ako je 02
+ kk baf i ( )[ ]kkk af
baf sgn
2sgn =
+
, oznaimo2
1kk
k
baa
+=+ i kk bb =+1 .
Ako je 02
+ kk baf i ( )[ ]kkk bfba
f sgn2
sgn =
+, oznaimo kk aa =+1 i
21
kkk
bab
+=+ .
Nakon n-tog koraka doli smo do segmenta [ ]nn ba , , za kojeg vrijedi nn bca . Uobiajeno je za za
priblinu vrijednost korijena jednadbe uzeti2
nn bac += .
Postizanje traene tonosti :
1. nn ab ( )
2log
loglog ab
n (teorijski).
2. Promatranjem kako se ustaljuju znamenke rjeenja (praktino).Primjer 1. Metodom polovljenja odredite priblinu vrijednost korijena jednadbe 0ln 2 =+ xx s tonou
210
= .
Rjeenje:
1. Izolacija korijena (grafiki).Korijen jednadbe 0ln 2 =+ xx oito je nultoka funkcije ( ) 2ln xxxf += (komplicirano crtati graf).Jednostavnije: jednadbu napisati u obliku 2ln xx = i problem svesti na traenje sjecita grafova funkcija
( ) xxf ln1 = i ( )2
2 xxf = .
Sa slike oitamo:5.0=a i 1=b .
Odreivanje broja koraka za postizanjetraene tonosti 210= :
( )=
2log
loglog abn
5.64382log
01.0log5.0log=
=
Dovoljno je uzeti n =6.
2. Primjena metode polovljenja preglednosti radi, moemo formirati tablicu:
( )kaf 0k ka kb
2
kk ba +Predznak od
+
2
kk baf
0 0.5000 1.00007500.0
2
1.00000.5000=
++
1 0.5000 0.7500 0.62502
0.75000.5000 =+ -
2 0.6250 0.7500 6875.02
0.75000.6250=
++
17
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-25
-20
-15
-10
-5
0
5
8/9/2019 PINM - Laboratorijske vjebe - 2008
18/36
3 0.6250 0.6875 6562.02
0.68750.6250=
++
4
0.6250 0.6562 6406.02
0.65620.6250=
+-
5
0.6406 0.6562 0.64842
0.65620.6406 =+
-
6 0.6484 0.6562
Na kraju, stavljamo 0.65232
0.65620.6484=
+c .
Rjeavanje jednadbe ( ) 0=xf uz pomo MATLAB-a
a) Metoda je bisekcije vrlo jednostavna i pregledna, ali neto sporija od drugih, pa je u
standardnom MATLAB-ovu toolbox-u nema. Zato je za potrebe ovih Laboratorijskih vjebi ufolderu C:\matlabR12\work kreiran novi funkcijski m-file bis.m koji radi metodompolovljenja. Funkciju bis pozivamo s:
bis(f, a,b,n) Potrebno je da je funkcija f prethodno zapisana u vidu funkcijskog m-filea(obrati panju na obavezne navodnike!). Ulazni parametri a, b rubovi su
polaznog intervala, a n eljeni broj polovljenja.
Zainteresirani mogu razmotriti sintaksu funkcije bis u folderu C:\matlabR12\work.
Rijeimo ponovo Primjer 1, koristei se ovaj put funkcijom bis i punom MATLAB-ovom preciznou.
Primjer 1. Metodom polovljenja odredite priblinu vrijednost korijena jednadbe 0ln 2 =+ xx stonostima 210= i eps= . Za odabrane a,b, koliko treba polovljenja da bi se postiglatraena tonost?
Rje enje : Da bismo odredili broj korijena i poetnu aproksimaciju, skicirajmo graf funkcije( ) 2+= xxxf ln .
Prvo funkciju zapiemo kao funkcijski m-file f.mu folder C:\matlabR12\work:
i zatim je nacrtamo:
Sa slike je oito da moemo uzeti 5.0=a i 1=b. Sada pozivamo bis za razliite vrijednosti n:
bis('f',0.5,1,1) Rezultati (u dugom formatu): ans = 0.62500000000000bis('f',0.5,1,2) ans = 0.68750000000000bis('f',0.5,1,3) ans = 0.65625000000000bis('f',0.5,1,4) ans = 0.64062500000000
18
function y=f(x)y=log(x)+x.^2;
x=0:0.01:5;plot(x, f(x))grid
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-30
-20
-10
0
10
20
30
8/9/2019 PINM - Laboratorijske vjebe - 2008
19/36
bis('f',0.5,1,5) ans = 0.64843750000000bis('f',0.5,1,6) ans = 0.65234375000000bis('f',0.5,1,10) ans = 0.65307617187500bis('f',0.5,1,30) ans = 0.65291864029132bis('f',0.5,1,50) ans = 0.65291864041920bis('f',0.5,1,100) Toan rezultat ans = 0.65291864041920
Poveavanjem broja polovljenja n dolazi do ustaljivanja (ponavljanja) sve vie znamenaka u rjeenju.Znamenke rjeenja koje se uestalo ponavljaju moemo smatrati tonima. Primjeujemo da je za postizanjetonosti od eps= uz odabrane a,b dovoljno napraviti 47 polovljenja. Za 210= moemo smatrati dase ta tonost postie kad se stabiliziraju prve dvije decimale rjeenja, a to se (tablica) dogaa za n =6
polovljenja.
b) U standardnom MATLAB-ovu toolboxu je i funkcija fzero.
Ponovo je potrebno da naa funkcija f prethodno bude zapisana u vidu funkcijskog m-filea. Sintaksa je:
fzero(f , izraz) Ime funkcije je u navodnicima. Izraz je poetna aproksimacija za traenu nultoku.
Koritenjem funkcije fzero u Primjeru 1 dobili bismo:
fzero('f ',1) rezultat (u dugom formatu): ans = 0.65291864041920
Algoritam funkcije fzero je malko kompliciran, a radi tako da najprije poevi od poetne aproksimacije samtraga za prvom promjenom predznaka funkcije i ako je nae, koristi bisekciju u kombinaciji s jo nekimtehnikama. M-file fzero.m smjeten je u folderu C:\matlab\toolbox\matlab\funfun, i kao takav, moe seotvoriti i pogledati.
c) Ako je ( )xf polinom, moemo koristiti i naredbu roots.
Sjetimo se: ako je ( )xf polinom stupnja n, onda on ima tono n nultoki (koje su openito kompleksne).Traenje ovih nultoki u MATLAB-u obavlja naredba roots.
Najprije, polinom u MATLAB-u trebamo zapisati kao jednorednu matricu koeficijenata. Raunanje vrijednostitog polinoma u zadanim tokama obavlja naredba polyval.(roots.m i polyval.m funkcijski su m-fileovi u folderu C:\matlab\toolbox\matlab\polyfun).
Npr. ako elimo zapisati polinom ( ) 521114 234 +++= xxxxxf ,utipkat emo redom njegove koeficijente: f=[4 -11 1 21 5] f =
4 -11 1 21 5Za traenje svih nultoki tog polinoma,
pozovemo roots:roots(f) ans =
2.0000 + 1.0000i2.0000 - 1.0000i
-1.0000-0.2500
Da bi izraunali npr. ( )1f , koristimo naredbupolyval:
polyval(f,1) ans =20
Ako elimo skicirati taj polinom,koristimo:
19
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-20
0
20
40
60
80
100
120
8/9/2019 PINM - Laboratorijske vjebe - 2008
20/36
x=-2:0.1:2;plot(x,polyval(f,x))grid
Primjer 2. Odredite s tonou eps najmanji pozitivni korijen jednadbe1+
3=x
xcos .
Za odabrane a,b, odredi koliko polovljenja treba da se postigne traena tonost?
Rjeenje
Skiciranjem grafova funkcija
( ) xxf cos1 = i ( )1
32 +
=x
xf vidi se
da je traeni korijen u intervalu [ ]6,5
.
Prvo funkciju ( )1
3cos
+=xxxf zapiemo i pohranimo u folder C:\matlabR12\work kao m-file f.m:
function y=f(x)y=cos(x)-3./(x+1);
Zatim pozovemo bis. Ispostavlja se da se traena tonost eps= postie sa n= 46 polovljenja.bis('f',5,6,5) Rezultati (u dugom formatu): ans = 5.20312500000000bis('f',5,6,10) ans = 5.21630859375000bis('f',5,6,20) ans = 5.21603536605835bis('f',5,6,30) ans = 5.21603577258065bis('f',5,6,40) ans = 5.21603577298038bis('f',5,6,50) Toan rezultat ans = 5.21603577298021
Metodu bisekcije moemo ilustrirati i tako da koritenjem naredbe zoom i mia zumiramo sliku, ali bi to
bio spor i neprecizan postupak za efektivno traenje korijena:
20
0 1 2 3 4 5 6-1
-0.5
0
0.5
1
1.5
2
2.5
3
8/9/2019 PINM - Laboratorijske vjebe - 2008
21/36
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE VI
Numerika u MATLAB-u (nastavak)
2. Interpolacija
Problem: Zadane su toke ( ) ( ) ( ) ( )nn yxyxyxyx ,,...,,,,,, 221100 . Trebaodrediti
polinom najmanjeg stupnja, iji graf sadri sve te toke.
Teorija kae da takav polinom postoji i stupanj mu je manji ili jednak n. Naziva seLagrange-ov interpolacioni polinom. Raunamo ga tako da prvo definiramo polinome:
)()) ((
)()) (()(
02010
21
00 0
0
n
nn
jj j
j
xxxxxx
xxxxxx
xx
xxxl
=
=
=
)()) ((
)()) (()(
12101
20
10 1
1
n
nn
jj j
j
xxxxxx
xxxxxx
xx
xxxl
=
=
=
.
.
.
)()) (()()) ((
)(110
110
0
=
=
=
nnnn
nn
njj jn
j
nxxxxxx
xxxxxx
xx
xxxl
Lagrange-ov interpolacioni polinom je tada )(...)()()()( 11000
xlyxlyxlyxlyxL nn
n
k
kkn +++===
.
21
5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 60.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
5.205 5.21 5.215 5.22 5.225 5.23
0.47
0.475
0.48
0.485
0.49
8/9/2019 PINM - Laboratorijske vjebe - 2008
22/36
Primjer 1. Za podatke dane u tablici odredite Lagrangeov interpolacioni polinom.
xi -4 -2 -1 2yi 0 4.25 -4.875 -5.25
Rjeenje: Imamo redom:
36
44
)24)(14)(24(
)2)(1)(2(
))()((
))()(()(
23
302010
3210
++=
++++
=
=
xxxxxx
xxxxxx
xxxxxxxl
8
863
)22)(12)(42(
)2)(1)(4(
))()((
))()(()(
23
312101
3201
+=
++++
=
=
xxxxxx
xxxxxx
xxxxxxxl
9
1644
)21)(21)(41(
)2)(2)(4(
))()((
))()(()(
23
321202
3102
++=
++++
=
=
xxxxxx
xxxxxx
xxxxxxxl
72
8147
)12)(22)(42(
)1)(2)(4(
))()((
))()(()(
23
231303
2103
+++=
++++++
=
=
xxxxxx
xxxxxx
xxxxxxxl .
Dakle je traeni Lagrangeov interpolacioni polinom =+++= )()()()()( 332211003 xlyxlyxlyxlyxL
5.13375.625.323 += xxx .
Sada emo isti primjer rijeiti uz koritenje MATLAB-a. Lagrangeov interpolacioni polinom rauna direktnonaredba polyfit(x,y,n), gdje su vrijednosti koordinata x i y pohranjene u jednoredne matrice x i y, a
n (= broj toaka - 1) je stupanj traenog polinoma. Polinom dobivamo u vidu jednoredne matricekoeficijenata po potencijama. Imamo, dakle:
x=[-4 -2 -1 2]; Upiemo x-eve.y=[0 4.25 -4.875 -5.25]; Upiemo y-e.
p=polyfit(x,y,3) Stavimo n = 4-1=3.
Ako elimo vidjeti kako dobijeni polinom izgleda na slici, moemo utipkati:
x1=-5:0.05:5; Da bi slika bila ljepa, polinom emo nacrtati preciznije.plot(x,y,'*',x1,polyval(p,x1)) Zadane toke (xi,yi) na slici su oznaene s * slika (1).
Primjer 2. Aproksimirajmo funkciju ( ) xxy cos= Lagrange-ovim interpolacionim polinomom u tokama sapscisama 0, 1, 3, 4, 5. Ocijeni apsolutnu pogreku aproksimacije u toki a) x=2, b)x=-1? Obrazloi.
Rjeenje:
x=[0 1 3 4 5]; Upiemo x-eve.y=cos(x); Izraunamo y-e.
p=polyfit(x,y,4) Polinom je( ) 0000131530079713315002680 234 .x.x.x.x.-xp +++= .
abs(polyval(p,2)-cos(2)) Pogreka Lagrangeovog polinoma u toki 2 je otprilike podnoljivih0.0485 (interpolacija!), a u toki 1 (van intervala) je loih 1.2935.abs(polyval(p,-1)-cos(-1))
x1=-2:0.05:8; To se uoava i na donjoj desnoj slici slika (2).
22
( ) ( ) =+++++++++++=72
814725.5
9
1644875.4
8
86325.4
36
440
23232323 xxxxxxxxxxxx
8/9/2019 PINM - Laboratorijske vjebe - 2008
23/36
plot(x,y,'*',x1,cos(x1),x1,polyval(p,x1)) Toke (xi,yi) opet oznaimo s *.
slika (1)
slika (2)PRIMIJENJENA I NUMERIKA MATEMATIKA
LABORATORIJSKE VJEBE VII
Numerika u MATLAB-u (nastavak)
3. Metoda najmanjih kvadrata
Problem: Zadane su toke ( ) ( ) ( ) ( )nn yxyxyxyx ,,...,,,,,, 221100 . Trebaodrediti funkciju ( )xf koja dane toke aproksimira u smislu metodenajmanjih kvadrata (tj. tako da je suma kvadrata odstupanja
( )[ ]=
=n
i
ii yxfS0
2
u danim tokama minimalna).
U naem sluaju funkcija e biti polinom ( )xp stupnja nm . Taj polinom odreujemo takoda odredimo za koje koeficijente funkcija S od m+1 varijabli postie lokalni minimum -
vidi Predavanja.
Primjer 1. Metodom najmanjih kvadrata odredi polinom ( )xp stupnja m koji aproksimira toke ( )ii yx , ije su koordinate dane u tablici, ako je: a) m=0, b) m=1, c) m=2.
xi -4.1 -2.9 -2.1 -0.9 -0.2 -0.1yi -2.39 -0.52 -0.27 -0.75 -2.52 -2.13
Rjeenje: Formiramo tablicu:
iix iy
2
ix3
ix4ix ii yx ii yx
2
0 -4.1 -2.39 16.81 -68.921 282.5761 9.799 -40.1759
23
-5 -4 -3 -2 -1 0 1 2 3 4 5-50
0
50
100
150
200
-2 -1 0 1 2 3 4 5 6 7 8-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
8/9/2019 PINM - Laboratorijske vjebe - 2008
24/36
1 -2.9 -0.52 8.41 -24.389 70.7281 1.508 -4.37322 -2.1 -0.27 4.41 -9.261 19.4481 0.567 -1.19073 -0.9 -0.75 0.81 -0.729 0.6561 0.675 -0.60754 -0.2 -2.52 0.04 -0.008 0.0016 0.504 -0.10085 -0.1 -2.13 0.01 -0.001 0.0001 0.213 -0.0213
-10.3 -8.58 30.49 -103.309 373.4101 13.266 -46.4694
a) Stavimo ( ) Axp = , ( ) ( )[ ] ( )==
==5
0
2
0
2
i
i
n
i
ii yAyxpAS . Odredimo lokalni minimum funkcije S:
( ) ( ) ( ) -1.43006
8.58-
6
16020
5
0
5
0
5
0
5
0
2 ======= ==== i
i
i
i
i
i
i
i yAyAyAyAdA
dAS
dA
d.
( ) 4300.1= xp
b) ( ) BAxxp += , ( ) ( )[ ] ( )==
+==5
0
2
0
2,
i
ii
n
i
ii yBAxyxpBAS . Odredbeni sustav za A,B je:
( ) ( ) ( ) ===== =+=+=+=5
0
5
0
5
0
2
5
0
5
0
2 020,i
ii
i
i
i
ii
i
ii
i
ii yxxBxAxyBAxyBAxA
BASA
( ) ( ) ( ) ====
=+=+=+
= 5
0
5
0
5
0
5
0
26020,
i
i
i
i
i
ii
i
ii yBxAyBAxyBAxB
BASB
tj.
=
=
=6+
=
- 1 .B
- 0 .
- 8 . 5 81 0 . 3
1 3 . 2 6 61 0 . 33 0 . 4 9 A
BA
BA ( ) 1.6261-0.1142 = xxp .
c) ( ) CBxAxxp ++= 2 , ( ) ( )( ) ( )25
0
2
2
0
,, ==
++==i
iii
n
i
ii yCBxAxyxpCBAS . Odredbeni sustav je:
( ) ( ) == ===
=++=++
= 5
0
25
0
5
0
235
0
45
0
2200,,
i
ii
i i
ii
i
i
i
iii yxxCxBxAyCBxAxA
CBASA
( ) ( ) == ===
=++=++
= 5
0
5
0
5
0
25
0
35
0
2200,,
i
ii
i i
ii
i
i
i
iii yxxCxBxAyCBxAxB
CBASB
( ) ( ) ====
=++=++
= 5
0
5
0
5
0
25
0
22600,,
i
i
i
i
i
i
i
iii yCxBxAyCBxAxC
CBASC
=
=
=
=+
=+
=+
- 2 . 5
- 2 . 3
- 0 . 5
8 . 5 8-61 0 . 33 0 . 4 9
1 3 . 2 6 63.1 03 0 . 4 91 0 3 . 3 0 9
- 4 6 . 4 6 9 43 0 . 4 91 0 3 . 3 0 93 7 3 . 4 1 0 1
C
B
A
CBA
CBA
CBA
( ) 2.5972-3232255510 2 x.x.xp = .
Sada emo isti primjer rijeiti koritenjem MATLAB-a. Koeficijente polinoma ( )xp rauna naredbapolyfit(x,y,m), gdje su vrijednosti koordinata n toaka pohranjene u jednoredne matrice x i y, a nm jestupanj traenog polinoma. (U sluaju da stavimo nm = , dobili bismo Lagrangeov interpolacioni polinom zate toke.) Polinome dobivamo u vidu jednorednih matrica koeficijenata po potencijama. Imamo, dakle:
24
8/9/2019 PINM - Laboratorijske vjebe - 2008
25/36
x=[ -4.1 -2.9 -2.1 -0.9 -0.2 -0.1] Upiemo x-eve.y=[-2.39 -0.52 -0.27 -0.75 -2.52 -2.13]; Upiemo y-e.
p=polyfit(x,y,m) Stavljamo razliite m (m=0,1,2,...,n).
Primjer 2. Neka su vrijednostiapscisa i ordinata x i y desettoaka zadane tablicom. Aproksimirajmo ove toke polinomima stupnjeva m=0,1,2,...,9 u smislu metodenajmanjih kvadrata.
xi 1.00 2.00 3.50 4.00 4.80 6.20 8.00 8.90 9.20 9.80yi 1.55 -2.18 0.37 1.15 -11.38 -0.08 -6.79 -0.57 -0.22 -0.39
Rjeenje: Aproksimirajmo
x=[1 2 3.5 4 4.8 6.2 8 8.9 9.2 9.8] Upiemo x-eve.y=[1.55 -2.18 0.37 1.15 -11.38 -0.08 -6.79 -0.57 -0.22 -0.39] Upiemo y-e.
p=polyfit(x,y,m) Probajmo m=0,1,2,...,9.
Skiciramo li dobivene polinome naredbama: x1=1:0.05:10;
plot(x,y,'*',x1,polyval(p,x1))
25
Nacrtamo li ova tri polinoma naintervalu [-4.2,0],dobijemo:
-4.5 -4 -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0-3
-2.5
-2
-1.5
-1
-0.5
0
1 2 3 4 5 6 7 8 9 10-12
-10
-8
-6
-4
-2
0
2
1 2 3 4 5 6 7 8 9 10-12
-10
-8
-6
-4
-2
0
2
8/9/2019 PINM - Laboratorijske vjebe - 2008
26/36
m=0 m=1
m=2 m=9(Lagrangeov interpolacioni polinom)
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE VIII
Numerika u MATLAB-u (nastavak)
4. Numerika integracija
Problem: Za zadanu funkciju f(x) i granice a, b (a
8/9/2019 PINM - Laboratorijske vjebe - 2008
27/36
(jednostavna) Simpsonova [ ] [ ] 166.6667491004513
14
3210
==++ yyyh
I
c) 10=n ,( )
2.010
11 ===n
abh ,
trapezna formula daje:
( )[ ]921100 ...22
yyyyyh
I +++++
= -156.7463,
a Simpsonova:
( ) ( )[ ]842931100 ...2...43
yyyyyyyyh
I +++++++++
= -157.0795.
Problem emo sada rjeavati uz pomo MATLAB-a. Trapezna iSimpsonova formula, postoje u vidu nestandardnih funkcijskihm-fileova trapez.m i simpson.m u folderu
C:\matlabR12\work. Pozivaju se s:
trapez(ime funkcije,a,b,n) i simpson(ime funkcije,a,b,n),
gdje je ime podintegralne funkcije f (kao m-filea, standardnog ili ne) opet u navodnicima, a,b donja i gornjagranica integracije, a n broj podintervala na koje dijelimo osnovni interval [a,b] (kod Simpsonove formule nmora biti paran!).
U Primjeru 1. tako prvo moramo funkciju ( )1
1002
3
+=x
xxf zapisati i pohraniti u folder
C:\matlabR12\work kao funkcijski m-file f.m. Sintaksa je, sjetimo se:
function y=f(x)y=x.^3-100./(x.^2+1);
Pozivanjem m-fileova trapez.m i simpson.m za 10,2,1=n lako se moemo uvjeriti da je prethodni raunispravan. Ako elimo provjeriti koliki n treba uzeti da bi se znamenke aproksimacije rjeenja stabilizirale,uzimamo i vee n .
Naredba trapez('f',-1,1,1000000) daje ans =-1.570796251229354e+002
Simpson simpson('f',-1,1,520) je puno bolji ans =-1.570796326794897e+002
(*) Za numeriko integriranje, MATLAB standardno koristi dvije naredbe: quad i quad8. Sintaksa je:
quad(ime funkcije,a,b) i quad8(ime funkcije,a,b)
27
iix iy
0 -1.0 -51.00001 -0.8 -61.48762 -0.6 -73.74543 -0.4 -86.27094 -0.2 -96.16185 0.0 -100.00006 0.2 -96.14587 0.4 -86.14298 0.6 -73.31349 0.8 -60.4636
10 1.0 -49.0000
8/9/2019 PINM - Laboratorijske vjebe - 2008
28/36
Navodnici u pozivu naredbi su obavezni. Funkcija koja se integrira mora postojati u memoriji kao m-fileistog imena. Po volji se moe dodati i etvrti argument, koji predstavlja tolerancu (inae je toleranca 310 ).
Koritenjem quad('f',-1,1,eps) dobijamo Recursion level limit reached inquad.Singularity likely.
Recursion level limit reached inquad. Singularity likely.
ans =-1.570796326794897e+002
Dok quad8('f',-1,1,eps) odmah daje ans =-1.570796326794897e+002
U novijim verzijama MATLAB a, quad8 je zamijenila naredba quadl, s istim parametrima.
PRIMIJENJENA I NUMERIKA MATEMATIKALABORATORIJSKE VJEBE IX
Deskriptivna statistika manipulacija statistikim podacima
1. Diskretna statistika obiljeja
Pretpostavimo da je zadan niz statistikih podataka Nxxx ,...,, 21 , neka su raaa ,...,, 21 meusobno razliite vrijednosti tog statistikog niza u uzlaznom poretku i neka sufrekvencije tih vrijednosti redom rfff ,...,, 21 . Ovako organizirani podaci lako se
prikazuju tabelarno i grafiki.
Ako su zadane razliite vrijednosti raaa ,...,, 21 statistikog niza s pripadnim
frekvencijamarfff ,...,, 21 , onda je ==
r
kkfN 1 ukupan broj podataka u nizu, a
aritmetika sredina tog niza je =
==r
k
kk faN
Xsv1
1. Nadalje, disperzija statistikog niza je
2
1
22 )(1
svfaN
dr
k
kk == =
, a njegova standardna devijacija dsd == . Ovo su osnovne
numerike karakteristike (parametri) statistikog niza.
Primjer 1. Brojanje poziva na nekoj telefonskoj centrali vreno je automatski u jednakim vremenskim
intervalima od jedne minute. Centrala u jednoj minuti moe primiti najvie est poziva. Statistiki niz sastojise od broja poziva koji su pristigli u minutama jednog sata: 2, 3, 5, 3, 0, 3, 0, 5, 4, 4, 6, 3, 4, 6, 3, 5, 6, 3, 4, 1,0, 3, 4, 5, 6, 3, 0, 3, 0, 4, 1, 2, 0, 3, 4, 5, 3, 5, 3, 2, 3, 4, 5, 3, 6, 4, 3, 2, 4, 2, 1, 3, 4, 5, 6, 4, 3, 4, 2, 1. Sredimo
podatke i izraunajmo numerike karakteristike ovog statistikog niza.
28
8/9/2019 PINM - Laboratorijske vjebe - 2008
29/36
Rjeenje: Prebrojimo li koliko se puta pojavljuju vrijednosti 0, 1, 2, 3, 4, 5 i 6, dolazimo do njihovihfrekvencija i formiramo slijedeu tablicu:
ka kf kk fa kk fa
2
0 6 0 01 4 4 4
2 6 12 243 17 51 1534 13 52 2085 8 40 2006 6 36 216
N= 60 195 805
Sad su: 25.319560
11
1
==== =
r
k
kk faN
Xsv ,
2.854225.3805601)(1 22
1
22 ==== = svfaNdr
k
kk , 1.6894=== dsd .
Iskoristimo sada MATLAB u sreivanju i preglednom prikazu ovog statistikog niza.
x=[2,3,5,3,0,3,0,5,4,4,6,3,4,6,3,5,6,3,4,1,0,3,4,5,6,3,0,...3,0,4,1,2,0,3,4,5,3,5,3,2,3,4,5,3,6,4,3,2,4,2,1,3,4,5,6,4,...3,4,2,1]
Podatke unesemo (uoi: tri ili vie tokicaznae nastavak naredbe u slijedeem redu),
sort(x) pa ih sortiramo po veliini
i dobijemo:ans =Columns 1 through 12
0 0 0 0 0 0 1 1 1 1 2 2Columns 13 through 24
2 2 2 2 3 3 3 3 3 3 3 3Columns 25 through 36
3 3 3 3 3 3 3 3 3 4 4 4Columns 37 through 48
4 4 4 4 4 4 4 4 4 4 5 5Columns 49 through 60
5 5 5 5 5 5 6 6 6 6 6 6
Ovu rutinu sreivanja bitno emo pojednostaviti ako sjednemo i napiemo programi poput ovoga:
function [a,f]=af(x) Ova funkcija kreira jednoredne matrice a i f x=sort(x); j=1; broj=1; meusobno razliitih vrijednosti raaa ,...,, 21 for k=2:size(x,2) statistikog niza Nxxx ,...,, 21 poredanih po
veliiniif x(k)==x(k-1), broj=broj+1; i pripadnih frekvencija rfff ,...,, 21 .else f(j)=broj; a(j)=x(k-1); broj=1; j=j+1; end
a(j)=x(k); f(j)=broj; Funkcija af pohranjena je kao m-file af.m u
end folder C:\matlabR12\work.
[a,f]= af(x) odmah daje tablicu a = 0 1 2 3 4 5 6f = 6 4 6 17 13 8 6
29
8/9/2019 PINM - Laboratorijske vjebe - 2008
30/36
Numerike karakteristike niza sada raunamo koritenjem MATLAB-a:
N=sum(f) U Primjeru 1 tako bi dobili: N = 60sv=a*f /N sv = 3.2500d=(a.^2)*f /N-sv^2 d = 2.8542
sd=sqrt(d) sd = 1.6894
Ova se krivulja naziva poligonomfrekvencija.
2. Kontinuirana statistikaobiljeja
Neka je zadan niz statistikih podataka Nxxx ,...,, 21 kontinuiranog statistikog obiljeja.Podatke grupiramo u razrede [ [ [ ]rr aaaaaa ,,,,,, 12110 i neka su ti razredi
ekvidistantni, irina c. Oznaimo s rsss ,...,, 21 sredine razreda. Ako frekvencije razredaoznaimo redom sa rfff ,...,, 21 ponovno smo u mogunosti podatke pregledno
prikazati.
Znamo da je =
=r
k
kfN1
ukupan broj podataka u nizu. Za aritmetiku sredinu tog niza
sada uzimamo =
==r
k
kk fsN
Xsv1
1. Nadalje, disperziju tog statistikog niza raunamo kao
2
1
22 )(1
svfs
N
dr
k
kk ==
= , a njegovu standardnu devijaciju kao dsd == .
Primjer 1. Mjerenjem teina [kg] trideset purana u nekom peradarniku, dobiveni su ovi podaci:8.22, 6.03, 5.81, 7.23, 5.67, 4.90, 6.97, 8.65, 8.44, 7.57, 6.89, 6.60, 6.85, 5.52, 5.14, 6.97, 7.98, 5.70, 5.09,7.22, 5.54, 8.06, 7.33, 5.94, 6.47, 7.24, 6.59, 5.83, 7.58, 6.15. Organizirajmo ove podatke u r=5 razreda, azatim izraunajmo numerike karakteristike ovog statistikog niza.
Rjeenje: Uoavamo da je najmanja vrijednost u nizu 4.90, a najvea 8.65. Kako imamo pet razreda, njihova
je irina 75.0
5
90.465.8=
=c . Formiramo tablicu:
30
0 1 2 3 4 5 64
6
8
10
12
14
16
18
Skicirajmo sada frekvencije f uovisnosti o vrijednostima a:
plot(a,f)
8/9/2019 PINM - Laboratorijske vjebe - 2008
31/36
RAZREDI
kkaa
1
SREDINE
RAZREDA ksFREKVENCIJE
kf kk fs kk fs
2
4.90 5.65 5.2750 5 26.3750 139.12815.65 6.40 6.0250 7 42.1750 254.10446.40 7.15 6.7750 7 47.4250 321.30447.15 7.90 7.5250 6 45.1500 339.7538
7.90 8.65 8.2750 5 41.3750 342.3781 N= 30 202.5000 1396.6688
Raunamo: 6.7500202.500030
11
1
==== =
r
k
kk fsN
Xsv ,
0.99316.75001396.668830
1)(
1 22
1
22 ==== =
svfsN
dr
k
kk , 0.9966=== dsd .
Prouavanje statistikog niza lake je ako koristimo MATLAB.
x=[8.22, 6.03, 5.81, 7.23, 5.67, 4.90, 6.97, 8.65, 8.44, 7.57, 6.89, 6.60, 6.85, 5.52,...5.14, 6.97, 7.98, 5.70, 5.09, 7.22, 5.54, 8.06, 7.33, 5.94, 6.47, 7.24, 6.59, 5.83, 7.58, 6.15]
Unesemopodatke.
Podatke opet moemo sortirati pjeice, a moemo se posluiti i slijedeim funkcijskim m-fileom:
function [s,f,c]=sfc(x,r) Ova funkcija dijeli podatke iz statistikog nizax=sort(x); Nxxx ,...,, 21 u r razreda, rauna irinu c tihnajmanji=x(1); najveci=x(size(x,2)); razreda i potom kreira jednoredne matricec=(najveci-najmanji)/r; aritmetikih sredina rsss ,...,, 21 razreda idg=najmanji:c:najveci-c; gg=dg+c; pripadnih frekvencija rfff ,...,, 21 .s=(dg+gg)/2; j=1; f=zeros(1,size(s,2));for k=1:size(x,2)
if j==r, f(j)=size(x,2)-k+2; break, endwhile x(k)>=gg(j) Funkcija sfc pohranjena je kao m-file sfc.m u
if j
8/9/2019 PINM - Laboratorijske vjebe - 2008
32/36
sd=sqrt(d) sd = 0.9966
PRIMIJENJENA I NUMERIKAMATEMATIKA
LABORATORIJSKE VJEBE X
Prilagoavanje teoretske statistike razdiobe empirikim podacima
32
Skicirajmo jo frekvencije f uovisnosti o vrijednostima s
plot(s,f)
(tj. poligon frekvencija):
est je prikaz podataka i pomoutzv. histograma frekvencija:
bar(s,f)
5 5.5 6 6.5 7 7.5 8 8.55
5.2
5.4
5.6
5.8
6
6.2
6.4
6.6
6.8
7
4 5 6 7 8 90
1
2
3
4
5
6
7
8/9/2019 PINM - Laboratorijske vjebe - 2008
33/36
Problem: Zadan je skup vrijednosti statistikog niza i pripadne frekvencije. Uzpretpostavku da su ti podaci distribuirani prema nekoj od poznatih razdioba, odreditikoja razdioba najbolje opisuje njihovo ponaanje.
a) Binomna razdioba
Za binomnu razdiobu s parametrima n N i [ ]1,0p karakteristino je da suvrijednosti ka -ova 0,1,2,,n. Ako je X sluajna varijabla distribuirana po binomnoj
razdiobi, onda je { } ( )knk pp
k
nkXP
== 1 vjerojatnost da ona poprimi upravo
vrijednost k (k=0,1,2,,n), njeno je oekivanje EX=np, a varijanca VarX=np(1-p).
Primjer 1. arulje se proizvode na pokretnoj traci. U pravilnim vremenskim razmacima vri se kontrolaproizvodnje, i to tako da se nasumce odabere osam arulja i potom testira koliko ih je neispravnih. Rezultativelikog broja testiranja dani su u donjoj tablici. Naite odgovarajue teoretske frekvencije uz pretpostavku da
je broj neispravnih arulja distribuiran po binomnoj razdiobi.
BROJ DEFEKTNIH
PROIZVODAkak =
PRIPADNE
FREKVENCIJE
kf
0 951 2382 3223 2884 1215 816 327 168 4
Prema tome, kreiramo jednorednu matricu a-ova a=0:8zatim jednorednu matricu frekvencija f f=[95 238 322 288 121 81 32 16 4]
Zadajemo broj n n=8 i n = 8Raunamo ukupni broj podataka N, N=sum(f) dobijemo N = 1197
potom aritmetiku sredinu sv, sv=a*f '/ N rezultate: sv = 2.4820i parametarp p=sv/n p = 0.3103
Da odredimo vjerojatnosti { } ( )knk
ppk
nkXP
== 1 , koristimo tablice ili funkcijski m-file binomna.m,
kojeg smo za potrebe ovih vjebi kreirali i pohranili u folder C:\matlabR12\work.
Jo nam ostaje nai teoretske frekvencije ft: ft=round(N*binomna(n,p,a))round je decimalne brojeve zaokruio na cijele
33
Zadatak rjeavamo ovako (v. Predavanja):
- odmah vidimo da je n=8, a ukupni broj podataka
=
=n
k
kfN0
=1197;
- izraunamo aritmetiku sredinu =
=n
k
kk faN
sv0
1,
pa je interpretiramo kao oekivanje teoretskebinomne razdiobe s parametrima n i p;
- dakle je p=sv/n, pa raunamo { }kXPNftk == ,
gdje je { } ( )knk
ppk
nkXP
== 1 .
8/9/2019 PINM - Laboratorijske vjebe - 2008
34/36
Konano dobijemo ft =61 221 347 313 176 63 14 2 0
b) Poissonova razdioba
Kod Poissonove razdiobe, vrijednosti ka su svi prirodni brojevi i nula. Ako je Xsluajna varijabla distribuirana po Poissonovoj razdiobi s parametrom >0, onda je
{ } == ek
kXPk
!vjerojatnost da ona poprimi upravo vrijednost 0Nk , oekivanje joj
je EX=, a varijanca VarX= .
Rezultati brojanja dani su u donjoj tablici.
Primjer 2. Provedeno je brojanje stranaka koje u toku jednog sata obave posao na jednom alteru Splitskebanke. Frekvencija kf oznaava broj onih sati u kojima slubenica podmiri tono ka stranaka.Rezultati brojanja dani su u donjoj tablici. Uz pretpostavku da se gornji podaci ravnaju po Poissonovojrazdiobi, za svaku vrijednost ka izraunajte odgovarajuu teoretsku frekvenciju kft .
BROJ
STRANAKAkak =
PRIPADNE
FREKVENCIJE
kf
0 36
1 1012 1503 2214 3125 2366 1517 888 329 14
10 6
11 312 113 1
Prema tome, kreiramo jednorednu matricu a-ova a=0:13zatim jednorednu matricu frekvencija f f=[36 101 150 221 312 236 151 88 32 14 6 3 1 1]
Raunamo dakle ukupni broj podataka N, N=sum(f) imamo N = 1352
potom aritmetiku sredinu sv (tj. ) sv=a*f '/N sv = 4.0784
Jo nam ostaju teoretske frekvencije ft: ft=round(N*poisson(sv,a))round je decimalne brojeve zaokruio na cijele
34
Zadatak rjeavamo ovako (v. Predavanja):
- izraunamo ukupni broj podataka =
=13
0k
kfN ;
- izraunamo aritmetiku sredinu =
=13
0
1
kkk fa
Nsv ,
pa je interpretiramo kao oekivanje teoretskePoissonove razdiobe s parametrom ;
- dakle je parametar =sv, pa potom raunamo
{ }kXPNftk == , gdje je { } == ek
kXPk
!.
Da izraunamo vjerojatnosti { }kXP = sluimo setablicama ili funkcijskimm-fileom poisson.mkreiranim posebno za ove vjebe i pohranjenim ufolder C:\work.
8/9/2019 PINM - Laboratorijske vjebe - 2008
35/36
Konano dobijemo ft =23 93 190 259 264 215 146 85 43 20 8 3 1 0
Koliko je ova aproksimacija dobra moemo provjeriti
crtanjem grafikona empirikih i teoretskih frekvencijau ovisnosti o a-ovima. Koristimo naredbu plot(a,f,a,ft,--)(Teorijske frekvencije oznaimo izlomljenom crtom.)
c) Normalna razdioba
Za razliku od binomne i Poissonove razdiobe koje su diskretne, kod normalne razdiobe podaci mogu teoretski poprimiti bilo koju realnu vrijednost. Ako je X sluajnavarijabla distribuirana po normalnoj razdiobi s parametrima i 2 , onda je njenooekivanje EX= , a varijanca (disperzija) VarX= 2 .Primjer 3. Mjerenjem postotnog udjela sumpora u eljeznoj rudi ustanovljeno je da oneienost variraizmeu 4.30 i 9.80 posto i podaci su grupirani u 11 razreda prema tablici. Normalnu razdiobu prilagoditetim empirikim podacima.
RAZREDI
kkaa
1
FREKVENCIJE
kf
4.30 4.80 24.80 5.30 85.30 5.80 195.80 6.30 51
35
Zadatak rjeavamo ovako (v. Predavanja):
- odredimo prvo irinu c i sredine razreda ks ;
- izraunamo ukupni broj podataka =
=11
1k
kfN ;
- izraunamo aritmetiku sredinu =
=11
1
1
kkk fs
Nsv ,
disperziju 211
1
2)(
1svfs
Nd
kkk =
=i standardnu
devijaciju dsd = .
0 2 4 6 8 10 12 140
50
100
150
200
250
300
350
8/9/2019 PINM - Laboratorijske vjebe - 2008
36/36
6.30 6.80 866.80 7.30 917.30 7.80 757.80 8.30 538.30 8.80 428.80 9.30 18
9.30 9.80 4
Ako elimo raditi u MATLAB-u, kreiramo c, c=0.5zatim dvije jednoredne matrice, dg i gg u koje dg=[4.30:c:9.30]
pohranimo donje i gornje granice razreda, gg=[4.80:c:9.80]zatim jednorednu matricu frekvencija f f=[2 8 19 51 86 91 75 53 42 18 4]i na kraju matricu sredina razreda s s=(dg+gg)/2
Raunamo dakle ukupni broj podataka N, N=sum(f) i N = 449
potom aritmetiku sredinu sv, sv=s*f /N dobijemo sv = 7.1747disperziju d d=(s.^2)*f /N-sv^2 rezultate: d = 0.9265i standardnu devijaciju sd sd=sqrt(d) sd = 0.9626
Aritmetiku sredinu sv sada interpretiramo kao oekivanje teoretske sluajne varijable X , a sd kaonjenu standardnu devijaciju . Onda teoretske frekvencije moemo izraunati kao
{ }
==
11
kkkkk
aaNaXaPNft , gdje je ( ) dtex
x t
= 2
2
2
1
funkcija
distribucije vjerojatnosti jedinine normalne razdiobe. Vrijednosti funkcije ( )x moemo pronai utablicama, ili izraunati pozivanjem funkcijskogm-filea fi.mkreiranog posebno za ove vjebe i pohranjenogu folder C:\matlabR12\work. U kreiranju tog m-filea posluili smo se Matlabovom ugraenom funkcijom erf,
( ) dtexerfx
t =0
22
(Matlab integral rauna priblino, numerikom integracijom). Oito je
( )
+
=+
==
1
22
1
2
1
22
1
2
12
2
xerf
xerfdtex
x t
. Vrijednosti funkcije ( )x1 inverzne funkciji
( )x raunat emo koristei m-file fiinv.mkoji se takoer nalazi u folderu C:\matlabR12\work.Tako kreiramo jednorednu matricuteoretskih frekvencija ft naredbom: ft=round(N*(fi((gg-sv)/sd)-fi((dg-sv)/sd)))
Konano dobijemo: ft =2 8 23 47 75 91 85 61 34 14 5
36