Rešitve kolokvijev iz leta 2003/2004.
Rešitve kolokvijev iz leta 2003/2004.
Rešitve kolokvijev iz leta 2003/2004.
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
UVOD V NUMERIČNE METODE<br />
Rešitve kolokvija 9.12.<strong>2003</strong><br />
1. Dana je tabela podatkov<br />
x −2 −1 0 1 2<br />
y −5 0 1 y 3 y 4<br />
a) Kakšna mora biti zveza med y 3 in y 4 , da bo tabelo mogoče interpolirati<br />
s kubičnim polinomom?<br />
b) Določite tak par števil y 3 in y 4 , da je tabelo mogoče interpolirati<br />
s kubičnim polinomom z vodilnim koeficientom 1.<br />
Rešitev: Najprej <strong>iz</strong>računamo tabelo deljenih diferenc<br />
−2 −5<br />
5<br />
−1 0 −2<br />
0 1<br />
1<br />
y 3 − 1<br />
y 3 − 2<br />
2<br />
1 y 3<br />
y 4 − 2y 3 + 1<br />
2<br />
y 4 − y 3<br />
2 y 4<br />
y 3 + 2<br />
6<br />
= 1<br />
y 4 − 3y 3 + 3<br />
6<br />
y 4 − 4y 3 + 1<br />
24<br />
= 0<br />
Interpolacijski polinom bo stopnje 3, če bo y 4 − 4y 3 + 1 = 0. Hkrati pa<br />
bo imel vodilni koeficient enak 1, če bo (y 3 + 2)/6 = 1, torej y 3 = 4 ter<br />
y 4 = 15.<br />
2. Določite koeficienta α in β v integracijski formuli<br />
∫ h<br />
0<br />
f(x) dx = α f(0) + β f(2h/3) + R(f)<br />
1
tako, da bo čim višjega reda. Nato s pomočjo Peanovega jedra K 2 za<br />
vsaj trikrat zvezno odvedljivo funkcijo f <strong>iz</strong>računajte ali ocenite R(f).<br />
Rešitev: Koeficienta α in β določimo z metodo nedoločenih keficientov.<br />
Za f vstavimo zaporedoma polinoma 1 in x ter dobimo sistem<br />
enačb<br />
katerega rešitev je<br />
α = h 4<br />
h = α + β<br />
h 2<br />
2 = 0 + β 2h 3 ,<br />
in β = 3h 4 .<br />
Integracijska formula se tako glasi<br />
∫ h<br />
Peanovo jedro K 2 se glasi<br />
K 2 (t) = 1 2 L((x − t)2 +) = 1 2<br />
0<br />
f(x) dx = h (f(0) + 3f(2h/3)) + R(f).<br />
4<br />
∫ h<br />
0<br />
(x − t) 2 + dx − h 8 ((0 − t)2 + + 3(2h/3 − t) 2 +).<br />
Z nekaj računanja ga poenostavimo v<br />
K 2 (t) = 1 6 (h − t)3 − h { 3(2h/3 − t) 2 , 0 ≤ t ≤ 2h/3<br />
8<br />
0, sicer<br />
Da je Peanovo jedro konstantnega predznaka (nenegativno) na [0, h]<br />
se lahko prepričamo tako, da pokažemo K 2 (0) = 0, K 2 (2h/3) > 0 in<br />
K(h) = 0, hkrati pa z odvodom ugotovimo, da K 2 narašča na [0, 2h/3]<br />
in pada na [2h/3, h].<br />
Napako zato lahko <strong>iz</strong>računamo z integralom 1<br />
R(f) = L(f) = f (3) (ξ)<br />
∫ h<br />
0<br />
K 2 (t) dt = 1<br />
216 h4 f (3) (ξ), ξ ∈ [0, h].<br />
3. Naj bo f(x) = sh 2 (x). Napišite algoritem za računanje vrednosti<br />
f −1 (0.1) s tangentno metodo. Izračunajte prva dva približka (x 1 in<br />
x 2 ) s to metodo, če je x 0 = 0.3. Prepričajte se, da je red konvergence<br />
1 Formalno bi morali pokazati, da je L natančen za polinome stopnje ≤ 2, pa to<br />
prepuščamo bralcu.<br />
2
vsaj 2.<br />
Opomba: sh(x) = (exp(x) − exp(−x))/2.<br />
Rešitev: Iskanje vrednosti f −1 (0.1) je ekvivalentno reševanju enačbe<br />
F (x) = f(x) − 0.1 = 0. Tangentna metoda zanjo se glasi<br />
x n+1 = x n − F (x n)<br />
F ′ (x n ) = x n − f(x n) − 0.1<br />
f ′ (x n )<br />
= x n − sh2 (x n ) − 0.1<br />
.<br />
sh(2x n )<br />
Prva dva približka sta tako x 1 = 0.311415 in x 2 = 0.311181.<br />
Iteracijska funkcija v tem primeru je<br />
g(x) = x − sh2 (x) − 0.1<br />
.<br />
sh(2x)<br />
Zato je red metode vsaj dva v primeru, ko je g ′ (ξ) = 0, pri čemer je ξ<br />
ničla funkcije F . Kratek račun pokaže, da je<br />
g ′ (ξ) = 1 − 2sh(ξ)ch(ξ)sh(2ξ) − 2(sh2 (ξ) − 0.1)ch(2ξ)<br />
sh 2 (2ξ)<br />
= 2 (sh2 (ξ) − 0.1)ch(2ξ)<br />
sh 2 (2ξ)<br />
= 0.<br />
4. Naj bo x ∈ R n stolpec z n komponentami. Definirajmo matriko<br />
M := xx T ∈ R n×n .<br />
Izračunajte ‖M‖ 1 , ‖M‖ 2 , ‖M‖ ∞ in ‖M‖ F .<br />
Rešitev: Matrika M je oblike<br />
⎡<br />
⎤<br />
x 1 x 1 x 1 x 2 x 1 x 3 · · · x 1 x n<br />
M = (m i,j ) n x 2 x 1 x 2 x 2 x 2 x 3 · · · x 2 x n<br />
i,j=1 := ⎢<br />
⎥<br />
⎣ . . . · · · . ⎦ .<br />
x n x 1 x n x 2 x n x 3 · · · x n x n<br />
Ker je M = M T , je ‖M‖ 1 = ‖M‖ ∞ . Izračunajmo najprej ‖M‖ ∞ . Po<br />
definiciji je<br />
‖M‖ ∞ = max<br />
1≤i≤n<br />
n∑<br />
j=1<br />
|m i,j | = max<br />
1≤i≤n<br />
= max<br />
1≤i≤n |x i|‖x‖ 1 = ‖x‖ ∞ ‖x‖ 1 .<br />
3<br />
n∑<br />
j=1<br />
|x i x j | = max<br />
1≤i≤n |x i|<br />
n∑<br />
|x j |<br />
j=1
Podobno dobimo<br />
‖M‖ F = √<br />
n∑<br />
|m i,j | = √<br />
i,j=1<br />
n∑<br />
|x i x j | = ‖x‖ 2 2.<br />
i,j=1<br />
Za spektralno normo pa najprej uporabimo oceno<br />
Toda<br />
‖M‖ 2 ≤ ‖M‖ F = ‖x‖ 2 2. (1)<br />
M T M x = (xx T xx T )x = x(x T x)(x T x) = ‖x‖ 4 2x.<br />
Torej je ‖x‖ 4 2 ena od lastnih vrednosti matrike M T M, zato je ‖M‖ 2 ≥<br />
‖x‖ 2 2. Skupaj z neenakostjo (1) tako dobimo ‖M‖ 2 = ‖x‖ 2 2.<br />
UVOD V NUMERIČNE METODE<br />
Rešitve kolokvija 28.1.2004<br />
1. Kvadratni matriki A = (a ij ) n i,j=1 pravimo zgornja Hessenbergova, če je<br />
a ij = 0 za j < i − 1. Primer take matrike je<br />
⎛<br />
⎞<br />
1 1 1 1<br />
A = ⎜ 1/2 3/2 3/2 3/2<br />
⎟<br />
⎝ 0 1/3 4/3 4/3 ⎠ .<br />
0 0 1/4 5/4<br />
Zapišite LU razcep zanjo. Nato zapišite učinkovit algoritem za razcep<br />
splošne zgornje Hessenbergove zatrike A, pri čemer upoštevate njeno<br />
strukturo. Preštejte število operacij pri razcepu (množenja in deljenja).<br />
Rešitev: Za LU razcep matrike A ne bomo <strong>iz</strong>gubljali besed in le zapisali<br />
rešitev. Namreč, A = LU, kjer je<br />
L =<br />
⎛<br />
⎜<br />
⎝<br />
1 0 0 0<br />
1/2 1 0 0<br />
0 1/3 1 0<br />
0 0 1/4 1<br />
⎞<br />
⎛<br />
⎟<br />
⎠ in U = ⎜<br />
⎝<br />
1 1 1 1<br />
0 1 1 1<br />
0 0 1 1<br />
0 0 0 1<br />
⎞<br />
⎟<br />
⎠ .<br />
Med računanjem tega opazimo, da LU razcep poenostavimo tako, da<br />
ne <strong>iz</strong>vajamo nepotrebnih deljenje števila 0 z diagonalnim elementom.<br />
Tako dobimo popravljeni LU algoritem<br />
4
for k=1:n-1<br />
%v splosnem bi bila tukaj zanka<br />
%for i = k+1:n<br />
% A(i,k) = A(i,k)/A(k,k);<br />
A(k+1,k) = A(k+1,k)/A(k,k);<br />
for j = k+1:n<br />
A(k+1,j) = A(k+1,j) - A(k+1,k)*A(k,j);<br />
end<br />
end<br />
Število operacij se zato zmanjša na<br />
( )<br />
∑n−1<br />
n∑<br />
1 + 1 = n − 1 + n(n − 1) −<br />
k=1<br />
j=k+1<br />
(n − 1)n<br />
2<br />
= n2<br />
2 + O(n).<br />
2. Tabelo meritev<br />
t 1 2 3 4<br />
y 1.4629 1.1584 1.1105 1.0669<br />
želite aproksimirati s funkcijo y(t) = a+b exp(−t). Določite parametra<br />
a in b po metodi najmanjših kvadratov.<br />
Rešitev: Uporabili bomo reševanje z normalnim sistemom, v praksi pa<br />
bi seveda <strong>iz</strong>vedli QR razcep. Vsaj približno želimo zadostiti enačbam<br />
a + b exp(−t i ) = y i , i = 1, 2, . . . 4.<br />
Torej z metodo najmanjših kvadratov rešujemo sistem enačb Ax = y,<br />
kjer je<br />
⎛<br />
⎞<br />
⎛ ⎞<br />
1 exp(−t 1 )<br />
( )<br />
y 1<br />
A = ⎜ 1 exp(−t 2 )<br />
⎟ a<br />
⎝ 1 exp(−t 3 ) ⎠ , x = in y = ⎜ y 2<br />
⎟<br />
b ⎝ y 3<br />
⎠ .<br />
1 exp(−t 4 )<br />
y 4<br />
Zapišemo ga v obliko A T Ax = A T y in dobimo rešitev a = 1.0387 in<br />
b = 1.1271.<br />
3. Naj bo A ∈ R n×n tridiagonalna matrika. Sistem linearnih enačb Ax =<br />
b rešujete iterativno z SOR metodo. Napišite učinkovit algoritem<br />
za računanje novega približka po tej metodi (ne <strong>iz</strong>vajajte nepotrebnih<br />
5
množenj z 0).<br />
Naj bo<br />
A =<br />
⎛<br />
⎜<br />
⎝<br />
5 1 0 0<br />
1 −3 1 0<br />
0 1 4 1<br />
0 0 3 4<br />
⎞<br />
⎟<br />
⎠ ,<br />
b = [7, −2, 18, 25] T , x (0) = [0.9, 1.9, 3.1, 4.2] T in ω = 1.2. Izračunajte<br />
približek x (1) z SOR metodo.<br />
Rešitev: Upoštevamo, da je matrika A tridiagonalna, torej je a i,j = 0<br />
za j < i − 1 in i + 1 < j. Metoda SOR se v splošnem zapiše<br />
(<br />
)<br />
x (k+1)<br />
i = (1 − ω)x (k)<br />
i + ω ∑i−1<br />
n∑<br />
b i − a i,j x (k+1)<br />
j − a i,j x (k)<br />
j ,<br />
a i,i<br />
j=1<br />
j=i+1<br />
za i = 1, 2, . . . , n. Če upoštevamo tridiagonalnost, se <strong>iz</strong>račun poenostavi<br />
v<br />
x (k+1)<br />
i = (1 − ω)x (k)<br />
i + ω (<br />
)<br />
b i − a i,i−1 x (k+1)<br />
i−1 − a i,i+1 x (k)<br />
i+1 ,<br />
a i,i<br />
za i = 1, 2, . . . , n, torej postane algoritem časovne zahtevnosti O(n).<br />
Nov približek v konkretnem primeru je<br />
x (1) = [1.0440, 2.0776, 2.8967, 4.0530] T .<br />
4. Višino padalca y(t), preden odpre padalo, lahko opišemo z diferencialno<br />
enačbo<br />
y ′′ (t) = −g + C y ′ (t) 2 , y(0) = y 0 , y ′ (0) = v 0 ,<br />
kjer je g = 9.81 težni pospešek, C konstanta, odvisna od mase, oblike,.<br />
. . padalca, y 0 in v 0 pa začetna višina in začetna hitrost. Izračunajte<br />
približek za hitrost padalca po eni sekundi tako, da zgornjo diferencialno<br />
enačbo rešite z metodo Runge–Kutta drugega reda oblike<br />
k 1 = h f(x n , y n )<br />
k 2 = h f(x n + h, y n + k 1 )<br />
y n+1 = y n + 1 2 (k 1 + k 2 ).<br />
Korak naj bo h = 0.5, C = 0.007944, začetna višina 2000 in začetna<br />
hitrost 0.<br />
6
Rešitev: Diferencialno enačbo bomo najprej prevedli na sistem dveh<br />
prvega reda 2 . Tako dobimo Y (t) ′ = F (t, Y (t)), kjer je<br />
( )<br />
(<br />
)<br />
Y (t)1<br />
Y (t)<br />
Y =<br />
in F (t, Y (t)) =<br />
2<br />
Y (t) 2 −g + C Y (t) 2 .<br />
2<br />
Pri tem Y (t) 1 predstavlja višino, Y (t) 2 pa hitrost padalca. Podatke<br />
vstavimo v opisano metodo in dobimo<br />
( )<br />
( )<br />
1998.7737<br />
1995.1423<br />
Y (0.5) =<br />
in Y (1) =<br />
.<br />
−4.8572<br />
−9.5297<br />
Torej je približek za hitrost po eni sekundi Y (1) 2 = −9.5297.<br />
2 Ker naloga sprašuje le po hitrosti, bi jo lahko z uvedbo nove spremenljivke z = y ′<br />
prevedli tudi na diferencialno enačbo prvega reda.<br />
7