Professional Documents
Culture Documents
jednaine Numeriko
reavanje
Modeliranje i simulacija
sistema
Obine diferencijalne
jednaine (ODJ)
engl. Ordinary Differential Equation (ODE)
U matematici ODJ je jednaina koju ini funkcija
jedne nezavisne promenljive i njenih izvoda.
Veoma su este u modelovanju dinamikih sistema
U simulacijama nezavisno promenljiva ja vreme t
y (n)
il
i
gde je:
y dy , y d 2 y ,..., y
dt
dt 2
(n)
dny
dt n
Eksplicitna forma
Implicitna forma
Ne razmatramo.
Linearna ODJ
Linearna ODJ sadri linearnu kombinaciju
izvoda zavisno promenljive y
n1
ili
y
(n)
an1 y
(n1)
... a1 y a0 y r(t)
Dobija
se:
(k 1)
, k 1,2,..., n
y1 y2
yn1 yn
y2 y3
yn f (t, y1 ,..., yn )
...
y f (t, y)
y1
y1
y ... , y ...
,f
y
n
f1
...
f
n
y2
y3
...
f (t, y1,..., y
Primer transformacije
Posmatra se ODJ: d (1 y 2 ) dy y 0
2
dt
Smene:
y y
1
y d
y
2
dt
d
d
t
d
y
dy
1
dt
dt
d 2 d 2y
y
dt
dt 2
dt
d
y
y
1
dt
d 2 (1 y 2 )
y
y
dt
y
2
Uopten sistem DJ 1.
reda
sistema
diferencijalnih
2x 2
x) 0
(x
y1 x1
y2
x1
x2
3
4
x2
y x y
1
y x
f (t) c
y
2
y x y 4
3
ky k(y
y
2
1 1
se posmatra
Jednostavniji
problem
Problem:
dy f (t),
dt
ima analitiko
reenje:
y( ) y
0
t 0
t
y(t) y0 f (t)dt
t
Konkretna vrednost
a
y(a) f (t)dt,
t0 0
predstavlja povrinu
sa slike
f(t)
+
t0
Ideja numerikog
raunanja
Odredimo vrednosti funkcije f(t) u diskretnim
trenucima ih, i=0,1,2,
Vrednost integrala se moe aproksimirati sumom
pravougaonika sa slike
N 1
y(a)
f(t)
f (ih) h
i0
...
t0=0
t
a
Numeriko reavanje DJ
1. reda
Proble
m:
dy f ( y, t), y( )
dt
t 0y
Reenj
e:
polazi se od poznatih (t0, y0) i sukcesivno raunaju
parovi (ti, yi) za i=1,2,
Iterativan raun se sprovodi korak-po-korak, gde
se (ti+1, yi+1) rauna na osnovu prethodno
sraunatog (ti, yi).
Ovde e se posmatrati:
Ojlerov postupak, i
Metode Runge-Kuta
Leonhard Euler
Born
15 April 1707
Basel, Switzerland
Died
Residence
Nationality
Swiss
Fields
Institutions
Alma mater
University of Basel
Nicolas Fuss
Johann Hennert
Joseph Louis Lagrange
Stepan Rumovsky
Ojlerov postupak
Vrednost yi+1 se moe odrediti na osnovu razvoja u
Tejlorov red u okolini take (ti, yi)
y yi y yi dyi h d 2 yi h2 ...
h ti1 ti
i1
dt
dt
2!
Nakon diferenciranja se
dobija
d
y
d i d 2yi
y
dt
dt
dt 2
i1
d 2y i
ili
i1
dy
d
y
dt 2
dt
dt
h
dt
2 i
dt
2!
d i1 d i
y
y h
h
dt
dt
dt 2
d
y
d y h2
yi
Ojlerov
postupak (2)
y d
y
i1
i1
dy
d
y
dt
dt
dt 2
U svakoj iteraciji :
1. Uvodi se predviena (predicted)
vrednost
dy i
p
yi 1 yi dt h
p
i1
d
y
dt
c
p
y
i 1
2. I ona se koriguje
i1
dt
i
metod 1. reda
(ako se ne radi
drugi korak)
Korekcija
,a
ujedno i
procena
greke
metod 2. reda
OjlerKorak(f,t0,y0,h)
% izvod u tacki (t0,y0)
% izvod u tacki (t1,y1p)
% procena greske
% korekcija
yp
y
d
y
0
dy1
dt
yc
y
dt
p
1
0h
dy0 h
dt 2
koraka = tk / h;
for i = 1:koraka
[t1,y1,e] = OjlerKorak(f,t0,y0,h);
y0 = y1;
t0 = t1;
Y = [Y; y1];
% zapamti
y1
end
Primer: DJ 1.
reda
Problem:
dy
t
e
dt
function dy = difJedn(t,y)
% opis DJ
alpha=1.0; lambda=1.0;
dy = lambda*exp(-alpha*t)*y;
y y(0) y0
function y = analitickoResenje(t,y0) %
analitiko reenje
alpha=1.0; lambda=1.0;
y = y0*exp(lambda/alpha*(1-exp(-alpha*t)));
Analitiko
reenje:
y(t) y0 e
1e
tkraj
= 5;
t = (0:tkraj)';
y0 = 1;
ya = analitickoResenje(t,y0);
y1 = Ojler2( @difJedn, tkraj, y0, 1 );
% h=1
[t
y
a
y
1
y
1y
a
y
0
5
y
0
5y
a]
pl
ot
(t,
y
a,
t,
y
1,
'.'
,
t,
y
0
5,
'.'
)
Primer: rezultati
t
ya
ye1
ye1-ya
----------------------------------------------------------------0.0
1.0000
1.0000
0
1.0
1.8816
1.8679
-0.0137
2.0
2.3742
2.3843
0.0101
3.0
2.5863
2.6131
0.0268
4.0
2.6689
2.7033
0.0343
5.0
2.7000
2.7373
0.0373
ye05
1.0000
1.8786
2.3786
2.5952
2.6799
2.7118
Legenda:
ya
analitiko reenje
ye1 Euler 2. reda sa fiksnim korakom h=1
ye05 Euler 2. reda sa fiksnim korakom h=0.5
ye05-ya
0
-0.0030
0.0044
0.0090
0.0110
0.0117
2.8
2.6
2.4
2.2
2
1.8
1.6
1.4
1.2
10
0.5
1.5
2.5
t
3.5
4.5
Promenljivi korak
integracije
Raunanje korekcije zavisi od
koraka h
Ideja: na osnovu veliine prilagoditi
korak h
za veliko smanjiti korak, a
za malo poveati korak
Parametri prorauna:
Dozvoljena relativna greka relGr
Dozvoljena apsolutna greka apsGr
Minimalan korak hmin
dy
i1
dt
dy
dt 2
end
t
ya
y3i
y3i-ya
----------------------------------------------------------0.0
1.0000
1.0000
0
1.0
1.8816
1.8773
-0.0043
2.0
2.3742
2.3732
-0.0010
3.0
2.5863
2.5862
-0.0001
4.0
2.6689
2.6755
0.0065
5.0
2.7000
2.7085
0.0085
Legenda:
ya analitiko reenje
y4i
1.0000
1.8811
2.3736
2.5858
2.6686
2.6998
y4i-ya
0
-0.0005
-0.0006
-0.0004
-0.0003
-0.0002
Primer
y3i
y4i
2.8
2.6
2.8
2.6
2.4
2.4
2.2
2.2
1.8
1.8
1.6
1.6
1.4
1.4
1.2
1.2
0.5
0
1.5
2.5
3.5
4.5
0.5
1
0
1.5
2.5
3.5
4.5
Carl Runge
Born
Residence
30 August 1856
Bremen, German Confederation
3 January 1927 (aged 70)
Gttingen, Weimar Republic
Germany
Citizenship
German
Died
Fields
Mathematics
Physics
Institutions
University of Hannover (18861904)
Georg-August University of Gttingen
(1904
1925)
Alma mater
Berlin University
Doctoral advisor Karl Weierstrass
Ernst Kummer
Doctoral
Max Born
students
Known for
RungeKutta method
Runge's phenomenon
LaplaceRungeLenz vector
Residence
November 3, 1867
Pitschen, Upper Silesia
December 25, 1944 (aged 77)
Frstenfeldbruck
Germany
Nationality
German
Fields
Mathematician
Institutions
University of Stuttgart
RWTH Aachen
University of Breslau
University of Munich
C. L. Ferdinand Lindemann
Died
Alma mater
Doctoral
advisor
Other
academic
advisors
Known for
Gustav A. Bauer
Walther Franz Anton von Dyck
Runge-Kutta method
Zhukovsky-Kutta aerofoil
KuttaJoukowski theorem
Kutta condition
RK 2. reda
Ojlerov metod ponovo
y p y i f ( y , t )h y i k
i
i1
i f
(y
k , i h)
t f
1
y k k k
y
c
i1
Moe se zapisati
kao
yi1 yi 2 k1 2
k2 k1 f ( yi , ti )h
k2 f ( yi k1, ti h)h
(y ,t
i i
) h
k 2 k
2
2
y 1 k 1k
i
2
2 1 2
y i1 y i c k
c
1 1
k1 f ( yi , ti )h
k2 f ( yi a2
k1, ti a2 h)h
RK 2. reda
Moe se pokazati da izmeu c1, c2, a2 vrednosti
postoje zavisnosti
(izvoenje postoji u odvojenom materijalu)
c1 c2 1
ca 1
2 2
c1 1 , c2 3 , a2 2
RK 3. reda
Uvode se konstante: c1, c2, c3, a2,
a3, b3
yi1 yi c1k1 c2 k2
c3k3 k1 f ( yi , ti )h
k
f
(y
k 3 f
(y
k ,
t a
3 1
Veze konstanti
c
c
1
2 1
b k
(a
c 3 1
2h)
b ) 2,
k t
3
a h)
h
3
c2a2 c a 3 1 2
3
2
c2a2 c
3
c3 ( 3
a 23 1 3
3
)2 16
a
Mogue reenje
c 28
1
c2 3 3 8
c
a2 323
a
b 0
3
RK 3. reda - realizacija
function [T, Y] = rkutta3( F, tp, tf, y0, h )
% Metod integracije RUNGE-KUTTA 3. reda sa nepromenljivim korakom
T = tp : h : tf; n
= length(T);
Y = zeros( n, length(y0) );
Y(1,:) = y0(:)';
t = tp;
for i = 1 : n-1 y
= Y(i,:)';
k1 = h * F( t, y );
k2 = h * F( t+2/3*h, y+2/3*k1 );
k3 = h * F( t+2/3*h, y+2/3*k2 );
Y(i+1,:) = (y + k1/4 + 3/8*k2 + 3/8*k3)'; t =
t + h;
end
Primer: rezultati RK 3
tkraj = 5;
t = (0:tkraj)'; y0
= 1;
ya = analitickoResenje(t,y0);
y1 = Ojler2(@difJedn,tkraj,y0,1);
[t3,y3] = rkutta3(@difJedn,0,tkraj,y0,1); % h=1 [t ya
y1 y1-ya y3 y3-ya]
t
ya
y1
y1-ya
---------------------------------------------------------0.0
1.0000
1.0000
0
1.0
1.8816
1.8679
-0.0137
2.0
2.3742
2.3843
0.0101
3.0
2.5863
2.6131
0.0268
4.0
2.6689
2.7033
0.0343
5.0
2.7000
2.7373
0.0373
Legenda:
ya analitiko reenje
y1 Euler 2. reda sa fiksnim korakom: h=1
y3 RK 3. reda sa fiksnim korakom: h=1
y3
1.0000
1.8732
2.3642
2.5761
2.6588
2.6899
y3-ya
0
-0.0083
-0.0100
-0.0102
-0.0101
-0.0101
RK 4-5. reda
function [T,
Y]= rkutta45( F, tp, tf, y0, hmin, absGr, relGr )
% Metod integracije RUNGE-KUTTA 4-5 reda, ima promenljivi korak
t = tp;
T =t;
y = y0(:);
Y =y';
h = (tf-tp)/8.0;
% pocetni korak
while t < tf
if t+h > tf, h = tf-t; end
% ogranici poslednji korak
k = h * F(t, y );
1
k = h * F(t+1/4*h, y+1/4*k1 );
2
k = h * F(t+3/8*h, y+1/32*(3*k1+9*k2) );
3
k = h * F(t+12/13*h, y+1/2197*(1932*k1-7200*k2+7296*k3) );
4
k = h * F(t+h, y+439/216*k1-8*k2+3680/513*k3-845/4104*k4 );
5
k = h * F(t+1/2*h, y-8/27*k1+2*k2-3544/2565*k3+1859/4104*k4-11/40*k5 );
6
y4 = y + 25/216*k1 + 1408/2565*k3 + 2197/4104*k4 - 1/5*k5;
y =y
16/135*k1 + 6656/12825*k3 + 28561/56430*k4 - 9/50*k5 + 2/55*k6;
5 +
e = y5 - y4;
korakDobar = true;
% fleg za kraj koraka integracije
if h > hmin
% Ako je greska velika smanji korak i resetuj fleg
if all(abs(e) > max(abs(y5)*relGr,absGr)), h=h/2.0; korakDobar=false; end
if h < hmin, h=hmin; end
% ogranici min korak
end
if korakDobar
y = y5; t = t+h;
Y = [Y; y'];
T = [T; t];
if all(abs(e) < max(abs(y5)*relGr,absGr)/4.0), h=h*2.0; end
en
d
end
% povecati korak?
3
2
-1
-2
-30
10
solver(difJedn,
Osobine solvera
Naziv
Metod
Stif
ode45
Runge-Kutta
(4,5)
ne
srednja
ode23
Runge-Kutta
(2,3)
ne
ode113 AdamsBashforthMoulton
ode15s NDF
ne
ode23s modifikovan
da
Rosenbrock
ode23t trapezoidno
pravilo
srednje mala
da
da
uglavnom uvek.
ode23t TR-BDF2
b
da
mala
za manje tano
raunanje stif
Kod stif (krutih) problema neke promenljive stanja se mogu menjati vrlo
sporo u odnosu na interval simulacije, a druge mnogo bre. Metode koje
nisu dizajnirane za stif probleme nisu efikasne jer primenjuju mali korak
integracije.
% Globalne promenljive
% Model parameteri
function yt=ode1p7(t,y)
% globalne promenljive
global lambda alpha ncall;
for ncase=1:4
reltol=1.0e-02^(ncase+1);
abstol=reltol;
ncall=0;
% tolerancije racunanje
% ODE
yt=lambda*exp(-alpha*t)*y;
% inkrementiraj brojac
% reset brojaca
ncall=ncall+1;
t0=0.0; tf=10.0; tout=[t0:1.0:tf]';
y0=1.0;
% Inicijana vrednost
options=odeset('RelTol',reltol,'AbsTol',abstol);
2.8
[t,y]=ode23('ode1p7',tout,y0,options);
2.6
% Prikaz rezultata
fprintf('reltol
= abstol = %6.2e\n\n',reltol);
fprintf('
t
ye
y
erry\n');
2.4
2.2
ye=y0*exp((lambda/alpha)*(1-exp(-alpha*t)));
erry=ye-y;
fprintf('%5.1f%9.4f%9.4f%15.10f\n',[t,ye,y,erry]');
fprintf('\n ncall = %5d\n',ncall);
end
y(t)
1.8
1.6
1.4
1.2
10
ode23
reltol = abstol = 1.00e-004
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
reltol
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
ye
y
erry
1.0000 1.0000 0.0000000000
1.8816 1.8816 -0.0000020034
2.3742 2.3743 -0.0000638807
2.5863 2.5864 -0.0000933201
2.6689 2.6691 -0.0001103656
2.7000 2.7002 -0.0001284242
2.7116 2.7117 -0.0001434300
2.7158 2.7160 -0.0001552112
2.7174 2.7175 -0.0001581733
2.7179 2.7181 -0.0001592608
2.7182 2.7183 -0.0001592537
73
= abstol = 1.00e-006
ye
erry
reltol
t
= abstol = 1.00e-008
ye
y
erry
0.0
1.0000
1.0000 0.0000000000
1.0
1.8816
1.8816-0.0000000072
2.0
2.3742
2.3742-0.0000000188
3.0
2.5863
2.5863-0.0000000229
4.0
2.6689
2.6689-0.0000000260
5.0
2.7000
2.7000-0.0000000285
6.0
2.7116
2.7116-0.0000000309
7.0
2.7158
2.7158-0.0000000331
8.0
2.7174
2.7174-0.0000000354
9.0
2.7179 2.7179 -0.0000000374
10.0
2.7182
2.7182-0.0000000394
ncall =
1180
reltol = abstol = 1.00e-010
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
ye
erry
1.0000
1.0000 0.0000000000
1.8816
1.8816-0.0000000001
2.3742
2.3742-0.0000000003
2.5863
2.5863-0.0000000003
2.6689
2.6689-0.0000000003
2.7000
2.7000-0.0000000004
2.7116
2.7116-0.0000000004
2.7158
2.7158-0.0000000004
2.7174
2.7174-0.0000000004
2.7179 2.7179 -0.0000000005
2.7182 2.7182 -0.0000000005
5392
ode45
reltol = abstol = 1.00e-004
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
reltol
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
ye
y
erry
1.0000 1.0000 0.0000000000
1.8816 1.8815 0.0000785756
2.3742 2.3742 0.0000230677
2.5863 2.5862 0.0000132883
2.6689 2.6689 0.0000149230
2.7000 2.7000 0.0000165095
2.7116 2.7115 0.0000172423
2.7158 2.7158 0.0000175329
2.7174 2.7174 0.0000176427
2.7179 2.7179 0.0000176835
2.7182 2.7181 0.0000177068
73
= abstol = 1.00e-006
ye
erry
1.0000 1.0000
1.8816 1.8816
2.3742 2.3742
2.5863 2.5863
2.6689 2.6689
2.7000 2.7000
2.7116 2.7116
2.7158 2.7158
2.7174 2.7174
2.7179 2.7179
2.7182 2.7182
85
0.0000000000
0.0000010053
0.0000010986
0.0000011560
0.0000010643
0.0000010083
0.0000009776
0.0000009652
0.0000009604
0.0000009586
0.0000009579
reltol
t
= abstol = 1.00e-008
ye
y
erry
0.0
1.0000
1.0000 0.0000000000
1.0
1.8816
1.8816 0.0000000237
2.0
2.3742
2.3742 0.0000000012
3.0
2.5863
2.5863 0.0000000128
4.0
2.6689
2.6689 0.0000000112
5.0
2.7000
2.7000 0.0000000428
6.0
2.7116
2.7116 0.0000000092
7.0
2.7158
2.7158 0.0000000014
8.0
2.7174
2.7174-0.0000000231
9.0
2.7179 2.7179 -0.0000000081
10.0
2.7182
2.7182 0.0000000077
ncall =
163
reltol = abstol = 1.00e-010
t
0.0
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
10.0
ncall =
ye
erry
1.0000
1.0000 0.0000000000
1.8816
1.8816 0.0000000001
2.3742
2.3742-0.0000000001
2.5863
2.5863-0.0000000001
2.6689
2.6689 0.0000000003
2.7000
2.7000 0.0000000004
2.7116
2.7116-0.0000000004
2.7158
2.7158 0.0000000003
2.7174
2.7174 0.0000000002
2.7179 2.7179 -0.0000000003
2.7182
2.7182 0.0000000001
385
1.0000
1.0502
1.1003
1.1502
1.1997
1.4375
1.6551
1.8472
2.0119
2.1503
2.2648
2.3581
2.4334
2.4937
...
9.8002
10.0000
>> size(t,1)
2.7181
2.7181
% broj vrsta u t
ans =
45
>
>
>
ncall=0;
tout = 0:10;
[t,y]=ode45('ode1p7',tout,y0);
> ncall
ncall
=
6
7
>
>
[t
y]
an
s
=
0
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000
3
2.5
1.5
1.0000
1.8816
2.3742
2.5862
2.6689
2.7000
2.7115
2.7158
2.7173
2.7179
2.7181
5
t
10
> size(y)
ans =
117
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
1
6
LotkaVolterra
jednaina
Deterministik
i
Kontinualan
Nelinearan
model 2. reda
Pretpostavke:
Plen uvek ima dovoljno hrane
Zalihe hrane za grabljivice zavise od populacije plena
dx x
dt xy
dy y
dt xy
Simulacija
function zp = lotka7(t,z,alpha,beta,gama,delta) %
Lotka-Volterra model
x = z(1); y = z(2);
zp = [ x*(alpha - beta*y)
-y*(gama - delta*x) ];
al = 0.7; be = 0.01; ga = 0.8; de = 0.05;
tout = 0:0.05:30;
[t,x] = ode45(@lotka7,tout,[40; 80],[], al, be, ga, de);
plot(t,x)
400
plen
grabljivice
350
300
250
200
150
100
50
0 0
10
15
20
25
30
% parametar susretanja
for be = beta
[t,x] = ode45(@lotka7, tout, [80; 10], [], al, be, ga, de );
xx = [xx x(:,1)];
yy = [yy x(:,2)];
end
[X,Y]=meshgrid(t,beta);
g=waterfall(X,Y,xx');
xlabel('t'), ylabel('beta-susreti'), zlabel('x1(t,beta)')
set(g,'linewidth',2), title('Populacija plena')
pause
g=waterfall(X,Y,yy');
xlabel('t'), ylabel('beta-susreti'), zlabel('x1(t,beta)')
set(g,'linewidth',2), title('Populacija grabljivica')
Populacija plena
x1(t,beta)
600
500
400
300
200
100
0
0.02
0.015
0.01
0.005
15
10
25
20
30
beta-susreti
Populacija grabljivica
x1(t,beta)
600
500
400
300
200
100
0
0.02
0.015
0.01
0.005
beta-susreti
15
10
t
20
25
30
dx x 0
dt
Died
Nationality
Dutch
Fields
Physics
Notable
awards
d 2 x (1 2 ) dx x 0
Diferencijalna jednaina
x
2. reda:
dt 2
dt
y dx
Uvodimo smenu:
dt
d d 2 x (1 x 2 dx
)
Nakon
diferenciranja y
x
dobijamo:
dt d 2
dt
t
dx
dt y
dy
2
dt (1 x ) y x
tp = 0;
tk = 100;
x0 = [0.5 0];
3
2
1
mi = 0.2;
[t, x] = ode45( @vdpol, [tp tk], x0, [], mi);
subplot(3,1,1), plot( t, x(:,1) ), title('mi=0.2'),
axis([0 100 -3 3])
mi = 1;
[t, x] = ode45( @vdpol, [tp tk], x0, [], mi);
subplot(3,1,2), plot( t, x(:,1) ), title('mi=1'),
axis([0 100 -3 3])
mi = 10;
[t, x] = ode45( @vdpol, [tp tk], x0, [], mi);
subplot(3,1,3), plot( t, x(:,1) ), title('mi=10'),
axis([0 100 -3 3])
0
-1
-2
-30
10
20
30
40
50
60
70
80
90
100
60
70
80
90
100
60
70
80
90
100
mi=1
3
2
1
0
-1
-2
-30
10
20
30
40
50
mi=10
3
2
1
0
-1
-2
-30
10
20
30
40
50
Test
solvera
mx cx kx 0, x(0)
x
Proble
m:
, x(0)
v
0
x 0 1, v 0 0
s1 s2
Nije stif :
m 1, c 11, k 10
st
x(t) q e s t
1
e2
s 10, s 2 1
1
q x 0 s1x0 v0 1 10
1
9
s1 s2
q2 s1x0 v0 10
x(t) 1 e 10t
9
9
10 e t
9
Jeste stif :
m 1, c 1001, k 1000
st
s t
q 2e
x(t) q e
2
s 1000, s 2 1
1
q
x
0q
q s 1x 0 v 0
2
s s 2
1
x(t)
999
1000
999
1 e 1000t 1000 e
t
999
999
ode23
ode45
ode113
12149 19435
732
217
349
15
6279 13372
900
126
254
19
ode15s
158
194
29
120
150
23
ode23s
260
1298
85
225
1123
75
ode23t
420
469
70
365
401
61
ode23tb
321
808
237
279
591
56
global brojac
m=1; k=10; c=11;
opt = odeset('AbsTol',1e-6,'RelTol',1e-6);
brojac=0;
tic;
[t,x]=ode23(@oscil5,[0 10],[1;0],opt,m,c,k);
function xp = oscil5(t,x,m,c,k)
global brojac;
xp = [ x(2); (-c*x(2)-k*x(1))/m ];
brojac = brojac + 1;
traje=toc;