Professional Documents
Culture Documents
Numericka Analiza Seminarski
Numericka Analiza Seminarski
1.1 Interpolacija
Ako su nam poznate vrijednosti funkcije f u £vorovima interpolacije xi (i=0,...,n), te ºelimo da
je vrijednost polinoma pn u ta£kama interpolacije jednak vrijednosti funkcije u ta£kama interpo-
lacije. Zato konstrui²imo polinom
n
(1)
X
pn = li (x)f (xi )
i=0
Rje²enje:
Po²to imamo 6 ta£aka podjele, Lagrangeov interpolacioni polinom ¢e biti petog reda tj. imamo
p5 . Izra£unajmo prvo funkcije li i = 0,1,2,3,4,5 koriste¢i (2)
5
(x−1)(x−2)(x−3)(x−4)(x−5) x x4 17x3 15x2 137x
l0 (x) = (0−1)(0−2)(0−3)(0−4)(0−5) = − 120 + 8 − 24 + 8 − 60 +1
(x−0)(x−2)(x−3)(x−4)(x−5) x5 7x4 71x3 77x2
l1 (x) = (1−0)(1−2)(1−3)(1−4)(1−5) = 24 − 12 + 24 − 12 + 5x
5
(x−0)(x−1)(x−3)(x−4)(x−5) 13x4 59x3 107x2
l2 (x) = (2−0)(2−1)(2−3)(2−4)(2−5) = − x12 + 12 − 12 + 12 − 5x
(x−0)(x−1)(x−2)(x−4)(x−5) x5 49x3 13x2 10x
l3 (x) = (3−0)(3−1)(3−2)(3−4)(3−5) = 12 − x4 + 12 − 2 + 3
5
(x−0)(x−1)(x−2)(x−3)(x−5) 11x4 41x3 61x2
l4 (x) = (4−0)(4−1)(4−2)(4−3)(4−5) = − x24 + 24 − 24 + 24 − 5x
4
1
Program za Lagrangeov polinom u softveru Mathematica:
Li[listax_]:=Module[{n}, n=Length[listax];
li=Table[(Product[x-listax[[j]],{j,1,i}]*Product[x-listax[[j]],{j,i+2,n}])/
(Product[listax[[i+1]]-listax[[j]],{j,1,i}]*Product[listax[[i+1]]-listax[[j]],{j,i+2,n}]),
{i,0,n-1}];Print["Niz polinoma li(x)=",Expand[li]]
LagrangeovPolinom[listay_, li_]:=Module[{n},n=Length[listay];
lag=Sum[li[[i]]*listay[[i]],{i,1,n}];
Return[TraditionalForm[Expand[lag]]];]
Podijelimo segment [a,b] ta£kama podjele na n £vorova, tako da dobijamo podsegmente [xi , xi+1 ]
i=0,...,n-1. Ozna£imo vrijednosti funkcije u £vorovima interpolacije sa fi , tj. fi = f (xi ). Duºinu
podsegmenta ozna£imo sa hi+1 = xi+1 − xi (ako imamo ekvidistantnu podjelu tada je h = n−1 b−a
),
te sa Mi (i=0,...,n-1) momente traºenog splinea koje ra£unamo na sljede¢i na£in
µi Mi−1 + 2Mi + νi Mi+1 = λi (3)
(i=1,...,n-1).
Pri £emu su
hi+1 hi
νi = , µi = = 1 − νi (4)
hi + hi+1 hi + hi+1
6 fi+1 − fi fi − fi−1
λi = − (5)
hi + hi+1 hi+1 hi
(i=1,...,n-2)
Pri £emu je M0 = Mn = 0, pa je µ0 = ν0 = λ0 = 0 i µn = νn = λn = 0.
Traºeni kubni spline na segmentu [xi ,xi+1 ] je
Ci (x) = αi + βi (x − xi ) + γi (x − xi )2 + δi (x − xi )3 (6)
gdje vrijedi da je
αi = fi
fi+1 −fi hi+1
βi = hi+1 − 6 2Mi + Mi+1
γi = 12 Mi
1
δi = 6hi+1 Mi+1 − Mi
2
Zadatak 2.
1
Izra£unati kubni prirodni spline koji interpolira funkciju f (x) = x2 +1 na segmentu [-5,5],
(koristiti 11 £vorova jednako rasporeenih).
Rje²enje:
10 = 1 i=0,...,10. Ako
Podijelimo segment [-5,5] na 11 jednakih £vorova. Dobijamo da je hi = 5+5
izra£unamo vrijednosti funkcije f(x) u tim ta£kama dobijamo sljede¢u tabelu:
i 0 1 2 3 4 5 6 7 8 9 10
xi -5 -4 -3 -2 -1 0 1 2 3 4 5
fi 0.0384615 0.0588235 0.1 0.2 0.5 1. 0.5 0.2 0.1 0.0588235 0.0384615
2M1 + 12 M2 = 0.0624435
1 1
2 M1 + 2M2 + 2 M3 = 0.176471
1 1
2 M2 + 2M3 + 2 M4 = 0.6
1 1
2 M 3 + 2M 4 + 2 M 5 = 0.6
1 1
2 M4 + 2M5 + 2 M6 = −3.
1 1
2 M5 + 2M6 + 2 M7 = 0.6
1 1
2 M 6 + 2M 7 + 2 M 8 = 0.6
1 1
2 M 7 + 2M 8 + 2 M 9 = 0.176471
1
2 M8 + 2M9 = 0.0624435
3
( 0.0164021, 0.0592785, 0.099425, 0.743021, −1.87151, 0.743021, 0.099425, 0.0592785, 0.0164021)
Dobijamo
C0 (x) = 0.00273368x3 + 0.0410052x2 + 0.222655x + 0.468313
C1 (x) = 0.00714607x3 + 0.0939538x2 + 0.434449x + 0.750706
C2 (x) = 0.00669108x3 + 0.089859x2 + 0.422164x + 0.738422
C3 (x) = 0.107266x3 + 0.693309x2 + 1.62906x + 1.54302
C4 (x) = −0.435755x3 − 0.935755x2 + 1.
C5 (x) = 0.435755x3 − 0.935755x2 + 1.
C6 (x) = −0.107266x3 + 0.693309x2 − 1.62906x + 1.54302
C7 (x) = −0.00669108x3 + 0.089859x2 − 0.422164x + 0.738422
C8 (x) = −0.00714607x3 + 0.0939539x2 − 0.434449x + 0.750706
C9 (x) = −0.00273368x3 + 0.0410052x2 − 0.222655x + 0.468313
Odnosno
0.00273368x3 + 0.0410052x2 + 0.222655x + 0.468313 − 5 ≤ x ≤ −4
0.00714607x3 + 0.0939538x2 + 0.434449x + 0.750706 − 4 ≤ x ≤ −3
0.00669108x3 + 0.089859x2 + 0.422164x + 0.738422 − 3 ≤ x ≤ −2
0.107266x3 + 0.693309x2 + 1.62906x + 1.54302 − 2 ≤ x ≤ −1
−0.435755x3 − 0.935755x2 + 1.66667 ∗ 10− 7x + 1.
−1≤x≤0
C(x) =
0.435755x3 − 0.935755x2 − 1.66667 ∗ 10− 7x + 1. 0≤x≤1
−0.107266x3 + 0.693309x2 − 1.62906x + 1.54302 1≤x≤2
−0.00669108x3 + 0.089859x2 − 0.422164x + 0.738422 2≤x≤3
−0.00714607x3 + 0.0939539x2 − 0.434449x + 0.750706 3≤x≤4
−0.00273368x3 + 0.0410052x2 − 0.222655x + 0.468313 4≤x≤5
4
Slika 3: Grak funkcije f(x) sa kubnim splineom
5
2 Rje²avanje nelinearnih jedna£ina i sistema
Ukoliko imamo zadanu ta£nost ε, moºemo unaprijed odrediti broj koraka potrebnih da dobi-
jemo tu ta£nost, odnosno da vrijedi n ≥ log(b−a)−log(2ε)
log2 .
Zadatak 3.
Rje²enje:
Izvr²imo lokalizaciju rje²enja date jedna£ine i uzmimo da je ε = 0.0005.
Potrebno nam je
log(0.4−0.3)−log(2·0.0005)
log2
≈ 6.64386 ≤ 7
6
Koriste¢i softver Mathematica dobijamo sljede¢u tabelu.
n xn+1 εn
0 0.35 0.05
1 0.325 0.025
2 0.3375 0.0125
3 0.33125 0.00625
4 0.334375 0.003125
5 0.332812 0.0015625
6 0.333594 0.00078125
7 0.333203 0.000390625
n xn+1 εn
0 0.65 0.05
1 0.675 0.025
2 0.6625 0.0125
3 0.66875 0.00625
4 0.665625 0.003125
5 0.667187 0.0015625
6 0.666406 0.00078125
7 0.666797 0.000390625
♠
Program za metodu polovljenja segmenata u softveru Mathematica:
Bisekcija[f_, x_, a_, b_, ep_]:=Module[{a0, b0, i, n},
n=Ceiling[(Log[10,b-a]-Log[10,2*ep])/Log[10,2]]; xn=Table[0,{i,1,n+1}];
If[(f/.x->a)*(f/.x->b)>0, Print["Nema rjesenja na zadanom intervalu."],
a0=a; b0=b; xn[[1]]=(a0+b0)/2;
Print["Iteracija_", 0, " iznosi ", N[xn[[1]]], " Greska je ", Abs[xn[[1]]-a0], "."];
For[i=2, i<=n+1, i++,
If[(f/.x->a0)*(f/.x->xn[[i-1]])<0, b0=xn[[i-1]], a0=xn[[i-1]]]; xn[[i]]=(a0+b0)/2;
Print["Iteracija_", i-1, " iznosi ", N[xn[[i]]],
" Greska je ", N[Abs[xn[[i]]-xn[[i-1]]]], "."]]]]
7
3 Numeri£ko diferenciranje i integracija
Rπ
Izra£unati pribliºnu vrijednost integrala sinxdx, koriste¢i kompozitno (uop²teno) Simp-
0
sonovo pravilo, dijele¢i [0,π ] na 10 jednakih dijelova.
Rje²enje:
Rπ
Ozna£imo sa I ∗ = sinxdx Podijelimo segment [0,π ] na 10 jednakih dijelova. Tada imamo da
0
je h = π
10 , te ra£unaju¢i vrijednosti yi = f (xi ) = sin(xi ) dobijamo sljede¢u tabelu:
i 0 1 2 3 4 5 6 7 8 9 10
xi 0 π
10
π
5
3π
10
2π
5
π
2
3π
5
7π
10
4π
5
9π
10 π
yi 0 0.309017 0.587785 0.809017 0.951057 1. 0.951057 0.809017 0.587785 0.309017 0
8
Koriste¢i formulu (10) te softver Mathematica dobijamo I ∗ = 2.00011
♠
Program za uop²tenu Simpsonovu formulu u softveru Mathematica:
SimpsonU[y_, h_] := Module[{n, m, rez},
n=Length[y]; m=(n-1)/2;
rez=h/3(y[[1]]+4Sum[y[[i]],{i,2,2m,2}]+2Sum[y[[k]],{k,3,n-2,2}]+y[[n]]);
Return[N[rez]];]
Napomena: Po²to u softveru Mathematica indeksiranje ne moºe po£eti nulom, dobijamo ovakav pro-
gram.
(1−x)y+1
Za rubni problem y 00 = (1+x)2 , y(0) = 1, y(1) = 0.5, izra£unati pribliºne vrijednosti yi
ta£nog rje²enja y za h = 0.1 i h = 0.05.
Rje²enje:
Zbog y(0) = 1 te y(1) = 0.5 imamo da je a = x0 = 0 te b = xn = 1 odnosno α = 1 i β = 0.5.
Sada uzmimo da je h = 0.1 odavde slijedi n = 0.1 1
= 10 onda koriste¢i softver Mathematica prvo
deni²emo funkciju f (x, y, y ) te obavljamo ostale operacije
0
f[x_,y_,yp_]:=((1-x)y+1)/(1+x)^2
X = Table[x0 + i*h, {i, 0, 10}]
9
{x0 , x1 , x2 , x3 , x4 , x5 , x6 , x7 , x8 , x9 , x10 } = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.}.
Sada stavljamo
Y = {y0, y1, y2, y3, y4, y5, y6, y7, y8, y9, y10};
M = Table[If[i==j,-2,If[Abs[i-j]==1,1,0]],{i,1,9},{j,1,9}];
Tada dobijemo
−2 1 0 0 0 0 0 0 0
1
−2 1 0 0 0 0 0 0
0
1 −2 1 0 0 0 0 0
M
0
0 1 −2 1 0 0 0 0
0
= 0 0 1 −2 1 0 0 0
0
0 0 0 1 −2 1 0 0
0
0 0 0 0 1 −2 1 0
0 0 0 0 0 0 1 −2 1
0 0 0 0 0 0 0 1 −2
F = Simplify[Table[f[X[[i]],Y[[i]],(Y[[i+1]]-Y[[i-1]])/(2h)],{i,2,10}]]
0.826446 + 0.743802 · y1
0.694444 + 0.555556 · y2
0.591716 + 0.414201 · y3
0.510204 + 0.306122 · y4
F= 0.444444 + 0.222222 · y5
0.390625 + 0.15625 · y6
0.346021 + 0.103806 · y7
0.308642 + 0.0617284 · y8
0.277008 + 0.0277008 · y9
Zbog kompatibilnosti ra£unanja proizvoda matrica
y = Table[{Y[[i]]}, {i, 2, 10}]
y = {{y1}, {y2}, {y3}, {y4}, {y5}, {y6}, {y7}, {y8}, {y9}} M i y
a={{1},{0},{0},{0},{0},{0},{0},{0},{0.5}}
Rj=Solve[M.y==h^2 F-a,{y1,y2,y3,y4,y5,y6,y7,y8,y9}]
Sada imamo da je rje²enje rubnog problema za h=0.1
y0 y1 y2 y3 y4 y5 1 0.90935 0.833729 0.769684 0.714744 0.667094
=
y6 y7 y8 y9 y10 0.625371 0.588531 0.555762 0.526423 0.5
10