Praktikum iz Fizike 2 1 2015 © M. Krstić i J. Crnjanski © Praktikum iz Fizike 2 © Uvod u MatLab
PraktikumizFizike2
12015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Komandni prozor(CommandWindow)
slui za izvravanje komandi
Tekui direktorijum /Radni prostor(Workspace)
Prethodne komande(History)
22015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Rad u komandnom prozoru izvravanje pojedinanih komandi: >> komanda = izvrenje poslednje komande i prikazrezultata izvrenja.
Nije mogue vratiti se u prethodni red, izmeniti komandu iizvriti tako izmenjenu komandu.
>> (strelica na tastaturi) prikazuje prethodnu komandu. >> clc brie sadraj komandnog prozora. Ako se nakon komande upie ; rezultat izvrenja se neeprikazati.
>> clear all brie sve promenljive iz radnogprostora (Workspace).
Kada se na poetku reda napie % taj red se oznaava kaokomentar.Takvi redovi se ne izvravaju.
32015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
42015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Pisanjem programskog koda u Editoru moe se izvriti viesukcesivnih komandi, na slian nain kao to omoguavakomandni prozor. Ekstenzija fajlova pisanih u MatLabu je.m, a ovako generisani fajlovi se mogu otvoriti i menjati uWindows Notepad iliWordpad aplikaciji.
Svaki .m fajl se moe pokrenuti ili iz samog Editora ili izKomandnog prozora, pozivanjem imena fajla kao komande.
Pokretanjem .m fajla izvravaju se sve komande koje on usebi sadri. Ovako napisan .m fajl naziva se skripta.
.m fajl se moe iskoristi i za generisanje funkcija, o emu ebiti rei neto kasnije.
52015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Sadri slova az, cifre 09 i/ili donju crtu _. Mora poeti slovom. MatLab je case sensitive tj. razlikuje velika odmalih slova. Primeri dobro definisanih promenljivih: brzina, a1, A1,
naelektrisanje_elektrona Primeri loe definisanih promenljivih: brzina!, naelektrisanje-
elektrona, 1a, _A1, konacno resenje Maksimalan broj dozvoljenih karaktera je 63 (namelengthmax) Provera rezervisanoti i ispravno definisane promenljive iskeyword,
isvarname Ugraene promenljive:
pi broj eps najmanja razlika koju MatLabmoe da uoi: eps = 252 i ili j imaginarna jedinica inf beskonano velika vrednost, NaN Not a Number
62015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
a = [1.3 1.6 0.1 -0.1 -1.2 -1.6];
ceil(a) zaokruivanjenanajbliiceobrojprema+inf
floor(a) zaokruivanjenanajbliiceobrojpremainf
fix(a) zaokruivanjenanajbliiceobrojprema0
round(a) zaokruivanje
sign(a) znak72015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Vektor =niz brojeva Definisanje vektora
elementpo element:vektor = [1 2 3 4 5]
poetni element:korak :krajnji elementvektor = [poetni element:korak:krajnji element]
vektor = [1:1:5] (u novijim verzijama moe i bez []) Linspace komanda ekvidistantne vrednosti elemenata.Zadaje seuformi
linspace(poetni element,krajnji element,broj elemenata)
vektor = linspace(1,5,10) Indeksiranje pristupanjeelementuvektora:vektor(4) Izbacivanje elementa vektora:vektor(4) = [] Pronalaenjeelementavektora: find
82015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
vektor = [1 4 6 8 0 0 5 2 10 3 15]vektor2 = [vektor,-1](dopuna novim elementom)
find(vektor2) (nalazi pozicije elemenata razliitih od0)find(vektor2>5) (nalazi pozicije elemenata >5)vektor2(find(vektor2>5)) (elemenati >5)find(vektor2==-1)(nalazi poziciju elementa 1)
doc naredba (otvara helpza traenunaredbu,recimodoc find)[vrednost, indeks] = max/min(vektor2)isnan(vektor2)(pronalaenjeNaNvrednosti)isnan(0./vektor2)isinf(vektor2./0)(pronalaenjeInfvrednosti)sum(vektor2) (sumiranje)sort(vektor2) (sortiranje)mean(vektor2) (srednja vrednost)
92015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
vektor red:vektorR = [1 2 3 4 5 6]
vektor kolona:vektorK = [1;2;3;4;5;6]
okretanje redvektorafliplr(vektorR)
okretanje kolona vektoraflipud(vektorK)
102015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Dvodimenzionalnematrice:matrica = [1 2 3; 4 5 6; 7 8 9]
matrica2 =[a b^2 c^a; log(a) sqrt(9) c; b-a a-c c*a]
Indeksiranje pristupanjeelementumatriceizvodisepomoukomande:
matrica(red,kolona)matrica(2,3)
Upotreba dvotake (:) dvotakaomoguavadefinisanjeopsegaelemenata
drugi_red = matrica(2,:)treca_kolona = matrica(:,3)
112015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Osnovne raunske operacije:
Sabiranje (+) i oduzimanje () Matrinomnoenje (*) i deljenje (/) Mnoenje (.*) i deljenje (./) pojedinanih elemenata
Osnovne ugraene funkcije:
length(vektor) broj elemenata vektora size(matrica) dimenzije matrice zeros(m,n) generisanje matrice m x n popunjene nulama ones(m,n) generisanje matrice m x n popunjene jedinicama eye(n) kvadratna matrica sa jedinicama na glavnojdijagonali
122015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
matrica1 = eye(3)matrica2 = 2*ones(3,3)matrica2*matrica1 (matrinomnoenje)matrica2.*matrica1 (elementpoelement)vektor = 1:1:10vektor.*vektorvektor.^2vektor = [0 pi/6 pi/3 pi/2 pi 2*pi]sin(vektor)cos(vektor)sqrt(1-sin(vektor).^2)
132015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
For petlja sastoji se od naredbe for, brojaa,tela petlje i naredbe end:
for broja = poetak:korak:krajTelo Petlje
end;
Definisanje vektora pomou for petlje:
for n = 1:1:10vektor(n) = n;
end;
142015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
If petlja sastoji se od naredbe if, uslova, telapetlje i naredbe end:
if uslovtelo petlje
end;
Primer korienja if petlje:
for n = 1:1:10if n
Napraviti .m fajl koji pravi matricu Adimenzija 6x6 koju treba popuniti nulama, azatim celu drugu kolonu popuniti jedinicama,celu treu kolonu dvojkama, etvrtutrojkama, petu etvorkama i estu peticama.Zatim napraviti jedinini vektor kolonu B sa 6redova i pomnoiti matricu A i vektor B. Izmatrice A, korienjem for petlje izdvojitidijagonalu kao zaseban vektor D i prikazati gana ekranu, kao i matricu C.
162015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
clear allclose allclcA = zeros(6,6);A(:,2) = 1;A(:,3) = 2;A(:,4) = 3;A(:,5) = 4;A(:,6) = 5;B = ones(6,1);C = A*B;for n = 1:6
D(n) = A(n,n);end
172015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Alternativno umesto petlje: D = diag(A);
Dvodimenzionalnigrafik: Iscrtavanjegrafika:komandaplot Obeleavanjekoordinatnihosa:komandexlabelylabel
clear all,close all,clc
broj_tacaka = 5000;t = linspace(0,4*pi,broj_tacaka);figure(1)plot(t,sin(t)); hold allplot(t,cos(t));xlabel('vreme t');ylabel('sin(t) i cos(t)');
182015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Prikazivanje razliitihzavisnostiuistomkoordinatnomsistemu
clear all, close all, clcfigure(1);x = [-2:0.01:4];y = 3.5.^(-0.5*x).*cos(6*x);plot(x,y,':g','LineWidth',2);hold all;y2 = x.^2+4*sin(2*x)-1;plot(x,y2,'--k','LineWidth',2);legend('y','y2',0);xlabel('x');ylabel('y');
192015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
202015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Trodimenzionalnigrafik:
Formiranjexiykoordinatnepodele(komanda: meshgrid) Iscrtavanjetrodimenzionalnemree(komanda:mesh) Iscrtavanjetrodimenzionalnepovrine(komanda:surf)
clear all, close all, clc[x,y] = meshgrid(-8:0.5:8);r = sqrt(x.^2+y.^2)+eps;z = sin(r)./r; %sombrerofigure(1);mesh(z);figure(2);surf(z);
212015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
222015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Napraviti .m fajl koji iscrtava sledee dvefunkcije na istom grafiku:
pri tome parametar x definisati prekolinspace komande od 2 do 2 sa 1e5taaka. Limiti za x i y osu su [2.5 2.5] i [31.5], korienjem komande xlim i ylim.Obe funkcije prikazati crvenom bojom, sadebljinom 3.
232015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
211 xf2
15.2x
g
clear allclose allclcx = linspace(-2,2,1e5);f = sqrt(1 - (abs(x) - 1).^2);g = - 2.5*sqrt(1 - sqrt(abs(x)/2));figure(1)plot(x,f,'-r','LineWidth',3); hold allplot(x,g,'-r','LineWidth',3);xlim([-2.5 2.5]);ylim([-3 1.5]);
242015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Napraviti .m fajl koji iscrtava zavisnost y od xgde je:
Promenljivu t napraviti komandomlinspace u granicama od 0 do 2 sa 1000taaka, a = 1, b = 10. Iscrtati grafike za vievrednosti parametra n = 2,4,6,8.
252015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
trx cos try sin ntbb
ar sintanh1
clear allclose allclct = linspace(0,2*pi,1000);a = 1;b = 10;n = 7;r = a + (1/b)*tanh(b*sin(n*t));x = r.*cos(t);y = r.*sin(t);figure(1)plot(x,y);
262015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
clear all, close all, clcvreme = linspace(-100,100,1000);figure(1)plot(vreme,heaviside(vreme));ylim([-0.2 1.2])
tau = 50;figure(2)plot(vreme,heaviside(vreme - tau));ylim([-0.2 1.2])
figure(3)plot(vreme,heaviside(vreme + tau));ylim([-0.2 1.2])
272015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
figure(4)plot(vreme,rectpuls(vreme,25));hold allplot(vreme,rectpuls(vreme-50,25));hold allplot(vreme,rectpuls(vreme+50,25));ylim([-0.2 1.2])figure(5)plot(vreme, heaviside(vreme+25) ...heaviside(vreme-25));figure(6)plot(vreme,tripuls(vreme,25));hold allplot(vreme,tripuls(vreme-50,25));hold allplot(vreme,tripuls(vreme+50,25));ylim([-0.2 1.2])
282015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
clear all, close all, clc
vreme = linspace(-6*pi,6*pi,1000);
figure(1)plot(vreme/pi,square(vreme));ylim([-1.2 1.2])xlabel('* \pi');
292015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Diferencijalne jednaine igraju kljunu ulogu u nauci i tehnicijer su one osnova gotovo svakog fizikog fenomena.
Vrlo mali broj diferencijalnih jednaina je mogue reitianalitiki.
MatLab poseduje veliki broj ugraenih funkcija i alatki zareavanje diferencijalnih jednaina numerikimmetodama.
U narednom razmatranju bie dat prikaz reavanja obinihdiferencijalnih jednaina (Ordinary differential equation, ODE)koje su date u obliku:
dx/dt = f(x,t)gde je f(x,t) poznata funkcija od x i t. Za reavanje ovediferencijalne jednaine prvog reda, potrebno je poznavanjepoetnog uslova, na primer, vrednost x = x0 u trenutku t = t0.
302015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Iako e u narednom razmatranju fokus biti na odreivanjutane zavisnosti x(t), uvek treba imati na umu pitanje koje jeodmnogo veeg praktinog znaaja:ta se nakon dovoljno dugo vremena deava sa x ?
1. Da li |x| ?
2. Ili x ima neku konanu graninu vrednost ?
3. Da li se x smiruje u neku vrstu regularnih oscilacija ?
4. Ili u sluaju da nijedno od prethodnih nije ispunjeno, xmoda nestabilno fluktuira (iako ostaje ogranieno), aki kada t ?
312015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
etiri mogunosti za eventualno ponaanje reenja x(t)date diferencijalne jednaine za date poetne uslove
322015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Linearna diferencijalna jednaina je ona jednaina u kojojnepoznata, odnosno zavisna promenjiva x i njeni izvodirazliitog reda figuriu u linearnom smislu. Prema tome,jednaina
u kojoj su c1 i c2 konstante, je linearna, jer su x i dx/dt prvogstepena.
Prethodna relacija bi bila linearna ak i onda kada bi c1 i c2 bilikomplikovane funkcije vremena t, jer je od znaaja samo ukom obliku se javljaju x i njegovi izvodi.
Neki primeri nelinearnih diferencijalnih jednaina:
21 cxcdtdx
xxdtdx )1( x
dtdx sin tx
dtdxx
332015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Nelinearne diferencijalne jednaine se generalno gledanomogu podeliti na dve klase: autonomne i neautonomnejednaine.
Posmatramo nelinearne diferencijalne jednaine prvog reda:
1. Autonomne jednaine su one jednaine kod kojih je brzinapromene x prosto funkcija samog reenja x i ne zavisieksplicitno od vremena.
2. Kod neautonomnih jednaina, brzina promene x zavisi i odvremena. Analitika reenja su mogua samo za specijalnesluajeve ovih jednaina.
)(xfdtdx
342015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Primeriautonomnihdiferencijalnihjednainaprvogreda:
a) Eksplodirajuafunkcija(blowup):
Reenje ove jednaine eksplodira u konanom trenutkukoji tei 1/x0, pa je vremenski odziv ogranien
tx
xxdtdx
0
2
11
352015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
b) Epidemija neke zarazne bolesti u populaciji se moeopisati diferencijalnom jednainom. Neka je x procenatapopulacije obolelo od zarazne bolesti, a S = (1 x)procenata je zdravo. Jedan od prostih modela,pretpostavlja da se lanovi populacije mogu slobodnokretati i susretati, i da je brzina porasta x proporcionalna ix i S sa koeficijentom srazmernosti r, pa jednaina kojaopisuje ovaj model glasi:
)exp(111
1)1(
0
rtx
xxrxdtdx
362015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Najoiglednija osobina ovog reenja je da x1 onda kada tto praktino znai da, kad tad, bez obzira na to koliko jejedinki u startu bilo bolesno, svi dobiju bolest. Na sreu, ovakavmodel epidemije je previe pojednostavljen i ne uzima u obzirmogunost da neki od obolelih ljudi mogu biti izolovani, ilijednostavno, da mogu da ozdrave.
372015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
382015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Postupak reavanja diferencijalne jednaine:
1. Postavka problema: Predstavljanje jednaine u obliku: dx/dt = f (t, x).
2. Formiranje funkcijske datoteke:
function dxdt = imefunkcije(nezavisna_promenljiva, zavisna_promenljiva, parametri)
function dxdt = f(t,x)3. Izbor metode reavanja, odnosno ODE solvera: ode45, ode23,
ode113, ode15s, ode23s, ode23t, ode23tb
4. Pokretanje ODE solvera iz glavnog programa i podeavanjeparametaraODE solvera
[t,x] = solver(@ime funkcije,[interval reavanja],poetni uslovi)
[t,x] = solver(@ime funkcije,[0:korak:tkrajnje], x0)
Solver Tipproblema Preciznost Kadakoristiti
ode45 Linearan Srednja Prvoprobatiovajsolver(RungeKuta
metoda)
ode23 Linearan Niska Kadasenetraivelikapreciznost
(Eulerovametoda)
ode113 Linearan Visoka Multistepmetoda kadasetrai
visokapreciznost
ode15s Nelinearan Srednja Akoode45neradi
ode23s Nelinearan Niska Kadasenetraivelikapreciznost
ode23t Osrednjenelinearan
Niska Kadasenetraivelikapreciznost
ode23tb Nelinearan Niska Kadasenetraivelikapreciznost
392015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
...
Primer 1: Autonomna linearna jednaina prvog reda(uproeni model epidemije, primer blow up funkcije).Jedna kolonija od 1000 bakterija razmnoava se brzinom odr = 0.8 jedniki na 1 sat. Koliko e biti bakterija u kolonijinakon 10 sati?
402015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Postavka problema (korak 1). Proces se moe modelovatidiferencijalnom jednainom oblika:
dN/dt = r N,
gde je N broj individua tj. populacija, a poetni uslov je definisansa: N(0) = 1000.
Naravno, ova jednaina se moe reiti analitiki i ima dobropoznato reenje u obliku eksponencijalne funkcije:
N(t) = N(0) exp(rt)
Reenje ove jednaine se moe dobiti i numeriki, koristeiintegrisani MatLabODE solver.
412015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Formiranjefunkcijskedatoteke(korak2)naosnovufunkcijedefinisaneukoraku1:
dN/dt = r N,
function dNdt = bakterije(t,N)dNdt = 0.8*N;
422015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Izbor solvera (korak3),formiranje i pokretanje glavnogprograma (korak 4)
tpoc = 0;tkraj = 10;vreme = linspace(tpoc,tkraj,100);N0 = 1000;
[t,N]=ode23(@bakterije,vreme,N0);
figure(1);plot(t,N,'LineWidth',2);title('Populacija bakterija nakon 10h');xlabel('Vreme');ylabel('Populacija');
432015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Poreenjesaanalitikimreenjem:N(t) = N(0) exp(rt)
Nanaliticko = N0*exp(0.8*vreme);figure(2);plot(vreme,Nanaliticko,'LineWidth',2);xlabel('Vreme');ylabel('Populacija');title('Analiticko resenje');
442015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Primer 2: Kada popijemo lek, koncentracija lekau naem organizmu (u sluaju uproenogmodela) menja se po slinoj diferencijalnojjednaini kao i u prethodnom primeru:
dc/dt = - c(t)/
gde je vremenska konstanta koja modelujerastvorljivost leka.
Kao i u prethodnom primeru i ova jednaina imasvoje analitiko reenje:
c(t) = c0exp(-t/)
452015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
Formiranje funkcijske datoteke (korak 2):
function dcdt = lekovi(t,c,tau)dcdt = -c/tau;
Izbor solvera (korak 3), formiranje ipokretanje glavnog programa (korak 4):
462015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
tpoc = 0;tkraj = 10;vreme = linspace(tpoc,tkraj,1000);c0 = 100;tau = 2;
options = odeset;[t,c]=ode23(@lekovi,vreme,c0,options,tau);
figure(1);plot(t,c,'LineWidth',2);title('Koncentracija leka nakon 10h');xlabel('Vreme');ylabel('Koncentracija leka');
472015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
ta se deava kada se uzimaju redovne doze,recimo 10 doza na svaka 2 sata. Kako izgledapromena koncentracije leka u periodu od 24sata? Da li dolazi do nagomilavanjakoncentracije leka u organizmu?
c(t) = c0exp(-t/) +h(t - )c0exp(-(t - )/) +
h(t - 2)c0exp(-(t - 2 )/) +
482015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab
clear all, close all, clctpoc = 0;tkraj = 24;vreme = linspace(tpoc,tkraj,1000);c0 = 100; tau = 2;izraz = c0*exp(-vreme/tau) + ...heaviside(vreme-tau).*c0.*exp(-(vreme-tau)/tau) +...heaviside(vreme-2*tau).*c0.*exp(-(vreme-2*tau)/tau) +...heaviside(vreme-3*tau).*c0.*exp(-(vreme-3*tau)/tau) +...heaviside(vreme-4*tau).*c0.*exp(-(vreme-4*tau)/tau) +...heaviside(vreme-5*tau).*c0.*exp(-(vreme-5*tau)/tau) +...heaviside(vreme-6*tau).*c0.*exp(-(vreme-6*tau)/tau) +...heaviside(vreme-7*tau).*c0.*exp(-(vreme-7*tau)/tau) +...heaviside(vreme-8*tau).*c0.*exp(-(vreme-8*tau)/tau) +...heaviside(vreme-9*tau).*c0.*exp(-(vreme-9*tau)/tau) +...heaviside(vreme-10*tau).*c0.*exp(-(vreme-10*tau)/tau);%izraz = c0*exp(-vreme/tau);%for n = 1:10% izraz = izraz + heaviside(vreme-n*tau).*...
c0.*exp(-(vreme-n*tau)/tau);%endfigure(2)plot(vreme,izraz);
492015M.KrstiiJ.CrnjanskiPraktikumizFizike2UvoduMatLab