3

Numerička analiza

Linearna interpolacija- opcija Interpolation Order 1
Primjer 1
Za numercko odredjivanje funkcije interpolacije moguce je koristiti Interpolation ili ListInterpolation. Funkciju dobivenu interpolacijskom naredbom moguce je integrirati. Primjena ovog pristupa je raznolika, jedan od primjera primjene su kinematski dijagrami.
Definiranje interpolacijske funkcije

Clear@f, h, ff, fffD f = Interpolation@880, 0<, 81, 1<, 83, − 1<, 84, 0<<, InterpolationOrder → 1D; h = ListInterpolation@80, 1, − 1, 0<, 880, 1, 3, 4<<, InterpolationOrder → 1D; ff@x_D = Integrate@f@xD, xD fff@x_D = Integrate@ff@xD, xD InterpolatingFunction@880, 4<<, <>D@xD

InterpolatingFunction@880, 4<<, <>D@xD

2

Mathematica3-Numericka_analiza.nb

Prikaz interpolacijske funkcije

Plot@f@xD, 8x, 0, 4<, PlotStyle → Thick, AxesLabel → 8x, y<D Plot@h@xD, 8x, 0, 4<, PlotStyle → Thick, AxesLabel → 8x, y<D
y 1.0

0.5

1 -0.5

2

3

4

x

-1.0

y 1.0

0.5

1 -0.5

2

3

4

x

-1.0 Probne vrijednost interpolacijske funkcije

Graficki prikaz interpolacijske funkcije i funkcija dobivenih integriranjem interpolacijske funkcije

80.5, 0.5, 0.125, 0.0130208<

8h@0.5D, f@0.5D, ff@0.5D, fff@0.5D<

Vrijednost funkcije f(0.5) prikazana je točkom, opcije koje se koriste su Epilog, Point, PointSize. Detalje o funkciji i vise opcija moze se pronaci u Wolfram dokumentaciji.

Mathematica3-Numericka_analiza.nb

3

grafa = Plot@f@xD, 8x, 0, 4<, PlotStyle → Thick, Epilog → 8PointSize@MediumD, Point@80.5, f@0.5D<D<, AxesLabel → 8x, y<D grafv = Plot@ff@xD, 8x, 0, 4<, PlotStyle → Thick, Epilog → 8PointSize@MediumD, Point@80.5, ff@0.5D<D<, AxesLabel → 8x, y<D grafs = Plot@fff@xD, 8x, 0, 4<, PlotStyle → Thick, Epilog → 8PointSize@MediumD, Point@80.5, fff@0.5D<D<, AxesLabel → 8x, y<D
y 1.0

0.5

1 -0.5

2

3

4

x

-1.0

y 1.0

0.8

0.6

0.4

0.2

1

2

3

4

x

y 2.0

1.5

1.0

0.5

1

2

3

4

x

4

Mathematica3-Numericka_analiza.nb

Odredjivanje jednadzbe pravca: Interpolating Polynomial
Za razliku od funkcije Interpolate koja numericki obradjuje podatke, moguće je odrediti polinom koji ce opisati funkciju, u prvom primjeru bavimo se sa tri funkcije, za tri podrucja definicije funkcije. Funkcije je moguce prokazati na jednom grafu pomocu naredbe Show. Za sjenčanje koristi se naredba Filling.

Primjer 2
Clear@lin1, lin2, lin3D lin1@x_D = InterpolatingPolynomial@880, 0<, 81, 1<<, xD lin2@x_D = InterpolatingPolynomial@881, 1<, 83, − 1<<, xD

x

lin3@x_D = InterpolatingPolynomial@883, − 1<, 84, 0<<, xD

2−x

−4 + x

Show@ 8Plot@lin1@xD, 8x, 0, 1<, Filling → Axis, PlotStyle → ThickD, Plot@lin2@xD, 8x, 1, 3<, Filling → Axis, PlotStyle → ThickD, Plot@lin3@xD, 8x, 3, 4<, Filling → Axis, PlotStyle → ThickD<, PlotRange → 880, 4<, 8− 1, 1<<, AxesLabel → 8x, y<D

Odredjivanje maksimuma funkcije
Pomocu naredbe NMaximize moze se odrediti vrijednost lokalnog maksimuma. Postupak se moze primjeniti i na trazenje minimuma pomocu funkcije NMinimize.

Mathematica3-Numericka_analiza.nb

5

Primjer 3
Clear@v2, t, vmax, tmaxD ; 2 NMaximize@v2@tD, 8t, 0, 4<D tmax = t ê. Last@NMaximize@v2@tD, 8t, 0, 4<DD vmax = First@NMaximize@v2@tD, 8t, 0, 4<DD Plot@v2@tD, 8t, 0, 4<, Epilog → 8PointSize@0.015D, Point@8tmax, vmax<D<, PlotStyle → Thick, AxesLabel → 8x, y<D v2@t_D = − 1 + 2 t − t2

81., 8t → 2.<< 2.

1.

y 1.0

0.5

1 -0.5

2

3

4

x

-1.0

Ogranicavanje podrucja definicije funkcije
Vrlo cesto u praksi je potrebno definirati razlicite funkcije na razlicitim podrucjima. U nastavku je prikazan postupak kojim se odredjuje podrucje definicije funkcije.

Primjer 4
Clear@V0, a, t, y, xD V0 = 1; a = 1; y@x_ ê; x ≤ a && x ≥ 0D := − V0

y@x_ ê; x ≥ aD := y2 = V0 Plot@y@xD, 8x, 0, 5<, PlotStyle → Thick, AxesLabel → 8x, y<D

6

Mathematica3-Numericka_analiza.nb

y 1.0

0.5

1 -0.5

2

3

4

5

x

-1.0

Primjer 5
Funkcija iz primjera 2 moze se definirati na drugi nacin, ogranicavanjem podrucja definicije funkcije. Nedostatak ovog prikaza je sto se funkcija ne moze integrirati.

lin@x_ ê; x ≤ 4 && x ≥ 3D := InterpolatingPolynomial@883, − 1<, 84, 0<<, xD; Plot@lin@xD, 8x, 0, 4<, Filling → Axis, PlotStyle → Thick, AxesLabel → 8x, y<D

Clear@lin, xD lin@x_ ê; x ≤ 1 && x ≥ 0D := InterpolatingPolynomial@880, 0<, 81, 1<<, xD; lin@x_ ê; x ≤ 3 && x ≥ 1D := InterpolatingPolynomial@881, 1<, 83, − 1<<, xD;

Primjer 6
Funkcija iz primjera 2 moze se definirati na treci nacin, ogranicavanjem podrucja definicije funkcije koristenjem funkcije Piecewise. Ovako definiranu funkciju moguce je integrirati. Na ovaj nacin nisu samo numericki odredjeni grafovi, vec je rezultat prikazan u simbolickom obliku.
Definiranje podrucja: funkcija Piecewise

linija = Piecewise@88InterpolatingPolynomial@880, 0<, 81, 1<<, xD, 0 ≤ x < 1<, 8InterpolatingPolynomial@881, 1<, 83, − 1<<, xD, 1 ≤ x < 3<, 8InterpolatingPolynomial@883, − 1<, 84, 0<<, xD, 3 ≤ x < 4<<D llinija = Integrate@linija, xD lllinija = Integrate@llinija, xD x 2−x −4 + x 0 0≤x<1 1≤x<3 3≤x<4 True

Mathematica3-Numericka_analiza.nb

7

0
x2 2

x≤0 0<x≤1
x2 2

−1 + 2 x − 8−4x+ 0
2

1<x≤3 3<x≤4 True

x2

0
x3 6 1 3 x3 6 x3 6

x≤0 0<x≤1 − x + x2 −
26 3

1<x≤3 3<x≤4 True

− 2
Graficki prikaz

+ 8 x − 2 x2 +

Plot@linija, 8x, 0, 4<, Filling → Axis, PlotStyle → Thick, AxesLabel → 8x, y<D Plot@llinija, 8x, 0, 4<, Filling → Axis, PlotStyle → Thick, AxesLabel → 8x, y<D Plot@lllinija, 8x, 0, 4<, Filling → Axis, PlotStyle → Thick, AxesLabel → 8x, y<D

8

Mathematica3-Numericka_analiza.nb

Probne vrijednost Piecewise funkcije

Ukoliko se dese nedosljednosti ili nejasnoce na grafu, kao sto su ovi prekidi na gornjem grafu pozeljno je provjeriti da li dobivena funkcija daje vrijednost za kriticne tocke.

:1,

l@x_D = linija; ll@x_D = llinija; lll@x_D = lllinija; 8l@1D, ll@1D, lll@1D< 1 2 1 6 , >

Ograničavanje vrijednosti funkcije na pozitivne vrijednosti
Funkciju mozemo ograniciti da vrijedi samo u pozitivnom podrucju. Pri tome mozemo koristiti naredbu Max, koja daje najvecu vrijednost unutar liste, a u ovom slucaju clanovi liste su 0 i vrijednost funkcije. Ukoliko je vrijednost funkcije manja od nule, najveci clan liste je 0.

Primjer 7
Clear@data, f, g, xD data = 880, 2<, 81, 0.2<, 82, 0.2<, 83, 2<<; f = Interpolation@dataD; g@x_D := Max@8f@xD, 0<D Plot@8f@xD, g@xD<, 8x, 1, 2<, PlotStyle → 8Thin, Thick<D

0.20

0.15

0.10

0.05

1.2

1.4

1.6

1.8

2.0

Mathematica3-Numericka_analiza.nb

9

Ograničavanje vrijednosti funkcije na negativne vrijednosti
Slicno prethodom primjeru, mozemo definirati da funkcija vrijedi samo u negativnom podrucju.

Primjer 8
Clear@data, h, j, xD data = 880, 2<, 81, 0.2<, 82, 0.2<, 83, 2<<; h = Interpolation@dataD; j@x_D := Min@8h@xD, 0<D Plot@8h@xD, j@xD<, 8x, 1, 2<, PlotStyle → 8Thin, Thick<D

0.20

0.15

0.10

0.05

1.2

1.4

1.6

1.8

2.0

Zamjenjivanje vrijednosti varijable
Sljedeci primjeri preuzeti su sa http://forums.wolfram.com/mathgroup/ i daju malo veci uvid u fukcije koje zamjenjuju vrijednost varijable s nekom drugom vrijednoscu. Prikazuju vise nacina kako se varijabli moze pridodati lokalna vrijednost.

Primjer 9
Clear@x, r, sD func@x_ListD := ReplaceAll@x, r_Integer → r + 100D; r =. func @ 81, 2, 3, 4< r = − 100; func @ 81, 2, 3, 4< func1@x_ListD := Block@8r<, r = 12; ReplaceAll@x, r_Integer → r + 100DD func1@81, 2<D func1 @ 81, 2, 3, 4<

8101, 102, 103, 104< 80, 0, 0, 0< 8112, 112<

8112, 112, 112, 112<

10

Mathematica3-Numericka_analiza.nb

1

Module@8r, s<, x ê. r_ → r ê r → 1 + s ê. s → 2D r_ → r + s ê. s → 2 r_ → r + 1

r=1 Module@8r<, x ê. r_ → r + 1D Module@8r, s<, x ê. r_ → r + s ê. s → 2D

2

2+x

1→3

r_ → 3

r_ → 2

Racunanje vrijednosti funkcije na nezavisnim setovima varijabli
U nastavku je prikazan način na koji je moguće istovremeno računati vrijednosti funkcije na više nezavisnih setova varijabli pomocu tzv. mapiranja.

Primjer 10
Odredjivanje interpolacijske funkcije na nekoliko neovisnih skupova podataka, integriranje funkcija i graficki prikaz

8880, 0<, 81, 1<, 83, − 1<, 84, 0<<, 880, 2<, 81, 2<, 83, − 2<, 84, 1<<, 880, 1<, 81, 0<, 83, 2<, 84, 0<<, 880, 2<, 81, − 1<, 83, − 1<, 84, 2<<<

data = 8880, 0<, 81, 1<, 83, − 1<, 84, 0<<, 880, 2<, 81, 2<, 83, − 2<, 84, 1<<, 880, 1<, 81, 0<, 83, 2<, 84, 0<<, 880, 2<, 81, − 1<, 83, − 1<, 84, 2<<< f = Map@Interpolation@data@@ DD, InterpolationOrder → 1D &, 81, 2, 3, 4<D; ff = Map@Integrate@f@@ DD@xD, xD &, 81, 2, 3, 4<D; fff = Map@Integrate@ff@@ DD, xD &, 81, 2, 3, 4<D; Map@Plot@f@@ DD@xD, 8x, 0, 4<, PlotLabel → "set" D &, 81, 2, 3, 4<D Map@Plot@ff@@ DD, 8x, 0, 4<, PlotLabel → "set" D &, 81, 2, 3, 4<D Map@Plot@fff@@ DD, 8x, 0, 4<, PlotLabel → "set" D &, 81, 2, 3, 4<D

Mathematica3-Numericka_analiza.nb

11

set
1.0

0.5

:

,
1 2 3 4

-0.5

-1.0

2 set
2

1

,
1 2 3 4

-1

-2

3 set
2.0

1.5

1.0

,

0.5

1

2

3

4

4 set
2.0 1.5 1.0 0.5

1 -0.5 -1.0

2

3

4

>

12

Mathematica3-Numericka_analiza.nb

set
1.0

0.8

:

0.6

,
0.4

0.2

1

2

3

4

2 set
3.0 2.5 2.0 1.5 1.0 0.5

,

1

2

3

4

3 set
3.5 3.0 2.5

Sign up to vote on this title
UsefulNot useful