You are on page 1of 45

UNIVERZA V LJUBLJANI

Fakulteta za strojnistvo
Porocilo: Numericne metode
Podiplomski izpit
Martin

CESNIK
Mentor: izr. prof. dr. Joze PETRI

SI

C
Marec, 2009
2
Kazalo
1 Uvod 4
2 Nepravi integral 5
3 Zacetni problem pri navadnih diferencialnih enacbah, Hermitova kubicna interpo-
lacija 6
4 Runge - Kutta - Fehlberg metoda 11
5 Enacbe visjega reda in sistemi diferencialnih enacb 16
6 Chebyshevi polinomi in ekonomicnost potencnih vrst 20
7 Hitra Fourierjeva transformacija 23
8 Aproksimacija lastnih vrednosti, QR algoritem 28
9 Sistemi nelinearnih enacb, metoda zveznega nadaljevanja 33
10 Resevanje hiperbolicnih parcialnih diferencialnih enacb, metoda koncnih razlik 36
11 Zakljucek 44
Literatura 45
3
1 Uvod
V porocilu podiplomskega izpita Numericne metode so zbrane resitve nalog iz podrocja numericnega
resevanja problemov. Za resevanje je izbranih 9 nalog iz knjige Numerical Analysis [1], ki obsegajo
razlicna poglavja numericnih metod, in sicer:
Nepravi integral (stran 246, naloga 5).
Zacetni problem pri navadnih diferencialnih enacbah, Hermitova kubicna interpolacija (stran 272,
naloga 6d).
Runge - Kutta - Fehlberg metoda (stran 288, naloga 3d).
Enacbe visjega reda in sistemi diferencialnih enacb (stran 323, naloga 6).
Chebyshevi polinomi in ekonomicnost potencnih vrst (stran 516, naloga 1c).
Hitra Fourierjeva transformacija (stran 547, naloga 5c).
Aproksimacija lastnih vrednosti, QR algoritem (stran 595, naloga 2d).
Sistemi nelinearnih enacb, metoda zveznega nadaljevanja (stran 642, naloga 2).
Resevanje hiperbolicnih parcialnih diferencialnih enacb, metoda koncnih razlik (stran 725, naloga
7).
Pri vsaki nalogi so prikazane teoreticne osnove, potrebne za resitev problema. Za detajlni pregled teorije
se lahko bralec posluzi referenc, navedenih v poglavju Literatura. Za resevanje nalog je bil uporabljen
programski paket Matlab R2006b, v katerem so zapisane vse programske kode.
4
2 Nepravi integral
Telo z maso m se premika z zemeljske povrsine navpicno navzgor.

Ce zanemarimo ves upor razen
gravitacijske sile je podana izhodna hitrost v z izrazom
v
2
= 2 g R
_

1
z
2
dz, kjer je z =
x
R
,
R=3960 milj je polmer Zemlje in g=0.00609 milj/s
2
je gravitacijski pospesek na zemeljski povrsini. Doloci
izhodno hitrost v.
Teoreticne osnove
Denirajmo nepravi integral kot integral s singularnostjo v spodnji integracijski meji a
_
b
a
1
(x a)
p
dx,
ki je resljiv za vse 0 < p < 1. Denirajmo funkcijo znotraj signala kot f(x) s singularnostjo v a kot
f(x) =
g(x)
(x a)
p
.
Funkcijo g(x) razvijemo v Talyorjev polinom cetrtega reda okrog a in ga oznacimo kot P
4
(x). Zacetni
nepravi integral pretvorimo v
_
b
a
f(x) dx =
_
b
a
g(x) P
4
(x)
(x a)
p
dx +
_
b
a
P
4
(x)
(x a)
p
dx.

Clen, ki vsebuje le Taylorjev polinomom, je analiticno resljiv s pomocjo standardnega integrala


_
b
a
dx
(x a)
p
=
(b a
1p
)
1 p
,
ki predstavlja poglavitni delez pri vrednosti integrala. Preostali clen izracunamo z uporabo sestavljenega
Simpsonovega pravila.
Resitev naloge
Integral z zgornjo integracijsko mejo v neskoncnosti pretvorimo v nepravi integral s singularnostjo v 0 z
vpeljavo nove spremenljivke t = 1/z. Upostevamo novo spremenljivko in dobimo
v
2
= 2 g R
_
0
1
t
2

1
t
2
_
dt
= 2 g R
_
1
0
dt.
Integral se tako zelo enostavno resi pred samo vpeljavo Taylorjevega polinoma. S podanimi vrednostmi
dobimo koncni rezultat
v = 6.94498380128 milj/s.
5
3 Zacetni problem pri navadnih diferencialnih enacbah, Hermi-
tova kubicna interpolacija
Podan je zacetni problem
y

=
1
t
2

y
t
y
2
, 1 t 2, y(1) = 1,
z eksaktno resitvijo y(t) = 1/t.
1. Z uporabo Taylorjeve metode cetrtega reda s korakom h = 0.05 doloci aproksimacije resitve in jih
primerjaj z dejanskimi vrednostmi.
2. Uporabi resitve 1. dela in z uporabo Hermitove kubicne interpolacije doloci navedene vrednosti y
in jih primerjaj z dejanskimi vrednostmi:
i. y(1.052), ii. y(1.555), iii. y(1.978).
1. DEL
Teoreticne osnove
Zacetni problem pri navadni diferencialni enacbi lahko splosno zapisemo kot:
dy
dt
= f(y, t), a t b, y(a) = , (3.1)
Metoda poda aproksimacijo v diskretni obliki, zato je potrebno denirati tudi velikost koraka h
t
i
= a + i h, i = 0, 1 . . . N,
kjer je N stevilo diskretnih tock.
Za vsako tocko t
i+1
lahko razvijemo y(t
i+1
) v Talyorjevo vrsto n-tega reda okrog prejsnje tocke t
i
y(t
i+1
) = y(t
i
) + hy

(t
i
) +
h
2
2!
y

(t
i
) + . . . +
h
n
n!
y
(n)
(t
i
) + Err(t),
kjer je Err(t) funkcija napake zaradi uporabe koncne vrste. Odvode y(t) lahko glede na enacbo (3.1)
prepisemo kot
y
(k)
(t) = f
(k1)
(t, y(t)).
Sestavimo rekurzivni algoritem, kjer izpostavimo h iz Taylorjeve vrste
w
0
=
w
i+1
= w
i
+ hT
(n)
(t
i
, w
i
), i = 0, 1 . . . N 1, (3.2)
kjer je w
0
zacetna vrednost in T
(n)
(t
i
, w
i
) polinom oblike
T
(n)
(t
i
, w
i
) = f(t
i
, w
i
) +
h
2
f

(t
i
, w
i
) + . . . +
h
n1
n!
f
(n1)
(t
i
, w
i
).
6
Resitev naloge
Nalogo resimo z izracunom polinoma T
(4)
(t
i
, w
i
). V ta namen je potrebno dolociti f(t, y(t)) in njene
odvode
f(t, y) = y

=
1
t
2

y
t
y
2
,
f

(t, y) =
2
t
3
+
y
t
2

y

t
2 y y

=
=
3
t
3
+
3 y
2
t
+ 2 y
3
,
f

(t, y) =
9
t
4

3 y
2
t
2
+
6 y y

t
+ 6 y
2
y =
=
9
t
4
+
6 y
t
3

3 y
2
t
2

12 y
2
t
6 y
4
,
f

(t, y) =
36
t
5

18 y
t
4
+
6 y

+ 6 y
2
t
3
+
12 y
2
6 y y

t
2

24 y y

t
24 y
3
y

=
=
30
t
5

30 y
t
4
+
6 y
2
24 y
t
3

18 y
3
36 y
2
t
2
+
24 y
4
+ 24 y
3
t
+ 24 y
5
.
Izracunano funkcijo T
(4)
(t
i
, w
i
) vnesemo v algoritem programa, dolocimo zacetno vrednost in dobimo
diskretni potek aproksimacije resitve (Tabela 1, Slika 1).
Tabela 1: Primerjava eksaktnih in aproksimiranih resitev.
t
i
Eksaktna resitev y(t
i
) Aproksimacija w
i
Pogresek |y(t
i
) w
i
|
1.00 -1.0000 -1.0000 0
1.05 -0.9524 -0.9529 0.0005
1.10 -0.9091 -0.9100 0.0009
1.15 -0.8696 -0.8709 0.0013
1.20 -0.8333 -0.8350 0.0016
1.25 -0.8000 -0.8020 0.0020
1.30 -0.7692 -0.7715 0.0023
1.35 -0.7407 -0.7433 0.0026
1.40 -0.7143 -0.7171 0.0028
1.45 -0.6897 -0.6927 0.0031
1.50 -0.6667 -0.6700 0.0033
1.55 -0.6452 -0.6487 0.0036
1.60 -0.6250 -0.6288 0.0038
1.65 -0.6061 -0.6101 0.0040
1.70 -0.5882 -0.5924 0.0042
1.75 -0.5714 -0.5758 0.0044
1.80 -0.5556 -0.5602 0.0046
1.85 -0.5405 -0.5453 0.0048
1.90 -0.5263 -0.5313 0.0050
1.95 -0.5128 -0.5180 0.0052
2.00 -0.5000 -0.5054 0.0054
7
1 1.2 1.4 1.6 1.8 2
-1
-0.0
-0.8
-0.7
-0.6
-0.

Slika 1: Aproksimacija resitve diferencialne enacbe.


Programska koda
Glavna koda:
clc, clear all
a=1; %spodnja meja
b=2; %zgornja meja
h=0.05; %korak
w(1)= -1; %zacetna vrednost
t=[a:h:b]; %casovna vrsta
for i=1:(b-a)/h
w(i+1)=w(i)+hf t4(w(i),t(i),h); %izracun i+1ega priblizka
end
w teor=-1./t; %teoreticna vrednost
error=abs(w-w teor);
Klicana funkcija:
function [t4]=f t4(y,t,h)
t4= 1/t^2 - y/t -y^2 +...
h/2(-3/t^3 + 3y^2/t + 2y^3)+...
h^2/6(9/t^4 + 6y/t^3 - 3y^2/t^2 - 12y^2/t - 6y^4)+...
h^3/24(-30/t^5 - 30y/t^4 + (6y^2-24y)/t^3
+ (-18y^3+36y^2)/t^2 + (24y^4+24y^3)/t + 24y^5);
2. DEL
Teoreticne osnove
Hermitova interpolacija temelji na ideji iskanja interpolacijske funkcije, ko poznamo diskretne vrednosti
neznane funkcije f(x
i
) in njene odvode f

(x
i
), kar je primerno za interpolacijo resitve zacetnega prob-
8
lema diferencialne enacbe. V tem pogledu je Hermitova interpolacija natancnejsa od interpolacije z
Lagrangeovim polinomom
L
n,k
=
(x x
0
) . . . (x x
k1
)(x x
k+1
) . . . (x x
n
)
(x
k
x
0
) . . . (x
k
x
k1
)(x
k
x
k+1
) . . . (x
k
x
n
)
,
kjer je n+1 stevilo diskretnih tock na intervalu [a, b] in k indeks casovne vrednosti, okrog katere razvijamo
Lagrangeov polinom in za katerega velja 0 k n.
V kolikor sestavimo interpolacijski polinom iz Lagrangeovih polinomov zadostimo zahtevi ujemanja
diskretnih vrednosti funkcije f(x
i
), vendar pa ne izpolnimo zahteve po ujemanju njenih odvodov f

(x
i
).
V ta namen se posluzujemo Hermitovega interpolacijskega polinoma, ki z bolj premisljeno uporabo La-
grangeovih polinomov zadosti obem vrstam vhodnih podatkov
H
2n+1
(x) =
n

k=0
f(x
k
) H
n,k
(x) +
n

k=0
f

(x
k
)

H
n,k
(x),
kjer je
H
n,k
(x) =
_
1 2(x x
k
)L

n,k
(x
k
)
_
L
2
n,k
(x),

H
n,k
(x) = (x x
k
) L
2
n,k
(x).
Hermitov interpolacijski polinom je reda 2n+1, saj mora pri posamezni casovni vrednosti zadostiti dvem
pogojem (vrednosti funkcije f(x
i
) in njenem odvodu f

(x
i
) ).
S hitrim izracunom [1] je mogoce preveriti ustreznost H
2n+1
vhodnim podatkom, tj. diskretne vrednosti
funkcije f(t) in njenih odvodov pri izbranih casovnih vrednostih. Opazimo, da je za izracun Hermitovega
polinoma potrebno analiticno dolocati odvode Lagrangeovih polinomov in Hermitove funkcije, kar se
izkaze za dolg proces ze pri nizkih stopnjah interpolacije. Zato se lahko posluzimo Newtonove metode
interpolacije z deljenimi razlikami [1]. Metoda na podlagi znanih diskretnih tock izracuna deljene razlike
prvega (odvodi) in visjih redov.

Ce poznane odvode vnesemo kot deljene razlike prvega reda na tocki x
i
dobimo tabelo (vrednosti x
i
se v tem primeru pojavijo dvakrat, saj dolocamo interpolacijsko funckijo le
na podrocju x [x
i
, x
i+1
])
D =
_
_
_
_
_
_
x0 y
0
= f(x
0
)
x0 y
1
= f(x
0
) y
0,1
= f

(x
0
)
x1 y
2
= f(x
1
) y
1,2
=
y
2
y
1
x
1
x
0
y
0,1,2
=
y
1,2
y0,1
x
1
x
0
x1 y
3
= f(x
1
) y
2,3
= f

(x
1
) y
1,2,3
=
y
2,3
y1,2
x
2
x
1
y
0,1,2,3
=
y
1,2,3
y
0,1,2
x1x
0
_
_
_
_
_
_
.
Na podlagi teh vrednosti dobimo interpolacijski polinom oblike
P(x) = f(x
0
) +
n

k=1
y
0,1,...,k
(x x
0
) (x x
k1
).
Resitev naloge
Glede na tabelo izracunamo deljene razlike ter vstavimo znane tocke x
i
, vrednosti y(x
i
) in aproksimacijo
odvoda y

(x
i
). Rezultati interpolacije so predstavljeni v tabeli 2.
9
Tabela 2: Primerjava eksaktnih in aproksimiranih resitev.
t
i
Eksaktna resitev y(t
i
) Interpolirana vrednost P(t
i
) Pogresek |y(t
i
) P(t
i
)|
1.052 -0.9506 -0.9511 0.0004
1.555 -0.6431 -0.6466 0.0036
1.978 -0.5056 -0.5109 0.0053
Programska koda
Navedena je koda za kubicno Hermitovo interpolacijo na intervalu t = [1.05, 1.1]. Za izracun interpolacije
na drugih intervalih spremenimo vhodne podatke.
clc, clear all
%vhodni podatki-----------------
x0=1.05;
x1=1.1;
y0=-0.9529;
y1=y0;
y2=-0.9100;
y3=y2;
%izracun deljenih razlik-------------
y01=1/x0^2-y0/x0-y0^2;
y12=(y2-y1)/(x1-x0);
y23=1/x1^2-y2/x1-y2^2;
y012=(y12-y01)/(x1-x0);
y123=(y23-y12)/(x1-x0);
y0123=(y123-y012)/(x1-x0);
%izracun resitve-----------------------
x iskan=1.052;
p teor=-1/x iskan
p interp=y0+y01.(x iskan-x0)+y012.(x iskan-x0).^2+y0123.(x iskan-x0).^2.(x iskan-x1)
10
4 Runge - Kutta - Fehlberg metoda
Z uporabo Runge - Kutta - Fehlberg metode doloci s toleranco TOL = 10
6
, maksimalnim korakom
hmax = 0.5 in minimalnim korakom hmin = 0.05 priblizke zacetnega problema
y

= (t + 2t
3
)y
3
t y, 0 t 2, y(0) =
1
3
,
z analiticno resitvijo y(t) = (3 + 2 t
2
+ 6 e
t
2
)
1/2
. Primerjaj rezultate z eksaktnimi vrednostmi.
Teoreticne osnove
Runge - Kutta - Fehlberg metoda (tudi RKF45) je pravzaprav varianta uporabe metode Runge - Kutta
cetrtega in petega reda. Za razumevanje delovanja RKF45 je potrebno najprej predstaviti delovanje
Runge - Kutta metode cetrtega reda.
Metoda Runge - Kutta cetrtega reda (tudi RK4) je metoda za resevanje zacetnih problemov navadnih
diferencialnih enacb, katere napaka je cetrtega reda O(h
4
). Teoreticnega ozadja ne bomo dokazovali,
prikazan bo samo idejni nacin delovanja. Recimo, da imamo diferencialno enacbo oblike y

(t) = f(t, y),


znano zacetno vrednost w
0
, znan interval resevanja t = [a, b] ter deniran casovni korak h. RK4 doloci
naslednji priblizek w
i+1
na podlagi stirih tock na intervalu t = [t
i
, t
i+1
], ki jih izracunamo iz w
i
(t
i
) (slika
2).

Slika 2: Delovanje metode Runge - Kutta.


11
Metodo RK4 lahko zapisemo v obliki enacb:
w
0
= ,
k
1
= hf(t
i
, w
i
),
k
2
= hf(t
i
+
h
2
, w
i
+
1
2
k
1
),
k
3
= hf(t
i
+
h
2
, w
i
+
1
2
k
2
),
k
4
= hf(t
i+1
, w
i
+ k
4
),
w
i+1
= w
i
+
1
6
(k
1
+ 2k
2
+ 2k
3
+ k
4
).
Za vsak priblizek w
i+1
je pri RK4 potrebno stirikrat obravnavati funkcijski predpis f(t, y).
RKF45 zdruzi RK metodi cetrtega in petega reda in predpise nov algoritem, ki hkrati izracuna resitev
RK4 in RK5. Ker je RK5 za en red bolj natancna od RK4 lahko z rezultatom metode visjega reda
ocenimo napako priblizka metode nizjega reda. Za opisano idejo metode RKF45 so izpeljane enacbe
w
0
= ,
k
1
= hf(t
i
, w
i
),
k
2
= hf
_
t
i
+
h
4
, w
i
+
1
4
h
_
,
k
3
= hf
_
t
i
+
3 h
8
, w
i
+
3
32
k
1
+
9
32
k
2
_
,
k
4
= hf
_
t
i
+
12 h
13
, w
i
+
1932
2197
k
1

7200
2197
k
2
+
7296
2197
k
3
_
,
k
5
= hf
_
t
i
+ h, w
i
+
439
216
k
1
8 k
2
+
3680
513
k
3

845
4104
k
4
_
,
k
6
= hf
_
t
i
+ h, w
i

8
27
k
1
+ 2 k
2

3544
2565
k
3
+
1859
4104
k
4

11
50
k
5
_
.
Z izracunanimi koecienti k
1
, . . . , k
6
dolocimo resitvi diferencialne enacbe za t
i+1
w
i+1
= w
i
+
25
216
k
1
+
1408
2565
k
3
+
2197
4104
k
4

1
5
k
5
, (4.1)
w
i+1
= w
i
+
16
135
k
1
+
6656
12825
k
3
+
28561
56430
k
4

9
50
k
5
+
2
55
k
6
, (4.2)
kjer je w
i+1
resitev RK4 (en. 4.1) in w
i+1
resitev RK5 (en. 4.2). Ker je napaka RK5 reda O(h
5
), lahko
tako ocenimo napako RK4. Fehlbergova metoda doloci napako in jo primerja z zahtevano natancnostjo
= TOL. To preverimo z zahtevo, da je napaka metode
R =
1
h
|w
i+1
w
i+1
|
manjsa od zahtevane natancnosti , torej R < . V kolikor je napaka metode prevelika se doloci manjsi
casovni korak h in se enkrat izracuna aproksimacijo resitve.

Ce je bila napaka metode manjsa od pred-
pisane natancnosti, se casovni korak poveca. Korekcijo koraka h dolocimo s faktorjem q
q = 0.84
_

R
_
1/4
.
12
Prednost RKF45 je v tem, da izracuna aproksimaciji RK4 in RK5 na enakih casovnih intervalih in
z enakimi faktorji k
1
, . . . , k
6
. Tako je za izracun priblizka potrebnih dvakrat manj obravnav funkcije
f(t, y) kot bi jih potrebovali za RK4 in RK5 loceno. Odlika RKF45 je tudi nadzor nad velikostjo koraka,
s katerim dobimo zeljeno natancnost z najmanjsim stevilom korakov.
Resitev naloge
Nalogo resimo z neposredno uporabo enacb, predstavljenih v poglavju Teoreticne osnove. Resitve naloge
so prikazane v tabeli 3.
Tabela 3: Rezultati metode RKF45.
i t
i
Priblizek w(t
i
)

Casovni korak h
i
Eksaktna vrednost y(t
i
) Pogresek |w(t
i
) y(t
i
)|
1 0.398605138 0.310820109 0.398605138 0.310819945 0.000000163397244
2 0.683725949 0.272057207 0.285120810 0.272056954 0.000000252912421
3 0.970396983 0.222118944 0.286671034 0.222118556 0.000000388152519
4 1.263081852 0.167197904 0.292684868 0.167197339 0.000000564594813
5 1.567290542 0.113308496 0.304208690 0.113308155 0.000000340517265
6 1.733307135 0.087689897 0.166016593 0.087689701 0.000000195527493
7 1.909769804 0.064482283 0.176462669 0.064482355 0.000000072483810
8 2.000000000 0.054345435 0.090230195 0.054345506 0.000000071526763

Slika 3: Aproksimacija resitve z metodo RFK45.


13
u u. 1 1. !
u
1
!
S

-!
r1u
Slika 4: Napaka resitve.
Programska koda
clc, clear all
f=inline((t+2t^3)y^3-ty,t,y);
y exact=inline((3+2t^2+6exp(t^2))^(-1/2),t);
a=0;
b=2;
w0=1/3;
tol=double(10^-6);
hmax=0.5;
hmin=0.05;
h=hmax;
w(1)=w0;
t(1)=a;
stanje=1;
i=1;
while stanje
K1=hf( t(i),w(i));
K2=hf( t(i)+1/4h, w(i)+1/4K1 );
K3=hf( t(i)+3/8h, w(i)+3/32K1+9/32K2 );
K4=hf( t(i)+12/13h, w(i)+1932/2197K1-7200/2197K2+7296/2197K3 );
K5=hf( t(i)+h, w(i)+439/216K1-8K2+3680/513K3-845/4104K4 );
K6=hf( t(i)+1/2h, w(i)-8/27K1+2K2-3544/2565K3+1859/4104K4-11/40K5 );
R=1/habs(1/360K1-128/4275K3-2197/75240K4+1/50K5+2/55K6);
14
if R<=tol
t(i+1)=t(i)+h;
w(i+1)=w(i)+25/216K1+1408/2565K3+2197/4104K4-1/5K5;
i=i+1;
end
delta=0.84(tol/R)^(0.25);
if delta<=0.1
h=0.1h;
elseif delta>=4
h=4h;
else
h=deltah;
end
if h>hmax
h=hmax;
end
if t(i)>=b
stanje=0;
elseif t(i)+h>b
h=b-t(i);
end
end
for i=1:length(t)
w exact(i)=y exact(t(i));
end
format long
[ t w h w exact abs(w-w exact)]
15
5 Enacbe visjega reda in sistemi diferencialnih enacb
Predpostavi, da je nihajocje matematicno nihalo dolgo 2 ft in da je zemeljski pospesek g =32.17 ft/s
2
. S
korakom h =0.1 s primerjaj casovni potek kota, ki ga dobimo kot resitev sledecih zacetnih problemov
a.
d
2

dt
2
+
g
L
sin = 0, (0) =

6
,

(0) = 0,
b.
d
2

dt
2
+
g
L
= 0, (0) =

6
,

(0) = 0,
pri t = 0, 1 in 2 s.
Teoreticne osnove
Zacetne probleme enacb n-tega reda numericno resujemo s prevodom ene diferencialne enacbe n-tega reda
na sistem n diferencialnih enacb prvega reda. Kot veleva denicija zacetnega problema potrebujemo se
n zacetnih pogojev. Sistem diferencialnih enacb resimo z eno od znanih metod za resevanje posamicnih
diferencialnih enacb e.g. Runge - Kutta metoda. . . Prikazimo torej resevanje sistema diferencialnih enacb
z Runge - Kutta metodo.
Naj bo i-ta enacba sistema m diferencialnih enacb oblike
du
i
dt
= f
i
(t, u
1
, . . . , u
i
, . . . , u
m
),
in je denirana na intervalu a t b z zacetno vrednostjo u
i
(a) =
i
.
Posplosimo princip Runge - Kutta na m diferencialnih enacb. i naj bo indeks posamicne diferencialne
enacbe i = 1, . . . , m; j naj bo indeks casovnega koraka z dolzino h
t
j
= a + hj, j = 0, 1, . . . , N.
w
i,j
je torej priblizek resitve i-te diferencialne enacbe pri casu t
j
. Zacetno vrednost oznacimo kot
w
i,0
=
i
.
Za predstavitev rekurzivnega algoritma predpostavimo, da so priblizki w
1,j
, . . . , w
i,j
, . . . w
m,j
znani. Pri-
blizke w
1,j+1
, . . . , w
i,j+1
, . . . , w
m,j+1
izracunamo po postopku
k
1,i
= hf
i
(t
j
, w
1,j
, w
2,j
, . . . , w
m,j
), za vsak i = 1, 2, . . . , m;
k
2,i
= hf
i
(t
j
+
h
2
, w
1,j
+
1
2
k
1,1
, . . . , w
m,j
+
1
2
k
1,m
), za vsak i = 1, 2, . . . , m;
k
3,i
= hf
i
(t
j
+
h
2
, w
1,j
+
1
2
k
2,1
, . . . , w
m,j
+
1
2
k
2,m
), za vsak i = 1, 2, . . . , m;
k
4,i
= hf
i
(t
j
+ h, w
1,j
+ k
3,1
, . . . , w
m,j
+ k
3,m
), za vsak i = 1, 2, . . . , m;
w
i,j+1
= w
i,j
+
1
6
(k
1,i
+ 2 k
2,i
+ 2 k
3,i
+ k
4,i
), za vsak i = 1, 2, . . . , m.
Potrebno je poudariti, da morajo biti npr. vsi faktorji k
1,1
, . . . , k
1,m
izracunani preden racunamo
k
2,1
, . . . , k
2,m
.
16
Resitev naloge
Del a.
Prepisemo enacbo v obliko
d
2

dt
2
=
g
L
sin
in deniramo
u
1
= (t),
u
2
= u

1
.
Zapisemo lahko sistem dveh diferencialnih enacb prvega reda
u

1
= u
2
,
u

2
=
g
L
sin(u
1
(t)),
z zacetnima pogojema u
1
(0) = w
1,0
=

6
in u
2
(0) = w
2,0
= 0.
Resitev zacetne enacbe dobimo z uporabo postopka, prikazanega v poglavju Teoreticne osnove.

Casovni
potek kota (t) predstavlja zaporedje w
1,0
, w
1,1
, w
1,2
, . . . , w
1,N
pri casovnih vrednostih a, t
1
, t
2
, . . . , b.
Gracni potek resitve je prikazan na sliki 5.
Del b.
Prepisemo enacbo v obliko
d
2

dt
2
=
g
L

in deniramo
u
1
= (t),
u
2
= u

1
.
Zapisemo lahko sistem dveh diferencialnih enacb prvega reda
u

1
= u
2
,
u

2
=
g
L
(u
1
(t)),
z zacetnima pogojema u
1
(0) = w
1,0
=

6
in u
2
(0) = w
2,0
= 0.
Resitev zacetne enacbe dobimo z uporabo postopka, prikazanega v poglavju Teoreticne osnove.

Casovni
potek kota (t) predstavlja zaporedje w
1,0
, w
1,1
, w
1,2
, . . . , w
1,N
pri casovnih vrednostih a, t
1
, t
2
, . . . , b.
Gracni potek resitve je prikazan na sliki 5.
Na tem mestu omenimo, da je enacba v delu a. osnovna enacba matematicnega nihala, ki pa je analiticno
tezko resljiva. V dinamiki se k resevanju te enacbe pristopi s predpostavko sin = , kar priblizno drzi
za majhne kote. Zacetna enacba se poenostavi v enacbo dela b., katere analiticna resitev je (t) =
17
/6 sin
_
g
L
t
_
. Na sliki 5 se lepo vidi, kako narasca razlika med resitvijo poenostavljene in nepoenostavljene
diferencialne enacbe. Z manjsimi zacetnimi koti se manjsa tudi razlika med resitvama.
0 0.5 1 1.5 2
-0.6
-0.3
0
0.3
0.6
t [s]
q
(
t
)
reitev a.
reitev b.
p/6 (g/L t) sin
Slika 5: Resitev splosne enacbe matematicnega nihala.
Tabela 4: Resitev splosne enacbe matematicnega nihala pri podanih casih.
t [s] (t) - resitev enacbe a. (t) - resitev enacbe b.
0.0 0.523598775598299 0.523598775598299
1.0 -0.365903200696621 -0.338253322186887
2.0 -0.015056321905886 -0.086268002549941
Programska koda
clc, clear all
g=32.17;
L=2;
f1=inline(u2,u2);
f2=inline(-g/Lsin(u1),u1,g,L);
f3=inline(-g/Lu1,u1,g,L);
a=0;
b=2;
h=0.1;
N=(b-a)/h;
18
w1(1,1)=pi/6;
w1(2,1)=0;
%f2=f3; %preklop med delom a. in b.
for i=2:N+1
t(i)=a+(i-1)h;
k(1,1)=hf1(w1(2,i-1));
k(1,2)=hf2(w1(1,i-1),g,L);
k(2,1)=hf1(w1(2,i-1)+1/2k(1,2));
k(2,2)=hf2(w1(1,i-1)+1/2k(1,1),g,L);
k(3,1)=hf1(w1(2,i-1)+1/2k(2,2));
k(3,2)=hf2(w1(1,i-1)+1/2k(2,1),g,L);
k(4,1)=hf1(w1(2,i-1)+k(3,2));
k(4,2)=hf2(w1(1,i-1)+k(3,1),g,L);
w1(1,i)=w1(1,i-1)+1/6(k(1,1)+2k(2,1)+2k(3,1)+k(4,1));
w1(2,i)=w1(2,i-1)+1/6(k(1,2)+2k(2,2)+2k(3,2)+k(4,2));
end
[w1(1,1)
w1(1,11)
w1(1,21)]
19
6 Chebyshevi polinomi in ekonomicnost potencnih vrst
Uporabi nicle funkcije

T
3
za konstrukcijo interpolacijskega polinoma druge stopnje funkcije f(x) = ln(x+
2) na intervalu [1, 1].
Teoreticne osnove
Aproksimacija podane funckije s polinomi je postopek, s katerim pretvorimo zahtevno funkcijo, ki je lahko
za program prekompleksna, na enostavnejse funkcije - polinome oz. potencne vrste. Prevod zahtevne
funckije na enostaven polinom pa ima svojo ceno, ki se pozna v natancnosti aproksimacije.
Ideja Chebyshevih polinomov je v zmanjsevanju napake aproksimacije. Idejo lahko uporabimo v splosnem
na dva nacina:
optimalna izbira interpolacijskih tock za zmanjsanje napake pri interpolaciji z Lagrangeovimi poli-
nomi,
nizanje stopnje aproksimacijskega polinoma z minimalno izgubo natancnosti.
Denirajmo Chebyshev polinom n-te stopnje na intervalu x [1, 1] kot
T
n
(x) = cos[n arccos x], za vsak n 0.
Glede na denicijo sledi
T
0
(x) = 0;
T
1
(x) = x.
Med Chebyshevimi polinomi visjega reda velja rekurzivna formula
T
n+1
(x) = 2 xT
n
(x) T
n1
(x).
V kolikor delimo celoten Chebyshev polinom T
n
(x) s faktorjem
1
2
n1
dobimo monicni polinom

T
n
(x),
katerega vodilni koecient je enak 1. Tako za T
n
(x) kot tudi za

T
n
(x) dolocimo n nicel po enacbi
x
k
= cos(
2 k 1
2 n
), za vsak k = 1, 2, . . . , n, (6.1)
in n + 1 ekstremov

T
n
( x

k
) pri
x

k
= cos
_
k
n
_
, z

T
n
( x

k
) =
(1)
k
2
n1
, za vsak k = 0, 1, . . . , n. (6.2)
Napako aproksimacije z Lagrangeovim polinomom n-te stopnje zapisemo kot
f(x) P(x) =
f
(n+1)
((x))
(n + 1)!
(x x
0
) (x x
1
) (x x
n
).
20
Ker nimamo vpliva nad (x) je smiselno minimizirati
|(x x
0
) (x x
1
) (x x
n
)|
Na podlagi lastnosti Chebyshevega polinoma (6.2) dosezemo minimum prav z izbiro nicel Chebyshevega
polinoma za interpolacijske tocke [1].
Ker je Chebyshev polinom deniran na obmocju [1, 1] je za interpolacijo funckije na poljubnem in-
tervalu x [a, b] dolociti nicle Chebyshevega polinoma (torej tocke interpolacije) na [a, b] z linearno
transformacijo
x =
1
2
((b a) x + a + b) .
Z znanimi tockami interpolacije sestavimo Lagrangeove interpolacijske polinome oblike
L
n,k
=
(x x
0
) . . . (x x
k1
)(x x
k+1
) . . . (x x
n
)
(x
k
x
0
) . . . (x
k
x
k1
)(x
k
x
k+1
) . . . (x
k
x
n
)
.
Za izracun interpolacijskega polinoma potrebujemo se vrednosti aproksimirane funkcije v niclah x
k
, kjer
je k = 0, . . . , n 1. Interpolacijski polinom je tako deniran kot
P(x) =
n1

k=0
f(x
k
) L
k
(x). (6.3)
Resitev naloge
Z izrazom 6.1 izracunamo nicle Chebyshevega polinoma

T
3
(x)
x
1
= 0.866025403784439
x
2
= 0.000000000000000
x
3
= 0.866025403784439
Izracunamo eksaktne vrednosti f( x

i
) ter izpeljemo Lagrangeove polinome druge stopnje L
i
(x). Vse
skupaj upostevamo v izrazu (7.1) in dobimo interpolacijski polinom, prikazan na sliki 6.
-1 -0.5 0 0.5 1
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
x
f
(
x
)
P (x)
ln (t+2)
Slika 6: Aproksimacija funkcije f(x) s polinomov drugega reda v niclah

T
3
(x).
21
Programska koda
clc, clear all
f=inline(log(t+2),t);
n=3;
for k=1:3
x k(k)=cos((2k-1)/(2n)pi);
end
L0=inline(((x-x1)(x-x2))/((x0-x1)(x0-x2)),x,x0,x1,x2);
L1=inline(((x-x0)(x-x2))/((x1-x0)(x1-x2)),x,x0,x1,x2);
L2=inline(((x-x0)(x-x1))/((x2-x0)(x2-x1)),x,x0,x1,x2);
t=[-1:0.01:1];
for i=1:length(t)
p(i)=f(x k(1))L0(t(i),x k(1),x k(2),x k(3))+...
f(x k(2))L1(t(i),x k(1),x k(2),x k(3))+...
f(x k(3))L2(t(i),x k(1),x k(2),x k(3));
f exact(i)=f(t(i));
end
plot(t,p,t,f exact)
22
7 Hitra Fourierjeva transformacija
Uporabi hitro Fourierjevo transformacijo za izracun trigonometricnega interpolacijskega polinoma cetrte
stopnje na intervalu [, ] za funkcijo
f (x) = cos x 2 sin x.
Uporabi izracunano aproksimacijo za aproksimacijo integrala
_

(cos x 2 sin x) dx,


ter primerjaj aproksimirane vrednosti z dejanskimi.
1. DEL
Teoreticne osnove
Eden od moznih nacinov interpolacije funckije je interpolacija s trigonometricnim polinomom. Na podlagi
ocene napake aproksimacije z metodo najmanjsih kvadratov [1] zapisemo interpolacijski trigonometricni
polinom za 2m-1 interpolacijskih tock na intervalu {(x
j
, y
j
)}
2m1
j=0
, kjer je x
j
= + (j/m) za j =
0, 1, . . . , 2m 1, kot
S
m
(x) =
a
0
+ a
m
cos(mx)
2
+
m1

k=1
(a
k
cos(k x) + b
k
sin(k x)) . (7.1)
Postopek dolocanja koecientov a
k
in b
k
zahteva (2 m)
2
mnozenj, kar se izkaze za zelo dolgotrajen
postopek, imenovan diskretna Fourierjeva transformacija (DFT). Leta 1965 sta Cooley in Tuckey od-
krila hitrejsi algoritem dolocanja koecientov polinoma, imenovan hitra Fourierjeva transformacija (angl.
fast Fourier transform, FFT). FFT uporablja Eulerjevo formulo e
iz
= cos z + i sinz in doloci kompleksne
faktorje c
k
, iz katerih dolocimo a
k
in b
k
kot
a
k
+ i b
k
=
(1)
k
m
c
k
;
c
k
=
2m1

j=0
y
j
e
ikj/m
, za vsak k = 0, 1, . . . , 2m 1. (7.2)
S tem korakom se izracun ne skrajsa, vendar ga pretvorimo v eksponentno obliko. Algoritem FFT temelji
na Lemi Danielson-Lanczos, ki pravi, da lahko DFT stopnje N = 2m prevedemo v dve DFT stopenj N/2
z uporabo relacije med sodimi in lihimi koecienti c
k
(dokaz v [2])
c
k
= c
e
k
+ W
k
N
c
o
k
.
V slednjem izrazu je c
e
k
k-ti koecient diskretne Fourierjeve transformacije stopnje N/2, ki je izracunana
iz sodih tock vhodnih vrednosti y
j
, analogno je c
o
k
k-ti koecient DFT stopnje N/2 lihih tock vhodnih
vrednosti. W
k
N
je kompleksna konstanta v izrazu 7.2. Primer razstavitve DFT osmih tock na dve DFT
stirih tock je gracno ponazorjen na sliki 7.
23
x(0)
x(2)
x(4)
x(6)
x(1)
x(3)
x(5)
x(7)
N/2
DFT
N/2
DFT
W
N
0
W
N
1
W
N
2
W
N
3
W
N
4
W
N
5
W
N
6
W
N
7
c
0
c
1
c
2
c
3
c
4
c
5
c
6
c
7
Slika 7: Prikaz enkratne casovne decimacije v casu.
Bistvo leme Danielson-Lanczos je v tem, da se lahko uporablja rekurzivno; na ta nacin je mogoce razdeliti
eno DFT N-te stopnje na dve DFT stopnje N/2. Pri tem postopku je potrebnih mnozenj log
2
N, kar
pomeni za N tock N log
2
N mnozenj, kar je ocitno manj od navadnega postopka DFT.
Resitev naloge
Prvi del naloge v celoti resimo s konstrukcijo algoritma v Matlabu. Z znanimi koecienti c
k
(7.2) dobimo
interpolacijski polinom oblike (7.1)
S
4
(x) = 0.126426 + 0.260272 cos(x) 0.301114 cos(2 x) + 1.1213715 cos(3 x) + . . .
+0.045896 cos(4 x) 0.102219 sin(x) + 0.275406 sin(2 x) 2.052955 sin(3 x).
Primerjava aproksimacije funkcije in njenega teoreticnega poteka je prikazana na sliki 8.
24
-4 -3 -2 -1 0 1 2 3
-2
-1
0
1
2
x
f
(
x
)
,

S
(
x
)
4
f(x)
S (x)
4
Slika 8: Aproksimacija funkcije in njena teoreticna oblika.
Programska koda
clc, clear all
%vhodni podatki
f=inline(cos(pix)-2sin(pix),x); %aproksimirana funkcija
m=4; %stopnja aproksimacije - mora biti potenca2!!
n=2*m; %st. diskretnih tock
p=log2(m); % dolocitev p
W=inline(exp(i2pi/n),n); %kompleksna konstanta
a=-pi; %zacetek intervala
b=pi; %konec intervala
%dolocitev aproksimacijskih tock
x=linspace(a,b,n+1);
x=x(1:end-1);
y input(:,1)=f(x);
%fft izracun---------------------------------------
y(:,1)=bitrevorder(y input);
s dft=2;
25
for k=1:p+1 %stevilo sumacijskih nivojev
for j=1:n/s dft %stevilo pos. dft-jev
for l=1:s dft/2 %Polovica korakov znotraj pos. dft
y((j-1)s dft+l,k+1)=y((j-1)s dft+l,k)+...
W(n)^((l-1)n/s dft)...
y((j-1)s dft+l+s dft/2,k);
y((j-1)s dft+l+s dft/2,k+1)=y((j-1)s dft+l,k)+...
W(n)^((l-1)n/s dft+n/2)...
y((j-1)s dft+l+s dft/2,k);
end
end
s dft=s dft2;
end
%izracun Four. vrste---------------------------------
c=y(:,end);
for j=1:(n/2+1)
c k(j)=(-1)^(j-1)/mc(j); %deljenje kompleksnih koeficientiov z m
end
for j=1:m+1
A(j)=real(c k(j));
B(j)=imag(c k(j));
end
%primerjava aproximacije-------------------------------
x=linspace(x(1),x(end),1000);
y teor=f(x);
y approx=A(1)/2+A(m+1)/2cos(mx);
for j=1:m-1
y approx=y approx+A(j+1)cos(jx)+B(j+1)sin(jx);
end
plot(x,y teor,x,y approx)
26
2. DEL
Resitev naloge
Iskano vrednost integrala dolocimo povsem analiticno. Vsote med cleni polinoma in funkcije f(x) razde-
limo na vec integralov. Le-te resimo z osnovnimi integrali
_
sinxdx = cos x,
_
cos xdx = sinx,
_
sin(2 x) dx =
1
2
cos(2 x),
_
cos(2 x) dx =
1
2
sin(2 x),
. . .
_
sin( x) =
cos ( x)

,
_
cos ( x) =
sin( x)

.
Analiticno resena integrala le se vnesemo v poljubno matematicno orodje npr. Mathematica, in dobimo
vrednost integralov
_

f(x) dx = 0.273938
_

S
4
(x) dx = 0.794358.
27
8 Aproksimacija lastnih vrednosti, QR algoritem
Uporabi QR algoritem za izracun lastnih vrednosti matrike
_

_
5 1 0 0 0
1 4.5 0.2 0 0
0 0.2 1 0.4 0
0 0 0.4 3 1
0 0 0 1 3
_

_
z natancnostjo TOL = 10
5
.
Teoreticne osnove
QR algoritem se uporablja za dolocitev lastnih vrednosti simetricnih, tridiagonalnih matrik. Matrika je
tridiagonalna, ko se vsi nenicelni elementi nahajajo na diagonali ali pod-diagonali (diagonala nad in pod
glavno diagonalo). Poljubno simetricno matriko se pretvori v opisano tridiagonalno obliko s Household-
erjevo metodo.
V nadaljevanju bo opisan postopek metode QR z glavnimi matematicnimi dokazi, ki so bistveni za
delovanje QR metode; manj bistveni dokazi, lastnosti so navedeni v [1]. Denirajmo torej matriko A
velikosti [n n] kot
A =
_

_
a
1
b
2
0 0
b
2
a
2
b
3
.
.
.
.
.
.
0 b
3
a
3
.
.
.
0
.
.
.
.
.
.
.
.
.
.
.
.
b
n
0 0 b
n
a
n
_

_
Metoda QR iterativno manjsa koeciente b
n
z izracunom novih matrik A = A
(1)
, A
(2)
, . . .. Ko je b
n
od 0
oddaljen za manj kot TOL je a
n
ena izmed iskanih lastnih vrednosti
n
. Z najdeno lastno vrednostjo se
n-ta vrstica in n-ti stolpec matrike A odstranita. Matrika A se zmanjsa na [n1n1] vse do velikosti
[2 2], kjer dolocimo lastne vrednosti analiticno.
Iz matrike A = A
(1)
dolocimo matriki Q in R, za kateri velja A
(1)
= Q
(1)
R
(1)
. Pri tem je Q
(1)
ortogonalna
in R
(1)
zgornje trikotna. Naslednjo matriko A
(2)
izracunamo kot A
(2)
= R
(1)
Q
(1)
. Ker ja Q ortogonalna
(Q
t
= Q
1
) zapisemo lastnost similarnosti kot
A
(i+1)
= Q
(i)
T
A
(i)
Q
(i)
,
imata matriki A
(2)
in A
(1)
iste lastne vrednosti.
Kako torej izracunati matriki R
(i)
in Q
(i)
? Matrika R
(1)
je podana kot produkt matrike A
(1)
in n 1
rotacijskih matrik
R
(1)
= P
n
P
n1
. . . P
2
A
(1)
.
Rotacijska matrika je enotska matrika, ki ima pri izbranem i in j = i + 1
p
ii
= p
jj
= cos() in p
ij
= p
ji
= sin.
28
Kot izbremo tako, da se pri A
(1)
k
= P
k
. . . P
2
A
(1)
k1
koecient b
k
pretvori v 0. Na ta nacin pretvorimo
A
(1)
v zgornjo trikotno matriko R
(1)
.
Matriko Q
(1)
izracunamo kot
Q
(1)
= P
T
2
P
T
3
. . . P
T
n
,
saj je le na ta nacin izpolnjena enakost
Q
(1)
R
(1)
= (P
T
2
P
T
3
. . . P
T
n
) (P
n
P
3
P
2
) A
(1)
= A
(1)
,
saj je rotacijska matrika pravokotna. Z znanimi R
(i)
in Q
(i)
je mozno izracunati A
(2)
= R
(1)
Q
(1)
.

Ce je
element b
n
matrike A
(2)
dovolj blizu 0, dobimo eno izmed lastnih vrednosti, ce je b
n
se vedno prevelik
ponovimo iteracijo in izracunamo A
(3)
.
Da pospesimo konvergenco elementa b
n
matrike A
(i)
proti 0 uvedemo faktor premika s (shift faktor) za
katerega velja
A
(i)
s I = Q
(i)
R
(i)
,
in ga dolocimo kot lastno vrednost matrike
E
(i)
=
_
a
(i)
n1
b
(i)
n
b
(i)
n
a
(i)
n
_
,
ki je najblizje a
(i)
n
. Z upostevanjem faktorja premika se vse lastne vrednosti matrike spremenijo za le-ta
faktor s
i
, kar upostevamo pri koncnem izracunu lastnih vrednosti. Lastno vrednost tako izracunamo kot

n
= a
(i+1)
n
+

s
i
.
Celoten potek je prikazan na diagramu (slika 9).
Resitev naloge
Iskane lastne vrednosti matrike izracunamo neposredno z algoritmom v Matlabu. Vektor lastnih vrednosti
je tako
=
_

_
2.070712804092893
4.027434958251001
3.727556424420684
5.783995566511647
0.890300246723778
_

_
29
A
(i)
A
(i)
b < n e
DA a =
n n
l
(i)
A =[n-1 x n-1]
i=1
n=n-1
NE
izraun s
j
(i) (i)
A =A - s I
j
1
1
P , P , ... ,P
2 3 n
(i) (i) (i)
A , A , ... , A
(i) (i)
R =A
(i) T T T
Q =P P ... P
1
1
2
2 n
n
n
(i+1) (i) (i)
A =R Q
(i+1)
b < n e
(i+1) (i)
A =A
NE
= a + s
n n j
l
(i)
A =[n-1 x n-1]
DA

n < 3
DA
NE
l,
1
l)+
2
s
j
(
END
Slika 9: Shematski prikaz QR algoritma s premikanjem.
30
Programska koda
Klicani funckiji:
eigen 2
%izracuna lastne vrednosti 2x2 matrike A
function [a]=eigen 2(A)
a(1)=(A(1,1)+A(2,2)+sqrt((A(1,1)+A(2,2))^2-4(A(2,2)A(1,1)-A(1,2)A(2,1))))/2;
a(2)=(A(1,1)+A(2,2)-sqrt((A(1,1)+A(2,2))^2-4(A(2,2)A(1,1)-A(1,2)A(2,1))))/2;
zg triangulacija
%izracun A(i+1) iz A(i), kot produkt RQ
function [A1]=zg triangulacija(A)
n=length(A(1,:));
R=A;
Q=eye(n);
for i=2:n
P(:,:,i)=eye(n);
P(i,i,i)=(A(i-1,i-1))/sqrt(A(i,i-1)^2+A(i-1,i-1)^2);
P(i-1,i-1,i)=P(i,i,i);
P(i-1,i,i)=(A(i,i-1))/sqrt(A(i,i-1)^2+A(i-1,i-1)^2);
P(i,i-1,i)=-P(i-1,i,i);
A=P(:,:,i)A;
end
for i=2:n
R=P(:,:,i)R;
end
for i=2:n
Q=QP(:,:,i);
end
A1=RQ;
31
Glavni algoritem clc, clear all
A=[5 -1 0 0 0
-1 4.5 0.2 0 0
0 0.2 1 -0.4 0
0 0 -0.4 3 1
0 0 0 1 3];
n=length(A(1,:));
m=1; j=1; k=1;
eps=10^-5;
while n>2
if abs(A(n-1,n))<eps %ce je znotraj tolerance eps
lambda(j)=A(n,n)+sum(s); %j-ta lastna vrednost
A(n,:)=[];
A(:,n)=[];
j=j+1;
n=n-1;
else %ce ni znotraj tolerance - nov shift
A s=A(n-1:n,n-1:n); %izracun matrike za shift
s opt=eigen 2(A s); %moznosti shiftov
s min=min(abs(s opt-A s(end,end)));
s min=find(abs(s opt-A s(end,end))==s min);
s(k)=s opt(s min(end)); %k-ti shift
A=A-eye(n)s(k);
A=zg triangulacija(A);
k=k+1;
end
end
[lambda koncna]=eigen 2(A)+sum(s);
lambda(j)=lambda koncna(1);
lambda(j+1)=lambda koncna(2);
32
9 Sistemi nelinearnih enacb, metoda zveznega nadaljevanja
Sistem nelineranih enacb
f
1
(x
1
, x
2
) = x
2
1
x
2
2
+ 2 x
2
= 0,
f
2
(x
1
, x
2
) = 2 x
1
+ x
2
2
6 = 0
ima dve resitvi, (0.625204094, 2.179355825)
T
in (2.109511920, -1.334532188)
T
. Z metodo zveznega nadal-
jevanja in metodo Runge-Kutta cetrtega reda pri N=1 doloci priblizek resitve pri zacetnih pogojih
a. x(0) = (0, 0)
T
b. x(0) = (1, 1)
T
c. x(0) = (3, 2)
T
Teoreticne osnove
Metoda zveznega nadaljevanja je postopek resevanja sistemov nelinearnih enacb, ki uporablja lastnost
homotopije med dvema vektorjema v prostoru R
n
. Teoreticne osnove bomo povzeli po [1] in [3].
Zapisimo sistem n nelinearnih enacb v matricni obliki
F(x) = 0.
Vektor, ki resi sistem enacb oznacimo z x*, zacetni pogoj pa z x
0
. Vpeljimo parameter = [0, 1], ki
predstavlja neodvisno spremenljivko pri x = x(). Pri vrednosti = 0 je vektor x zacetni priblizek
x(0) = x
0
, pri vrednosti = 1 pa je vektor x resitev sistema nelinearnih enacb x(1) = x*.
Denirajmo se funkcijo G(, x()) kot
G(, x()) = F(x) + ( 1) F(x(0)). (9.1)
Glede na enacbo 9.1 ugotovimo, da je
G(0, x(0)) = F(x(0)) F(x(0)) = 0
G(1, x(1)) = F(x) = 0
Vektor x() predstavlja parametricno podano krivuljo v R
n
ki se zacne v znani tocki x(0) in konca v
iskani resitvi x(1). Predpostavimo, da je x() funkcijski predpis, ki predstavlja enolicno resitev
G(, x) = 0. (9.2)
Iscemo torej neznani potek funkcije x(). V primeru, ko sta G in x() zvezno odvedljivi nam odvod
izraza (9.2) po da
G(, x())

+
G(, x())
x
x

() = 0
Izpostavimo x

() in dobimo
x

() =
_
G(, x())
x
_
1
G(, x())

.
33
Upostevaje izraz (9.1) dobimo
G
x
(, x()) =
F
x
(, x()) = J(x()),
kjer je J Jacobijeva matrika, in
G

(, x()) = F(x(0)).
Z izracunom sistema diferencialnih enacb
x

() = [J(x())]
1
F(x(0))
na intervalu = [0, 1] pri zacetni vrednosti x(0) dobimo resitev sistema nelinearnih enacb kot x(1). K
resitvi sistema diferencialnih enacb pristopimo z eno od znanih metod, kot so Eulerjeva metoda, metoda
Runge-Kutta (poglavje 5) . . .
Resitev naloge
Deniran je sistem nelinearnih enacb
F(x) =
_
x
2
1
x
2
2
+ 2 x
2
2 x
1
+ x
2
2
6
_
=
_
0
0
_
.
Izracunamo Jacobijevo matriko
J(x) =
_
2 x
1
2 x
2
+ 2
2 2 x
2
_
.
Jacobijevo matriko vnesemo v funkcijo jacobi. Priblizki resitve sistema nelinearnih enacb so prikazane
v tabeli 5. Opazimo, da je ujemanje priblizka z analiticno resitvijo odvisno od stevila korakov pri metodi
Runge-Kutta. Slednja ugotovitev je logicna, saj metoda zveznega nadaljevanja ne vpelje nobene napake,
napaka priblizka je odvisna le od metode resevanja sistema diferencialnih enacb ter od razlike (oddal-
jenosti) med zacetnim priblizkom in eksaktno resitvijo.
Tabela 5: Primerjava eksaktnih in aproksimiranih resitev.
x(0)
x(1)
x* - eksaktna resitev
N=1 N=4 N=100
(0, 0)
T
_
2.303987965
2.001099480
_ _
2.109852281
1.335659731
_ _
2.109511920
1.334532190
_ _
2.109511920
1.334532188
_
(1, 1)
T
_
0.597097023
2.257968422
_ _
0.624811741
2.180382373
_ _
0.625204094
2.179355827
_ _
0.625204094
2.179355825
_
(3, -2)
T
_
2.109445992
1.334563263
_ _
2.109511552
1.334532432
_ _
2.109511919
1.334532188
_ _
2.109511920
1.334532188
_
34
Programska koda
Klicana funckija:
jacobi
function [J]=jacobi(x)
f11=inline(2x1,x1,x2);
f12=inline(-2x2+2,x1,x2);
f21=inline(2,x1,x2);
f22=inline(2x2,x1,x2);
J= [f11(x(1),x(2)) f12(x(1),x(2))
f21(x(1),x(2)) f22(x(1),x(2))];
Glavni algoritem
clc, clear all
%sistem nelinearnih enacb
f1=inline(x1^2-x2^2+2x2,x1,x2);
f2=inline(2x1+x2^2-6,x1,x2);
%zacetne vrednosti
x=[0 0];
F0=[f1(x(1),x(2))
f2(x(1),x(2))]
%podatki za RK4
a=0; b=1;
N=1;
h=(b-a)/N;
%resevanje RK4
for i=1:N
K1=h(-jacobi(x))^(-1)F0;
K2=h(-jacobi(x+K1/2))^(-1)F0;
K3=h(-jacobi(x+K2/2))^(-1)F0;
K4=h(-jacobi(x+K3))^(-1)F0;
x=x+1/6(K1+2K2+2K3+K4); % vektor resitve
end
35
10 Resevanje hiperbolicnih parcialnih diferencialnih enacb, metoda
koncnih razlik
Porazdelitev zracnega pritiska p(x, t) v ceveh orgel je podana z valovno enacbo

2
p
x
2
=
1
c
2

2
p
t
2
, 0 < x < l, 0 < t,
kjer je l dolzina cevi in c zikalna konstanta (v primeru valovanja zraka je to hitrost zvoka). Ko je cev
odprta popisemo robne pogoje kot
p(0, t) = p
0
,
p(l, t) = p
0
.
Ko cev zapremo pri x = l popisemo robne pogoje kot
p(0, t) = p
0
,
p
x
(l, t) = 0.
Predpostavimo, da c = 1 in l = 1. Zacetni pogoji so v obeh primerih enaki in sicer
p(x, 0) = p
0
cos(2 x),
p
t
(x, 0) = 0, 0 x 1.
1. Aproksimiraj porazdelitev tlaka v odprti cevi pri p
0
= 0.9 pri x =
1
2
pri casu t = 0.5 in t = 1.

Casovni in krajevni korak naj bo h = k = 0.1.


2. Spremeni algoritem 1. dela za primer polzaprte cevi z p
0
= 0.9 ter aproksimiraj vrednosti p(0.5, 0.5)
in p(0.5, 1).

Casovni in krajevni korak naj bo h = k = 0.1.
1. DEL
Teoreticne osnove
K resevanju problema parcialne diferencialne enacbe bomo pristopili z metodo koncnih razlik. Valovna
enacba

2
p
x
2
=
1
c
2

2
p
t
2
,
je diferencialna enacba drugega reda.
Za resevanje problema potrebujemo torej centralno shemo drugega delnega odvoda

2
p
t
2
(x
i
, t
j
) =
p(x
i
, t
j+1
) 2 p(x
i
, t
j
) + p(x
i
, t
j1
)
k
2

k
2
12

4
p
t
4
(x
i
,
j
),

2
p
x
2
(x
i
, t
j
) =
p(x
i+1
, t
j
) 2 p(x
i
, t
j
) + p(x
i1
, t
j
)
h
2

h
2
12

4
p
x
4
(
i
, t
j
),
kjer je k velikost casovnega koraka in h velikost koraka dolzine.
36

Ce zanemarimo clen, ki predstavlja napako ter uvedemo parameter = k/h dobimo diferencno enacbo
oblike
p
i, j+1
2 p
i, j
+ p
i, j1

2
p
i+1, j
+ 2
2
p
i, j

2
p
i1, j
= 0
Pri izracunu bomo sledili casovnemu poteku resitve valovne enacbe, zatorej izpostavimo iz osnovne difer-
encialne enacbe clen z najvecjim casovnim indeksom. Sledi
p
i, j+1
= 2 (1
2
) p
i,j
+
2
(p
i+1, j
+ p
i1, j
) p
i, j1
. (10.1)
Pred izracunom je potrebno se vpeljati v postopek se robne in zacetne pogoje. Robna pogoja sta v delu
I. denirana kot Dirichletova robna pogoja in sicer
p(0, t) = p
0
,
p(l, t) = p
0
.
Zacetni pogoj je podan s funkcijskim predpisom
p(x, 0) = p
0
cos(2 x).
Centralna shema drugega parcialnega odvoda je prikazana na sliki 10, prav tako sta gracno prikazani
robna pogoja in zacetni pogoj.
p
0
p
0
p cos(2 px)
0
t
x
t
0
x
0
l
T
x
i-1
x
i+1
x
i
t
j
t
j+1
t
j-1
h
k
Slika 10: Gracni prikaz izracuna koncnih razlik ter robnih in zacetnih pogojev.
Iz slike 10 je razvidno, da je za izracun vrednosti p(x
i
, t
j+1
) potrebno poznati vrednosti p pri dveh
predhodnih casovnih indeksih ter vrednosti p pri enem predhodnem in enem naslednjem dolzinskem
indeksu. Dirichletovi robni pogoji zadostno podajo vrednosti pri potrebnih krajevnih indeksih, medtem
37
ko je le en zacetni pogoj premalo. Potrebujemo se dodatni zacetni pogoj za p(x, t
1
), ki se tako za del I.
kot tudi za del II. glasi
p
t
(x, 0) = g(x) = 0, 0 x l.
Drugi zacetni pogoj nam v primeru casovno krajevnega poteka zracnega pritiska denira hitrost zracnega
pritiska pri zacetnem casu t
0
. Predpisani zacetni pogoj je po naravi Cauchyjev robni pogoj, ki poda
funkcijo na robu in njen odvod. K resitvi zacetnega problema lahko uporabimo desno shemo prvega
odvoda oblike
p
t
(x
i
, t
j
) =
p(x
i
, t
j+1
) x(x
i
, t
j
)
k

k
2

2
p
t
2
(x
i
,
i
), (10.2)
pri katerem zanemarimo clen napake aproksimacije. Ker poznamo p(x
i
, 0) in njen odvod
p
t
(x, 0) = 0
lahko razvijemo funckijo p v Taylorjevo vrsto drugega reda okrog 0 in preko te izracunamo p(x
i
, t
1
). Za
izracun drugega odvoda preprosto uporabimo centralno shemo za drugi odvod [1]. Dobimo enacbo za i-ti
element pri drugem casovnem indeksu (na sliki 10 oznacen z krizcem v krogu)
p
i, 1
= (1
2
)p(x
i
, 0) +

2
2
p(x
i+1
, 0) +

2
2
p(x
i1
, 0) + k g(x
i
).
Z znanimi p(, x
i
, 0), p(, x
i1
, t
1
), p(, x
i
, t
1
) in p(, x
i+1
, t
1
) lahko izracunamo po diferencni enacbi 10.2
vrednost p(, x
i
, t
2
). Tako v celoti izracunamo drugo vrstico in opisan postopek ponavljamo, dokler ne
dosezemo koncnega casa T.
Resitev naloge
Za odprto cev upostevamo pripadajoce Dirichletova robna pogoja in Robinova zacetna pogoja, kot je
opisano v podpoglavju Teoreticne osnove. Uporabimo korak = k = 0.1.
Za vrednost p
0
= 0.9, c = 1 in l = 1 dobimo iskani vrednosti
p(0.5, 0.5) = 0.9,
p(0.5, 1) = 2.7.
Izracunan potek zracnega pritiska po metodi koncnih razlik je prikazan na sliki 11, numericna resitev
izracunana s programom Mathematica 6 je prikazana na sliki 12.
38
0
0.2
0.4
0.6
0.8
1 0
0.5
1
-1
-0.5
0
0.5
1
1.5
2
2.5
3
p

(
x
,
t
)
x
t
(a)
0
0.2
0.4
0.6
0.8
1 0
0.5
1
-1
-0.5
0
0.5
1
1.5
2
2.5
3
p

(
x
,
t
)
x
t
(b)
Slika 11: Aproksimacija poteka zracnega pritiska v odprti cevi z metodo koncnih razlik pri mrezi
(a) h = k = 0.1 in (b) h = k = 0.01.
0.0
0.5
1.0
x
0.0
0.5
1.0
t
0
1
2
p (x,t)
Slika 12: Numericna resitev valovne enacbe pri odprti cevi s programom Mathematica 6.
Programska koda
clear all, clc
%vhodni podatki
p0=0.9;
c=1;
h=0.1; %dolzinski korak
k=0.1; %casovni korak
alpha=c;
lambda=kalpha/h;
39
T=1; %cel cas
L=1; %celotna dolzina
t=[0:k:T];
x=[0:h:L];
w=zeros(length(t),length(x));
%robni pogoji
w(:,1)=p0;
w(:,end)=p0;
%zacetni pogoji
f=inline(p0cos(2pix),p0,x);
w(1,:)=f(p0,x);
g=inline(0,x);
%izracun 2 vrste
for i=2:length(x)-1
w(2,i)=(1-lambda^2)f(p0,x(i))+lambda^2/2f(p0,x(i+1))+lambda^2/2f(p0,x(i-1))+kg(x(i));
end
%izracun vrst 3,4,5,...,T/k
for j=2:length(t)-1
for i=2:length(x)-1
w(j+1,i)=2(1-lambda^2)w(j,i)+lambda^2(w(j,i+1)+w(j,i-1))-w(j-1,i);
end
end
mesh(w)
2. DEL
Teoreticne osnove
Pri polodprti cevi imamo robne pogoje oblike
p(0, t) = p
0
,
p
x
(l, t) = 0.
Pri x = 0 lahko enostavno dolocimo velikost zracnega pritiska v casu, za dolocitev p(x = l, t) pa je
potreben krajsi razmislek. Cauchyjev robni pogoj poda odvod funkcije pritiska po dimenziji x, kar lahko
pretvorimo v desno shemo prvega odvoda (10.2), kjer zanemarimo clen napake
p
x
(l, t) =
p(l + k, t) p(l, t)
k
= 0.
40
Sledi torej
p(l + k, t) = p(l, t).
V takem primeru robnega pogoja ne poznamo poteka zracnega pritiska po robu, torej ne moremo uporabiti
Taylorjeve vrste kot pri zacetnih pogojih. V ta namen uvedemo dodatno tocko na podlagi omenjene desne
sheme (slika 13). S pomocjo nove, v realnem primeru neobstojece tocke izracunamo zracni pritisk pri
naslednjem casovnem indeksu.
p
0
p cos(2 px)
0
t
x
t
0
x
0
l
T
x
i-1
x
i+1
x
i
t
j
t
j+1
t
j-1
Slika 13: Gracni prikaz izracuna koncnih razlik pri Cauchyjevih robnih pogojih.
Za vrednost p
0
= 0.9, c = 1 in l = 1 dobimo iskani vrednosti
p(0.5, 0.5) = 0.9,
p(0.5, 1) = 0.9859.
Izracunan potek zracnega pritiska po metodi koncnih razlik je prikazan na sliki 14, numericna resitev
izracunana s programom Mathematica 6 je prikazana na sliki 15.
41
0
0.2
0.4
0.6
0.8
1
0
0.
1
-1
-0.
0
0.
1
1.
2


(a)
0
0.2
0.4
0.6
0.8
1
0
0.
1
-1
-0.
0
0.
1
1.
2

(b)
Slika 14: Aproksimacija poteka zracnega pritiska v polodprti cevi z metodo koncnih razlik pri mrezi(a)
h = k = 0.1 in (b) h = k = 0.01.


Slika 15: Numericna resitev valovne enacbe pri polodprti cevi s programom Mathematica 6.
Programska koda
clc, clear all
p0=0.9;
c=1;
h=0.1; %dolzinski korak
k=0.1; %casovni korak
alpha=c;
lambda=kalpha/h;
42
T=1; %cel cas
L=1; %celotna dolzina
t=[0:k:T];
x=[0:h:L+h];
w=zeros(length(t),length(x));
%robni pogoji
w(:,1)=p0;
%zacetni pogoji
f=inline(p0cos(2pix),p0,x);
w(1,1:end)=f(p0,x);
w(1,end)=w(1,end-1);
g=inline(0,x);
%izracun 2 vrste
for i=2:length(x)-1
w(2,i)=(1-lambda^2)w(1,i)+lambda^2/2w(1,i+1)+lambda^2/2w(1,i-1)+kg(x(i));
w(2,end)=w(2,end-1);
end
%izracun vrst 3,4,...,T/k
for j=2:length(t)-1
for i=2:length(x)-1
w(j+1,i)=2(1-lambda^2)w(j,i)+lambda^2(w(j,i+1)+w(j,i-1))-w(j-1,i);
w(j+1,end)=w(j+1,end-1);
end
end
mesh(w)
43
11 Zakljucek
V porocilu so predstavljene naloge iz podrocja numericnega resevanja matematicnih problemov. Pri vsaki
nalogi je na kratko povzeta teorija, ki zadostuje za razumevanje ideje in postopka resevanja izbrane naloge.
Dodani so tudi izdelani algoritmi, s katerimi so pridobljene predstavljene resitve. Naloge zajemajo razlicna
podrocja numericne analize in tako predstavljajo smiseln zacetek studija kompleksnejsih matematicnih
problemov na podiplomskem studiju strojnistva.
44
Literatura
[1] R.L. Burden and J.D. Faires. Numerical Analysis. Brooks/Cole, seventh edition, 2001.
[2] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling. Numerical Recipes: The Art of
Scientic Computing. Cambridge University press, 1989.
[3] J. Petrisic. Resevanje enacb. Univerza v Ljubljani, Fakulteta za strojnistvo, 2006.
45

You might also like