19.11.2014 Views

Rešitve kolokvijev iz leta 2003/2004.

Rešitve kolokvijev iz leta 2003/2004.

Rešitve kolokvijev iz leta 2003/2004.

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!