Numericka I Programiranje 2015-2016

You might also like

You are on page 1of 72

1.

Programski paket Mathematica


Mathematica je programski paket namenjen numerikom, simbolikom i grafikom reavanju
matematikih problema.
Najznaajniji deo softvera Mathematica predstavlja mogunost vrlo sloenih simbolikih izrauna-
vanja.
Korisnik svoje zahteve postavlja u radnom prostoru (Notebook), koji se automatski otvara po aktivi-
ranju Mathematicae, i alje ih na izvrenje delu softvera koji se zove Jezgro (Kernel).
Zahtev za izvrenjem postie se istovremenim pritiskom tastera [Shift] i [Enter]. Prekid izvrenja
postie se pritiskom tastera [Alt] i [.].
Radni prostor je interaktivni dokument koji se sastoji od niza elija (Cells). elija moe da sadri
tekst, formule ili grafiku i oznaena je uglastim zagradama s desne strane.
Pamenje sardaja radnog prostora vri se u meniju File kao ime.nb. Svaki ovakav fajl moe se
kasnije pozivati i po potrebi menjati.

Aritmetike operacije

Simboli (Symbols)
Dozvoljeni set simbola koji mogu da se koriste u Mathematica-i ine:
- velika i mala slova engleskog alfabeta:
A, a, B, b, ..., Z, z;
- cifre decimalnog brojnog sistema: 0,1,2,3,4,5,6,7,8,9;
- specijalni znaci: ( ) . , ; : + - = / ^ * $ \

Brojne konstante (Numbers)


Brojni podaci koji se mogu koristiti u Mathematica-i svrstavaju se u sledee tipove:
- celi brojevi (Integer)
- realni (Real)
- kompleksni (Complex)

Matematike konstante
I - imaginarna jedinica
E - broj
Pi - broj p
Infinity - beskonano
Osnovne aritmetike operacije
- sabiranje: x+y
- oduzimanje: x-y
- mnoenje: x*y ili x y
- deljenje: x/y
- stepenovanje: x^y

Sabiranje :

23.85 + 8.97
2 Numericka i programiranje 2015-16.nb

32.82

Deljenje celih brojeva i realnih brojeva:

32

3. 2

1.5

Mnoenje se oznaava simbolom * ili prazninom.

Napomena 1: Pri izraunavanju aritmetikog izraza ishod zavisi od argumenata izraza. Ukoliko su svi
argumenti tipa Integer, tada je i rezultat tipa Integer. Ako su argumenti realni ili meoviti, tada je
rezultat tipa Real.

23
6

2*3
6

2 + 3 H4 - 5L
-1

Broj u eksponencijalnom obliku :


2.3 10^-7

2.3 10^- 7
2.3 10-7

4. ^H1 3L
1.5874

a = 1486.2497; b = 878 366.987;


a*b
1.30547 109

Napomena 2: Pri stepenovanju se podrazumeva da je eksponent ceo broj. Ukoliko su i osnova i


eksponent realni brojevi, stepenovanje se izvrava transformacijom pomou logaritmovanja na
osnovu jednakosti:
a=x^y => ln a=y ln x => a=e^(y ln x).

Kompleksni brojevi: x+y I

x=2+3I
2+3
Numericka i programiranje 2015-16.nb 3

y=2-3I
2-3

xy
13

xy
Conjugate@x yD
5 12
- +
13 13
5 12
- -
13 13

H* -pocetak komentara, kraj komentara *L

Specijalni simboli, tana i priblina vrednost:

I H*imaginarna jedinica*L

E H*broj e - osnova prirodnih logaritama*L

Priblina vrednost broja dobija se pomou naredbe:


N[x] ili N[x, broj cifara]
Izvravanje sa odreenim brojem cifara postie se direktivom
SetAccuracy[izraz, broj cifara]

N@%D
2.71828

Pi
p

N@PiD
3.14159

Sin@PiD
0

Sqrt@2.D
1.41421

a = Exp@Pi Sqrt@163DD
163 p

N@Exp@Pi Sqrt@163DD, 40D


2.625374126407687439999999999992500725972 1017
4 Numericka i programiranje 2015-16.nb

Sqrt@7 ^2 + H-3L^2 + 9^2D

139

SetAccuracy@a, 40D
2.62537412640768743999999999999250072597 1017

b = Exp@SetAccuracy@Pi, 50D * Sqrt@SetAccuracy@163., 40DDD


2.6253741264076874399999999999925007259720 1017

a = 1486.2497;
b = 878.366987;
a*b
SetAccuracy@a * b, 25D
a+b
SetAccuracy@a + b, 12D
1.30547 106

1.305472670918653951957821846008 106

2364.62

2364.61668700000

Naredba dodeljivanja :
x=5 trajna dodela
x . x 5 trenutna dodela

Gubitak znaajnih cifara - oduzimanje bliskih brojeva

x = 0.123456;
y = 0.123467;
z = y-x
0.000011

N@z, 20D
0.000011

H* Iako su brojevi x i y zadati sa 6 cifara,


njihova razlika ima samo 2 zn. cifre *L

z Pi
0.0000345575

2+z
2.00001

20 + z
20.
Numericka i programiranje 2015-16.nb 5

w = Pi 10 ^-5
p
100 000

z+w
0.0000424159

Algebarski izrazi

a = Hx - 1.5L^4 Hx^3 + x + 1L
H- 1.5 + xL4 I1 + x + x3 M

a . x 5
19 658.2

b = Hx ^2 + Sqrt@xD + 2L H2 x^2 + 5 xL

2+ x + x2
5 x + 2 x2

b . x 1.
0.571429

b . x 100.
0.48839

b . x 10 000.
0.499876

Transformacije algebarskih izraza


Transformacije algebarskih izraza esto su neophodne radi dobijanja izraza u formi pogodnijoj za
dalji rad.
Naredbom Expand izvravaju se sva mnoenja i stepenovanja u brojiocu izraza. Naredbom
ExpandAll ove
operacije se izvravaju i u imeniocu i u brojiocu izraza. Naredba Simplify daje najjednostavniji
oblik izraza
primenom algebarskih transformacija. Naredba TraditionalForm prikazuje polinome u standard-
nom obliku,
poevi od monoma sa najvecim stepenom pa nadalje.

a = Hx - 2L Hx - 1L HHx - 4L^2 Hx + 3LL


H- 2 + xL H-1 + xL
H-4 + xL2 H3 + xL
6 Numericka i programiranje 2015-16.nb

Expand@aD
2 3x x2
H- 4 + xL2 H3 + xL H-4 + xL2 H3 + xL H-4 + xL2 H3 + xL
- +

b = ExpandAll@aD
2 3x x2
- +
48 - 8 x - 5 x2 + x3 48 - 8 x - 5 x2 + x3 48 - 8 x - 5 x2 + x3

Simplify@aD
H- 2 + xL H-1 + xL
H-4 + xL2 H3 + xL

TraditionalForm@bD
x2 3x 2
- +
x3 -5 x2 - 8 x + 48 x3 -5 x2 - 8 x + 48 x3 -5 x2 - 8 x + 48
Numericka i programiranje 2015-16.nb 7

2. Matematike funkcije

Ugraene elementarne matematike funkcije imaju rezervisana imena, koja poinju obavezno
velikim slovom, dok se argumenti navode u uglastim zagradama:

Sqrt[x] - kvadratni koren


Exp[x] - eksponencijalna funkcija
Log[x] - prirodni logaritam
Log[b,x] - logaritam za osnovu b
Sin[x], Cos[x], Tan[x]
ArcSin[x], ArcCos[x], ArcTan[x]
Sinh[x], Cosh[x], Tanh[x]
ArcSinh[x], ArcCosh[x], ArcTanh[x]
Abs[x]
Max[x,y,...]
Min[x,y,...]

Log@6D N
1.79176

Log@6.D
1.79176

Log@3, 27D
3

Sin@45 DegreeD
1

ArcTan@InfinityD
p
2

Sqrt@- 1D

Max@1, -8, 25D


25

Min@0.2, 1.5, 0.001D


0.001

Crtanje grafika funkcije


8 Numericka i programiranje 2015-16.nb

Grafik fukcije jedne promenljive, zadate na odreenom intervalu, crta se pomou


naredbe
Plot[f,{x, xmin, xmax}]

Plot@Sin@xD, 8x, 0, 2 Pi<D

y = Cos@xD;
Plot@y, 8x, -Pi, Pi<D

z = Exp@xD;
Plot@8y, z<, 8x, -Pi, Pi<D

Zadatak: Nacrtati grafik funkcije f HxL =


ex
i odrediti njene karakteristike: nule funkcije, znak,
1- x 2
asimptote, raenje, opadanje i ekstremne vrednosti.

f = Exp@xD H1 - x^2L;
Plot@f, 8x, -10, 10<D

20

10

- 10 -5 5 10

- 10

- 20

- 30

- 40

Plot@Sin@x^3D x ^2, 8x, -Pi, Pi<D

0.5

-3 -2 -1 1 2 3

- 0.5
Numericka i programiranje 2015-16.nb 9

Plot@8H0.9L ^x, H0.9L^ x Sin@xD<, 8x, 0., 25.<D


1.0

0.5

5 10 15 20 25

- 0.5

Parametarski zadate krive

Naredbom Plot crtaju se krive koje su zadate eksplicitnim formulama. Parametarski zadate krive
kod kojih su koordinate x i y zadate kao funkcije zajednikog parametra, crtaju se naredbom

ParametricPlot[{fx, fy}, {t, tmin, tmax}]

ParametricPlot@82. Ht - Sin@tDL, 2. H1 - Cos@tDL<, 8t, 0, 2 * Pi<, PlotLabel CikloidaD


Cikloida
4
3
2
1

2 4 6 8 10 12

ParametricPlot@8Sin@tD, Cos@tD<, 8t, 0, 2 * Pi<, PlotLabel KrugD


Krug
1.0

0.5

- 1.0 - 0.5 0.5 1.0

- 0.5

- 1.0
10 Numericka i programiranje 2015-16.nb

ParametricPlot@82. Cos@tD ^3, 2. Sin@tD^ 3<, 8t, 0, 2. * Pi<, PlotLabel AsteroidaD


Asteroida
2

-2 -1 1 2

-1

-2

Neke krive zadate su jednainama sa direktnom vezom u polarnim koordinatama. Na primer:


1) Bernulijeva leminiskata: r=a2 cos 2f
2) Kardioida: r=a(1+cosf).
Grafici ovakvih funkcija dobijaju se pomocu naredbe PolarPlot.

PolarPlot@Cos@2. * tD, 8t, 0, 2 Pi<, PlotLabel LeminiskataD


Leminiskata
1.0

0.5

- 1.0 - 0.5 0.5 1.0

- 0.5

- 1.0
Numericka i programiranje 2015-16.nb 11

Clear@x, yD;
a = 2.;
x = ro Cos@fiD;
y = ro * Sin@fiD;
ro = a * H1 + Cos@fiDL;
ParametricPlot@8x, y<, 8fi, 0, 2 Pi<, PlotLabel KardioidaD
Kardioida

1 2 3 4

-1

-2

PolarPlot@2 * H1. + Cos@fiDL, 8fi, 0, 2 * Pi<, PlotLabel KardioidaD


Kardioida

1 2 3 4

-1

-2

Grafici funkcija u prostoru dobijaju se direktivom ParametricPlot3D

ParametricPlot3D@8Sin@tD, Cos@tD, t 4<, 8t, 0, 4 * Pi<, PlotLabel ZavojnicaD


Zavojnica
- 1.0
1.0
- 0.5
0.5 0.0
0.5
0.0 1.0
- 0.5
- 1.0
3

Grafici funkcija dve promenljive


12 Numericka i programiranje 2015-16.nb

Grafici funkcija dve promenljive


Primer: Dvodimenzionalni grafici funkcija: Nacrtati grafik

f Hx, yL = sinIx2 + y 2 M.
funkcije

Plot3D@Sin@x ^2 + y^2D, 8x, -3, 3<, 8y, - 3, 3<D

Primer: Nacrtati pomou Mathematica-e povri zadate funkcijama dve promenljive: f1 =x3 -3xy 2 -1,
f2 =3x2 y-y 3 +1.

f1 = x ^3 - 3. * x * y^2 - 1.;
f2 = 3. * x^ 2 * y - y^3 + 1.;
gr1 = Plot3D@f1, 8x, - 1, 1<, 8y, -1, 1<D
Numericka i programiranje 2015-16.nb 13

gr2 = Plot3D@f2, 8x, - 1, 1<, 8y, -1, 1<D

Show@gr1, gr2D

Grafik parametarski zadate funkcije dve promenljive (parametra) dobija se naredbom:


14 Numericka i programiranje 2015-16.nb

ParametricPlot3D@8Cos@tD Cos@uD, Sin@tD Cos@uD, Sin@uD<,


8t, 0, 2 * Pi<, 8u, -Pi 2, Pi 2<D
Numericka i programiranje 2015-16.nb 15

3. Relacije i logiki operatori


Relacije su izrazi koji se sastoje od konstanti, promenljivih i relacijskih operatora. Rezultat
primene relacijskih i logikih operacija je logika vrednost True ili False. Ove operacije razlikuju
se od aritmetikih operacija dodeljivanja.
Operacije poreenja su:
x==y jednakost
x!=y nejednakost
x>y strogo vee
x<y strogo manje
x >= y vee ili jednako
x <= y manje ili jednako
x==y==z jednakost vise izraza
x!= y!=z nejednakost vise izraza
x>y>z strogo opadajuci izrazi

x=7
7

x > 10
False

Logike operacije i relacije koriste se najvie u naredbama odluke kada u zavisnosti od ispunjenja
nekog uslova treba da se donese odluka o daljem izvrenju programa. Takva je, na primer, naredba
IF:

Naredba odluke: If[test, then, else]

If@x < 10, b = 0, b = 20D


0

b
0

Aritmetika i logika operacija jednakosti


Aritmetika operacija dodeljivanja vrednosti x = y razlikuje se od logike relacije x = = y,
kojom se vri provera jednakosti leve i desne strane i koja ima logiku vrednost taan ili netaan.
Ova relacija koristi se i pri reavanju jednaina.

x=4
4

x6
False
16 Numericka i programiranje 2015-16.nb

x4

True

Programi

Program se sastoji od niza naredaba grupisanih u celinu. Naredbe su meusobno razdvojene


znakom ;
Za prikaz dobijenih rezultata koristi se naredba
Print[izr1, izr2, ...]
Element izlazne liste izr moze biti: konstanta, promenljiva, izraz.
Znakovna konstanta navodi se pod znacima navoda: Rezultat izracunavanja je, x=.
Promenljiva se navodi imenom koje joj je zadato u programu.
Ukoliko je element izlazne liste aritmetiki izraz, sve promenljive koje se u njemu nalaze moraju imati
definisane vrednosti (koje su ili zadate ili sraunate u okviru programa). Vrednost izraza se izraunava pa
se tako dobijena vrednost izdaje kao rezultat.

Zadatak 1. Pokazati grafiki da jednaina


5p+Sin@xD=10ArcTan@xD ima beskonano mnogo reenja.

Clear@xD;
y = 5 * Pi + Sin@xD;
z = 10 * ArcTan@xD;
a = Plot@y, 8x, -1, 150<D;
b = Plot@z, 8x, -1, 150<D;
Show@a, b, PlotRange 88- 1, 150<, 810, 18<<D
18

16

20 40 60 80 100 120 140

14

12

10

Zadatak 2. Izraunati izraze i tampati dobijeni rezultat:


1 1 1 1 1 1 1 1
a) + + + + + + +
2 3 4 5 6 7 8 9
Numericka i programiranje 2015-16.nb 17

2 3 4 5 6 7 8 9
2 3 3 2 7
b) n + n - n, za n=0,1,2,...,10.
3 2 6
3 3
c) x +y -6y+3, za x,y=-3,-2,..., 3.

H* Resenje aL *L
s = 12+13+14+15+16+17+18+19
N@sD
4609
2520
1.82897

H* Koriscenje funkcije Sum *L


Sum@1 i, 8i, 2, 9<D
N@Sum@1 i, 8i, 2, 9<DD
4609
2520
1.82897
18 Numericka i programiranje 2015-16.nb

H* Resenje bL *L
2 3 3 2 7
a= n + n - n;
3 2 6
TraditionalForm@aD
a . n 0
a . n 1
a . n 2
a . n 3
a . n 4
a . n 5
a . n 6
a . n 7
a . n 8
a . n 9
a . n 10

2 n3 3 n2 7n
+ -
3 2 6
0

28

62

115

191

294

428

597

805
Numericka i programiranje 2015-16.nb 19

H* Resenje cL *L
z = x ^3 + y^3 - 6 y + 3;
TraditionalForm@zD
z . 8x - 3, y -3<
z . 8x - 2, y -2<
z . 8x - 1, y -1<
z . 8x 0, y 0<
z . 8x 1, y 1<
z . 8x 2, y 2<
z . 8x 3, y 3<
x3 + y3 - 6 y + 3
- 33

-1

-1

39

Kontrolna naredba For

Kontrolna naredba
For[kmin , kmax , kkorak , naredbe]
izvrava niz naredaba definisanih u naredbe poev od vrednosti indeksa kmin do kmax sa uvean-
jem u svakom prolasku za kkorak .

Specijalna dodela: rad sa indeksom iteratora


k ++ uvecanje vrednosti indeksa za 1
k -- smanjenje vrednosti indeksa za 1
k + = d uvecanje indeksa za d
k - = d smanjenje indeksa za d

For@k = 1, k < 5, k ++, Print@kDD


1

Zadatak 3. Reiti zadatak 2 koristei For naredbu.


20 Numericka i programiranje 2015-16.nb

H* Resenje aL *L
s = 0;
For@i = 2, i 9, i ++, s = s + 1 iD
Print@"Suma je: ", N@sDD
Suma je: 1.82897

H* Resenje bL *L
2 3 3 2 7
a= n + n - n;
3 2 6
For@i = 0, i 10, i ++,
Print@"Vrednost izraza za n=", i, " je:", a . n iDD
Vrednost izraza za n=0 je:0

Vrednost izraza za n=1 je:1

Vrednost izraza za n=2 je:9

Vrednost izraza za n=3 je:28

Vrednost izraza za n=4 je:62

Vrednost izraza za n=5 je:115

Vrednost izraza za n=6 je:191

Vrednost izraza za n=7 je:294

Vrednost izraza za n=8 je:428

Vrednost izraza za n=9 je:597

Vrednost izraza za n=10 je:805

H* Resenje cL *L
z = x ^3 + y^3 - 6 y + 3;
For@i = -3, i 3, i++,
Print@"Rezultat za x i y jednako ", i, " je: ", z . 8x i, y i<DD
Rezultat za x i y jednako - 3 je: - 33

Rezultat za x i y jednako - 2 je: - 1

Rezultat za x i y jednako - 1 je: 7

Rezultat za x i y jednako 0 je: 3

Rezultat za x i y jednako 1 je: - 1

Rezultat za x i y jednako 2 je: 7

Rezultat za x i y jednako 3 je: 39

Primer 1.
Uz pomo For naredbe, napisati program za izraunavanje
a) zbira Z=ni= 1 ai , uzimajui za ai =i 2 .

c) zbira S = k= 0 q .
b) proizvoda P=xn za dato x.
n k

Testirati program za n=20 i q=1/4.


Numericka i programiranje 2015-16.nb 21

H* Resenje aL *L
Clear@n, sD
s = 0;
n = 20;
For@i = 1, i n, i ++,
s = s + i^ 2;D
Print@"Za n= ", n, " suma je : s= ", sD;
Za n= 20 suma je : s= 2870

H* Resenje bL *L
Clear@n, p, xD
p = 1;
n = 20;
x = 2;
For@i = 1, i n, i ++,
p = p * x;D
Print@"Za n= ", n, " i x= ", x, " proizvod je p= ", pD;
Za n= 20 i x= 2 proizvod je p= 1 048 576

H* Resenje cL *L
Clear@n, p, s, qD
s = 1;
p = 1.;
n = 20;
q = 1 4.;
For@k = 1, k n, k ++,
p = p * q;
s = s + pD;
Print@"Za n= ", n, " i q= ", q, " zbir je p= ", sD;
Za n= 20 i q= 0.25 zbir je p= 1.33333

Primer 2.
Napisati program za izraunavanje izraza
1
f(x)= +1 - 1
x

ex
gHxL =
1
xe
+1

za razliite vrednosti argumenta x = 10- 1 , 10- 2 , 10- 3 ,...

Clear@xD;
x = 0.1;
For@k = 1, k 7, k++,
f = Sqrt@1 x + 1D - 1;
g = E^x HSqrt@1 x^ E + 1DL;
Print@"x=", x, " f=", f, " g=", gD;
x = x 10D
22 Numericka i programiranje 2015-16.nb

x=0.1 f=2.31662 g=0.0482918

x=0.01 f=9.04988 g=0.00193224

x=0.001 f=30.6386 g=0.0000837552

x=0.0001 f=99.005 g=3.65999 10-6

x=0.00001 f=315.229 g=1.60066 10-7

x=1. 10-6 f=999. g=7.00092 10-9

x=1. 10-7 f=3161.28 g=3.06206 10-10

Primer 3
Napisati program za izraunavanje faktorijela nekog prirodnog broja n.

Clear@n, factD;
fact = 1;
n = 8;
For@i = 1, i <= n, i++,
fact = fact * iD;
Print@"Faktorijel broja ", n, " je ", factD
Faktorijel broja 8 je 40 320

Primer 4
Prva dva lana Fibonaijevog niza su 0 i 1. Svaki naredni lan se dobija kao zbir prethodna dva
lana niza. Napisati program za izraunavanje vrednosti n-tog lana Fibonaijevog niza. Testirati
program uzimajui za n = 12.

ClearAll@f1, f2, n, f3D


n = 12;
f1 = 0;
f2 = 1;
For @i = 3, i n, i++,
f3 = f1 + f2;
f1 = f2;
f2 = f3D
Print@n, " ti clan Fibonacijevog niza je : ", f3D
12 ti clan Fibonacijevog niza je : 89

Primer 5
Napisati program za izraunavanje vrednosti izraza nk= 0
1 1
n k2+ 1
uzimajui za n = 15.
Numericka i programiranje 2015-16.nb 23

Clear@s, n, kD;
s = 0;
n = 15;
For@k = 0, k <= n, k ++,
s = s + 1 Hk^2 + 1.LD;
s = s n;
Print@"Vrednost sume je : ", sD
Vrednost sume je : 0.134151

Primer 6
+n
n
4 4p
Napisati program za izraunavanje vrednosti izraza
p
k= 0 3 k+ 2
uzimajui za n = 15.

Clear@n, p, kD
n = 15;
p = 1.;
For@k = 0, k n, k ++,
p = p * H4 * PiL H3 * Sqrt@k + 2DLD
p = 4 Pi + n * p;
Print@"vrednost izraza je: ", pD
vrednost izraza je: 7145.82
24 Numericka i programiranje 2015-16.nb

4. Vektori i matrice
Indeksirane promenljive vektori i matrice tretiraju se u Mathematica-i kao liste i tabele.
Vektor se zadaje kao niz brojeva (koordinata) u vitiastim zagradama:

v = 81, 2, 3, 4, 2<
81, 2, 3, 4, 2<

Min@vD
Max@vD
Length@vD
1

Reverse@vD
82, 4, 3, 2, 1<

Sqrt@vD

:1, 2 , 3 , 2, 2 >

2*v
82, 4, 6, 8, 4<

Matrice se zadaju kao dvostruke liste.


t = 881, 2, 3<, 84, 5, 6<<
g = 881, 4, 3<, 83, 1, 2<<
881, 2, 3<, 84, 5, 6<<

881, 4, 3<, 83, 1, 2<<

TableForm@tD
1 2 3
4 5 6

MatrixForm@tD

K O
1 2 3
4 5 6

t1 = Transpose@tD
881, 4<, 82, 5<, 83, 6<<
Numericka i programiranje 2015-16.nb 25

MatrixForm@t1D
1 4
2 5
3 6

MatrixForm@t + gD

K O
2 6 6
7 6 8

A = g.t1;
MatrixForm@AD

K O
18 42
11 29

MatrixRank@AD
Dimensions@t1D
Dimensions@AD
2

83, 2<

82, 2<

Osnovne matrine operacije, izraunavanje determinante, nalaenje


inverzne matrice:
Clear@a, b, c, dD;
Inverse@88a, b<, 8c, d<<D

:: >, :- >>
d b c a
,- ,
-b c + a d -b c + a d -b c + a d -b c + a d

Inverse@881, 2<, 83, 6<<D

Inverse::sing : Matrix 881, 2<, 83, 6<< is singular.

Inverse@881, 2<, 83, 6<<D

H* Izdat je rezultat da je matrica singularna pa nema inverznu matricu*L

b = 880.5, 0.33<, 80.5, 0.2<<


880.5, 0.33<, 80.5, 0.2<<

Det@bD
- 0.065

b1 = Inverse@bD H* Inverzna matrice za matricu b *L


88- 3.07692, 5.07692<, 87.69231, -7.69231<<

b.b1; H*mnozenje matrica*L


MatrixForm@b.b1D

K O
1. 0.
0. 1.
26 Numericka i programiranje 2015-16.nb

H* Mnozenje matrice i vektora *L


a = 880, 1, 0.25<, 80.5, 0, -0.25<, 80.25, 0.25, 0<<;
c = 84, 2, 4<;
a.c
83., 1., 1.5<

Dot@a, cD
83., 1., 1.5<

H*Odredjivanje norme matrice*L


Norm@a, 2D
1.0612

Formiranje lista i tabela

Matrice i vektori zadaju se kao liste i tabele. Liste se mogu koristiti i kao tabele vrednosti. Tabele
se mogu generisati:
1) eksplicitnim navoenjem elemenata liste, ili
2) korienjem iteratora pomou koga se tabela generie izraunavanjem nekog izraza za
razliite vrednosti parametra (iterativne promenljive).
Ukoliko se radi o vektoru, imamo jednu iterativnu promenljivu dok su za matricu potrebne dve
promenljive.

Table[f, {i, imax}]


Table[f, {i, imin, imax}]
Table[f, {i, imin, imax, korak}]
Table[f, {i, imin, imax}, {j, jmin, jmax}]

v = Table@i ^2, 8i, 10<D


81, 4, 9, 16, 25, 36, 49, 64, 81, 100<

f = x ^2 H1 + x^ 3L;
u = Table@f, 8x, 5<D

: , , >
1 4 9 16 25
, ,
2 9 28 65 126

Table@8x, f<, 8x, 5.<D

::1, >, :2, >, :3, >, :4, >, :5, >>
1 4 9 16 25
2 9 28 65 126

MatrixForm@N@%DD
1. 0.5
2. 0.444444
3. 0.321429
4. 0.246154
5. 0.198413

a = Table@i * j, 8i, 1, 3<, 8j, 1, 4<D


881, 2, 3, 4<, 82, 4, 6, 8<, 83, 6, 9, 12<<
Numericka i programiranje 2015-16.nb 27

TableForm@aD
1 2 3 4
2 4 6 8
3 6 9 12

MatrixForm@aD
1 2 3 4
2 4 6 8
3 6 9 12

b = Table@i * j, 8i, 2, 4<, 8j, 3, 5<D


886, 8, 10<, 89, 12, 15<, 812, 16, 20<<

TableForm@bD
6 8 10
9 12 15
12 16 20

IdentityMatrix@3D
881, 0, 0<, 80, 1, 0<, 80, 0, 1<<

q = 81, 2, 3, 4<;
c = DiagonalMatrix@qD TableForm
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4

Pojedinani element liste (koordinata vektora ili element matrice) pozivaju se navoenjem opteg
imena liste i indeksa koji je u dvostrukoj uglastoj zagradi. Na primer, za prvu koordinatu vektora
b, piemo b[[1]], za element u prvoj vrsti i drugoj koloni matrice A piemo A[[1,2]]

Zadatak 1. Neka je data funkcija f HxL = Log10 (3x+2). Napisati program kojim se izraunava suma
d1 + d1 d2 + d1 d2 d3 + ... ... + d1 d2 ....dn . Vektor d = 8d1 , d2 , ..., dn < formirati tako da proizvoljan
lan vektora di bude definisan kao di = f(i), i=1,2...,n.

n = 10;
d = Table@Log@10, 3 x + 2.D, 8x, 1, n<D;
s = 0;
p = 1;
For@i = 1, i n, i ++,
p = p * d@@iDD;
s = s + p;D
Print@"Vrednost sume je : ", sD

vrednost sume je : 17.3543

Zadatak 2. Dati su vektori x i y duzine n<=10. Nai ugao izmeu ovih vektora pomou for-

Hx,yL
mule-
cosHx, yL =
Hx,xL Hy,yL
.

Testirati program na primeru n=3, x={1,0,0}, y={1,0,1}.


28 Numericka i programiranje 2015-16.nb

n = 3;
x = 81, 0, 0<;
y = 81, 0, 1<;
sxy = 0.;
sx = 0.;
sy = 0.;
For@i = 1, i n, i ++,
sxy = sxy + x@@iDD * y@@iDD;
sx = sx + x@@iDD^ 2;
sy = sy + y@@iDD^ 2D;
sx = Sqrt@sxD;
sy = Sqrt@syD;
ugao = sxy Hsx * syL;
Print@ugaoD;
Print@"Vrednost ugla u radijanima je :", Rationalize@ArcCos@ugaoD PiD, "p"D
ugao = ArcCos@ugaoD * 360 H2 PiL;
Print@"Vrednost ugla u stepenima je :", Rationalize@ugaoD, ""D

0.707107

1
Vrednost ugla u radijanima je : p
4
Vrednost ugla u stepenima je :45

Zadatak 3. Sledei brojevi predstavljaju aproksimacije broja p


22 333 355 104 348 1 148 183 1 252 531
, , , , , .
7 106 113 33 215 365 478 398 693
Napisati program kojim se ovi brojevi uitavaju kao koordinate vektora a zatim za svaku izrau-
nava apsolutna i relativna greka. Za svaku vrednost tampati dobijene rezultate.

n = 6;
p=
822 7, 333 106, 355 113, 104 348 33 215, 1 148 183 365 478, 1 252 531 398 693<;
For@k = 1, k 6, k ++,
gr = Abs@N@Pi - p@@kDDDD;
rgr = gr Pi;
Print@" apsolutna greska za ",
p@@kDD, " je : ", gr, ". Relativna greska je: ", rgrD
D
Numericka i programiranje 2015-16.nb 29

22
apsolutna greska za je : 0.00126449. Relativna greska je: 0.000402499
7
333
apsolutna greska za je : 0.0000832196. Relativna greska je: 0.0000264896
106
355
apsolutna greska za je : 2.66764 10-7 . Relativna greska je: 8.49137 10-8
113
104 348
apsolutna greska za je : 3.31628 10-10 . Relativna greska je: 1.0556 10-10
33 215
1 148 183
apsolutna greska za je : 4.14005 10-10 . Relativna greska je: 1.31782 10-10
365 478
1 252 531
apsolutna greska za je : 4.07142 10-10 . Relativna greska je: 1.29597 10-10
398 693

5. Sistemi linearnih jednaina


Sistem linearnih jednaina oblika Ax=b reava se naredbom:
LinearSolve[A,b].

A = 883, -7, -5<, 81, -8, 2<, 80, 2, 4<<;


b = 8- 1, 1, 3<;
LinearSolve@A, bD

: , >
6 17 59
,
5 90 90

Primer 1
Reiti sistem linearnih jednaina:
x - y +3z = 0
x +2z = p
-2x+y +pz = -5
Kada je p 5 sistem ima jedinstveno reenje. Kada je p= 5 sistem ima beskonano reenja.
30 Numericka i programiranje 2015-16.nb

Clear@A, b, pD
A = 881, -1, 3<, 81, 0, 2<, 8-2, 1, p<<;
MatrixForm@AD
b = 80, p, -5<;
p = 0;
x = LinearSolve@A, bD;H* sistem ima jedinstveno resenje*L
MatrixForm@xD
A.x b H*provera resenja*L
p = 5;
H* i ako sistem ima beskonacno resenja kada je p=5,
naredba pronalazi samo jedno resenje sistema*L
x = LinearSolve@A, bD;
MatrixForm@xD
A.x b
1 -1 3
1 0 2
-2 1 p
2
-1
-1

True

5
5
0

True

Zadatak 1. Napisati program kojim e se za dato n (n =10) obrazovati matrica


5 3 0 0 0 0
2 5 3 0 0 0
0 2 5 3 0 0
Ann =
0 0 2 5 3 0
0 0 0 2 5 3
0 0 0 0 2 5
Zatim formirati vektor b=(1,2,,n) i nai reenje sistema linearnih jednaina Ax=b. Testirati
program za razliite vrednosti n=2,3,,10 i tampati dobijene rezultate.
Numericka i programiranje 2015-16.nb 31

n = 10;
A = Table@0, 8i, 1, n<, 8j, 1, n<D;
For@i = 1, i n, i ++,
A@@i, iDD = 5.D;
For@i = 1, i n - 1, i++,
A@@i, i + 1DD = 3.;
A@@i + 1, iDD = 2.D;
b = Table@i, 8i, 1, n<D;
Print@TableForm@ADD;
x = LinearSolve@A, bD;
MatrixForm@xD
5. 3. 0 0 0 0 0 0 0 0
2. 5. 3. 0 0 0 0 0 0 0
0 2. 5. 3. 0 0 0 0 0 0
0 0 2. 5. 3. 0 0 0 0 0
0 0 0 2. 5. 3. 0 0 0 0
0 0 0 0 2. 5. 3. 0 0 0
0 0 0 0 0 2. 5. 3. 0 0
0 0 0 0 0 0 2. 5. 3. 0
0 0 0 0 0 0 0 2. 5. 3.
0 0 0 0 0 0 0 0 2. 5.
-0.284211
0.807018
-0.488889
1.2768
-0.468746
1.59671
-0.348683
1.85
-0.18421
2.07368

Zadatak 2. Za matricu A definisanu iz prethodnog zadatka, izraunati vrednost determinante

Dn HAL = 5 Dn- 1 - 6 Dn- 2


matrice za razliite vrednosti n prema rekurzivnoj formuli

znajui da je D1 =5, D2 =19.

n = 10;
D1 = 5;
D2 = 19.;
For@k = 3, k n, k++,
D3 = 5 D2 - 6 D1;
Print@"DH", k, "L=", D3D;
D1 = D2;
D2 = D3D
32 Numericka i programiranje 2015-16.nb

DH3L=65.

DH4L=211.

DH5L=665.

DH6L=2059.

DH7L=6305.

DH8L=19 171.

DH9L=58 025.

DH10L=175 099.

Zadatak 3. Dat je sistem linearnih jednaina


5 x - y + z = 10,
2 x + 8 y - z = 11,
- x + y + 4 z = 3.

xk+ 1 = D- 1 AHD - AL xk + bE,


Napisati program za reavanje datog sistema Jakobijevim metodom

gde je A matrica sistema, D njena dijagonalna matrica, b vektor slobodnih koeficijenata. Za


poetnu aproksimaciju uzeti vektor
xH0L ={0, 0, 0}. Izvriti najvie M=13 iterativnih koraka.

A = 885, -1, 1<, 82, 8, -1<, 8-1, 1, 4<<;


DA = DiagonalMatrix@Diagonal@ADD;
b = 810., 11., 3.<;
x0 = 80., 0., 0.<;
Dinv = Inverse@DAD;
B1 = DA - A;
M = 13;
For@k = 1, k M, k ++,
B2 = B1.x0 + b;
x1 = Dinv.B2;
x0 = x1;
Print@"xH", k, "L=", x1DD
Numericka i programiranje 2015-16.nb 33

xH1L=82., 1.375, 0.75<

xH2L=82.125, 0.96875, 0.90625<

xH3L=82.0125, 0.957031, 1.03906<

xH4L=81.98359, 1.00176, 1.01387<

xH5L=81.99758, 1.00583, 0.995459<

xH6L=82.00208, 1.00004, 0.997936<

xH7L=82.00042, 0.999223, 1.00051<

xH8L=81.99974, 0.999959, 1.0003<

xH9L=81.99993, 1.0001, 0.999946<

xH10L=82.00003, 1.00001, 0.999958<

xH11L=82.00001, 0.999987, 1.00001<

xH12L=82., 0.999998, 1.00001<

xH13L=82., 1., 1.<

Zadatak 4. Dat je matrica


-4 1 3 0
-2 7 1 -1
A=
1 -1 9 -3
- 1 0 5 - 10
i vektor b= [0 5 6 6 DT .
Napisati program za reavanje sistema linearnih jednaina Ax=b Jakobijevom metodom i upored-
iti dobijeni rezultat sa reenjem koje se dobija korienjem naredbe LinearSolve. Za poetnu
aproksimaciju uzeti vektor xH0L = [1 1 1 1D T .

A = 88- 4, 1, 3, 0<, 8-2, 7, 1, - 1<, 81, - 1, 9, -3<, 8-1, 0, 5, -10<<;


DA = DiagonalMatrix@Diagonal@ADD;
b = 80., 5., 6., 6.<;
x0 = 81., 1., 1., 1<;
Dinv = Inverse@DAD;
B1 = DA - A;
M = 7;
For@k = 1, k M, k++,
B2 = B1.x0 + b;
x1 = Dinv.B2;
x0 = x1;
Print@"xH", k, "L=", x1DD
MatrixForm@LinearSolve@A, bDD
34 Numericka i programiranje 2015-16.nb

xH1L=81., 1., 1., - 0.2<

xH2L=81., 0.828571, 0.6, - 0.2<

xH3L=80.657143, 0.885714, 0.580952, - 0.4<

xH4L=80.657143, 0.761905, 0.55873, - 0.375238<

xH5L=80.609524, 0.768617, 0.553228, - 0.386349<

xH6L=80.607075, 0.75421, 0.555561, - 0.384339<

xH7L=80.605223, 0.753464, 0.554902, - 0.382927<


0.604938
0.753086
0.555556
-0.382716
Numericka i programiranje 2015-16.nb 35

6. Reavanje nelinearnih jednaina: Lokalizacija korena

Koreni nealgebarskih jednaina odreuju se naredbom FindRoot[jedn, {x, x0 }], gde je x0 poetna
aproksimacija, koja mora biti dovoljno bliska traenom korenu.

Zadatak: Grafiki lokalizovati nulu funkcije f (x)=x2 - ex , a zatim nai njenu priblinu vrednost
koristei programski paket Mathematica.

y = x ^2;
z = E ^x;
Plot@8y, z<, 8x, -3, 3<D
20

15

10

-3 -2 -1 1 2 3

H*Nula funkcije se nalazi u intervalu H-1,0L *L


FindRoot@x^2 E^x, 8x, -0.5<D
8x - 0.703467<

Zadatak: Izvriti lokalizaciju korena jednaine


logHx + 3L - sinHxL = 0 u intervalu duine 10- 2 . Zatim nai traeni koren koristei programski paket
Mathematica.

f = Log@x + 3.D;
g = Sin@xD;
Plot@8f, g<, 8x, -5, 5<D
2

-4 -2 2 4

-1

-2

-3

-4
36 Numericka i programiranje 2015-16.nb

Plot@8f, g<, 8x, -3, -2<D

- 2.8 - 2.6 - 2.4 - 2.2 - 2.0

- 0.5

- 1.0

- 1.5

- 2.0

Plot@8f, g<, 8x, -2.5, -2.4<D

- 0.55

- 0.60

- 2.48 - 2.46 - 2.44 - 2.42 - 2.40

FindRoot@Log@x + 3D - Sin@xD 0, 8x, -2.4<D


8x - 2.46525<

Plot@Sin@xD, 8x, -5 Pi, 5 Pi<D


1.0

0.5

- 15 - 10 -5 5 10 15

- 0.5

- 1.0

FindRoot@Sin@xD 0, 8x, 3<D


8x 3.14159<

FindRoot@Sin@xD 0, 8x, 6<D


8x 6.28319<
Numericka i programiranje 2015-16.nb 37

Reavanje polinomskih jednaina pomou


Mathematica-e
Koreni polinomske jednaine za stepen < 5 nalaze se eksplicitno pomou naredbe Solve[jedn, x]
i priblino (numeriki) pomou naredaba:
NSolve[jedn, x]
NSolve[jedn, x, n] - priblino reenje sa n cifara.

Solve@1 - x^ 2 0, xD
88x - 1<, 8x 1<<

NSolve@x ^5 + x^2 - 1 0, xD
88x - 0.869278 - 0.388269 <, 8x -0.869278 + 0.388269 <,
8x 0.464912 - 1.07147 <, 8x 0.464912 + 1.07147 <, 8x 0.808731<<

Clear@a, b, cD;
Solve@a x ^2 + b x + c 0, xD

::x >, :x >>


-b - b2 - 4 a c -b + b2 - 4 a c
2a 2a

Solve@x ^6 - 64 0, xD
98x - 2<, 8x 2<, 9x -2 H-1L13 =, 9x 2 H-1L13 =, 9x -2 H-1L23 =, 9x 2 H- 1L23 ==

NSolve@x ^7 - 24. x ^6 + 12.5 x^3 - 324.2 0, x, 5D


88x - 1.31122 - 0.788509 <, 8x -1.31122 + 0.788509 <,
8x -0.0527419 - 1.54008 <, 8x -0.0527419 + 1.54008 <,
8x 1.36441 - 0.753937 <, 8x 1.36441 + 0.753937 <, 8x 23.9991<<

Sistemi nelinearnih jednaina


Priblino reavanje sistema polinomskih jednaina dobija se naredbom NSolve a sistema
proizvoljnih jednaina naredbom FindRoot. Pritom je potrebno navesti dovoljno bliske
poetne aproksimacije da bi reenja mogla da se dobiju.

Solve@83 x ^2 + 6 y 4, x - y 3<, 8x, y<D

::y J-12 - 5 3 N, x J-3 - 5 3 N>, :y J-12 + 5 3 N, x J-3 + 5 3 N>>


1 1 1 1
3 3 3 3

NSolve@8x^2 + y ^2 5, x - y 1<, 8x, y<D


88x 2., y 1.<, 8x -1., y -2.<<

Grafiki prikaz reenja gornjeg sistema:


38 Numericka i programiranje 2015-16.nb

Solve@x ^2 + y ^2 5, yD

::y - 5 - x2 >, :y 5 - x2 >>

g1 = Plot@- Sqrt@5 - x ^2D, 8x, -Sqrt@5D, Sqrt@5D<D;


g2 = Plot@Sqrt@5 - x^ 2D, 8x, -Sqrt@5D, Sqrt@5D<D;
g3 = Plot@x - 1, 8x, -Sqrt@5D, Sqrt@5D<D;
Show@g1, g3D

-2 -1 1 2

- 0.5

- 1.0

- 1.5

- 2.0

H* Sa slike se vidi da je jedna tacka preseka H-1,-2L. *L

Show@g2, g3D

2.0

1.5

1.0

0.5

-2 -1 1 2

H* Druga tacka preseka je H2,1L. *L

FindRoot@8Sin@xD Cos@yD, x^2 + y^2 8<, 8x, 1<, 8y, 0.5<D


8x 2.62473, y -1.05394<

Kontrolna naredba While[test, proc]


izvrsava proc sve dok je ispunjen uslov test. Proc se sastoji od jedne ili niza naredaba.

n = 1;
While@n < 4, Print@nD; n ++D

Metod bisekcije
Primeniti metod bisekcije za nalaenje pribline vrednosti 2 koja se nalazi u intervalu [1,2].
Numericka i programiranje 2015-16.nb 39

M = 2;
a = 1.;
b = 2.;
k = 0;
eps = 10 ^-4;
While@b - a > eps,
x = Ha + bL 2.;
If@x^2 > M, b = x, a = xD;
k = k + 1D;
Print@k, " koren iz ", M , " je: ", xD

14 koren iz 2 je: 1.41425

Metod proste iteracije


Primeniti metod proste iteracije na reavanje jednaine x2 -2x-3=0.
Koreni jednaine su x1 =3, x2 =-1.

x0 = 4.;
For@k = 1, k < 10, k ++,
x1 = Sqrt@2 * x0 + 3.D;
x0 = x1;
Print@"xH", k, "L=", x1D
D
xH1L=3.31662

xH2L=3.10375

xH3L=3.03439

xH4L=3.01144

xH5L=3.00381

xH6L=3.00127

xH7L=3.00042

xH8L=3.00014

xH9L=3.00005

H* II nacin *L
x0 = 4.;
x1 = Sqrt@2. x0 + 3.D;
k = 0;
eps = 10 ^-4;
While@Abs@x1 - x0D > eps,
Print@k, " x=", x1D;
x0 = x1;
x1 = Sqrt@2. x0 + 3D;
k++;
D
40 Numericka i programiranje 2015-16.nb

0 x=3.31662

1 x=3.10375

2 x=3.03439

3 x=3.01144

4 x=3.00381

5 x=3.00127

6 x=3.00042

7 x=3.00014

Definisanje funkcije:

IME [argument_ ]:=IZRAZ.


Ovako definisana funkcija poziva se
imenom u okviru nekog drugog izraza za razliite vrednosti argumenta.

f@x_D := x ^2 - Log@xD;
Table@f@xD, 8x, 1, 2, 0.2<D

81., 1.25768, 1.62353, 2.09, 2.65221, 3.30685<

D@f@xD, xDH*Diferenciranje funkcije f po x. *L

1
- +2x
x

Njutnov metod: Primer 1


Primena Njutnovog metoda na nalaenje kvadratnog korena pozitivnog broja: x= a . Izvesti
metod i napisati program.

Clear@x, a, f, f1, x0D


f@x_D = x ^2 - a;
f1@x_D = D@f@xD, xD;
a = 10.;
x0 = H1. + aL 2.;
For@k = 1, k 5, k ++,
x1 = x0 - f@x0D f1@x0D;
Print@k, " x=", x1D;
x0 = x1D

FindRoot@f@xD, 8x, x0<DH*provera resenja*L


Numericka i programiranje 2015-16.nb 41

1 x=3.65909

2 x=3.19601

3 x=3.16246

4 x=3.16228

5 x=3.16228

8x 3.16228<

Naredba za prekid programa : Break@D

Primer 2
Njutnovim metodom nai pozitivan koren jednaine lnI3 x2 M + 5 x = 0 sa tanou 10- 5 . Uzeti
poetnu aproksimaciju x0 =0.5. Primeniti maksimalno n=10 iterativnih koraka.

Clear@x, a, f, f1, x0D


tac = 10 ^-5;
Plot@Log@3 x ^2D + Sqrt@5 xD, 8x, -5, 5<D
n = 10;
f@x_D = Log@3 x^2D + Sqrt@5 xD;
f1@x_D = D@f@xD, xD;
x0 = 0.5;
For@k = 1, k n, k ++,
x1 = x0 - f@x0D f1@x0D;
If@Abs@x1 - x0D < tac, Break@DD;
Print@k, " x=", x1D;
x0 = x1D

FindRoot@f@xD, 8x, x0<DH*provera resenja*L

-4 -2 2 4

-2

-4

1 x=0.268245

2 x=0.307247

3 x=0.309844

8x 0.309854<
42 Numericka i programiranje 2015-16.nb

Primer 3
Napisati program za izraunavanje reciprone vrednosti broja a pomou Njutnovog metoda. Nai
apsolutnu i relativnu gresku dobijene aproksimacije x6 . Neka poetna aproksimacija bude
x0 = a- 2 .

a = 12;
x0 = 1 a^2;
For@k = 1, k 6, k ++,
x1 = x0 + x0 H1. - a * x0L;
Print@"k=", k, " x=", x1D;
x0 = x1D
tacna = 1 a;
agr = Abs@x1 - tacnaD;
Print@"Apsolutna greska je : ", agrD
rgr = agr tacna;
Print@"Relativna greska je : ", rgrD

1. a H*provera resenja*L
k=1 x=0.0133102

k=2 x=0.0244944

k=3 x=0.0417891

k=4 x=0.0626223

k=5 x=0.078186

k=6 x=0.0830154

Apsolutna greska je : 0.000317944

Relativna greska je : 0.00381533

0.0833333
Numericka i programiranje 2015-16.nb 43

H* II nacin *L
Clear@x0, x, f, f1D
a = 12.;
x0 = 1 a^2;
f@x_D = a - 1 x;
f1@x_D = D@f@xD, xD;
For@k = 1, k 6, k ++,
x1 = x0 - f@x0D f1@x0D;
Print@"k=", k, " x=", x1D;
x0 = x1D
tacna = 1 a;
agr = Abs@x1 - tacnaD;
Print@"Apsolutna greska je : ", agrD
rgr = agr tacna;
Print@"Relativna greska je : ", rgrD

1. a
H*provera resenja*L
k=1 x=0.0133102

k=2 x=0.0244944

k=3 x=0.0417891

k=4 x=0.0626223

k=5 x=0.078186

k=6 x=0.0830154

Apsolutna greska je : 0.000317944

Relativna greska je : 0.00381533

0.0833333

Metod seice: Primer 1

Napisati program za reavanje nelinearnih jednaina metodom seice. Testirati na primeru


funkcije f(x)=x3 +2x2 +10x-20.
44 Numericka i programiranje 2015-16.nb

Clear@x0, x1D;
n = 20;
tac = 10 ^H-6L;
f@x_D = x ^3 + 2 * x^2 + 10 * x - 20.;
x0 = 2.;
x1 = 1.;
f0 = f@x0D;
For@k = 1, k n, k ++,
f1 = f@x1D;
raz = f1 - f0;
If@Abs@x1 - x0D < tac, Break@DD;
x2 = x1 - Hx1 - x0L f1 raz;
Print@k, " x=", x2D;
x0 = x1;
x1 = x2;
f0 = f1D
1 x=1.30435

2 x=1.37605

3 x=1.36867

4 x=1.36881

5 x=1.36881

FindRoot@f@xD, 8x, 1<D


8x 1.36881<

H*resenje While naredbom*L


Clear@x0, x1, xD;
tac = 10 ^H-6L;
f@x_D = x ^3 + 2 * x^2 + 10 * x - 20.;
x0 = 2.;
x1 = 1.;
f0 = f@x0D;
k = 0;
While@Abs@x1 - x0D > tac,
f1 = f@x1D;
raz = f1 - f0;
x2 = x1 - Hx1 - x0L f1 raz;
k++;
Print@k, " x=", x2D;
x0 = x1;
x1 = x2;
f0 = f1D
1 x=1.30435

2 x=1.37605

3 x=1.36867

4 x=1.36881

5 x=1.36881
Numericka i programiranje 2015-16.nb 45

Metod seice: Primer 2

Data je funkcija

f(x) = x3 + 2 x - Ln Hx + 4L.
Primeniti metod seice za nalaenje pribline vrednosti korena jednaine
f(x) = 0, koji se nalazi u intervalu (0, 4). Primeniti pet iterativnih koraka. Uporediti dobijeni rezultat
sa rezultatom koji se dobija korienjem naredbe FindRoot.

Clear@x0, x1, xD;


n = 5;
f@x_D = Sqrt@x ^3 + 2 xD - Log@x + 4D;
x0 = 0.;
x1 = 4.;
f0 = f@x0D;
For@k = 1, k n, k ++,
f1 = f@x1D;
raz = f1 - f0;
x2 = x1 - Hx1 - x0L f1 raz;
Print@k, " x=", x2D;
x0 = x1;
x1 = x2;
f0 = f1D

FindRoot@f@xD, 8x, 3<DH*provera resenja*L

1 x=0.711638

2 x=0.818179

3 x=0.902146

4 x=0.899066

5 x=0.899118

8x 0.899118<

Zadatak 1: Iterativni postupak za reavanje jednaine xr - a = 0 definisan je formu-

JHr - 1L xk + N,
lom
1 a
xk+ 1 = k=0,1,2,....
r xk r- 1
a+ r - 1
sa poetnom aproksimacijom x0 = . Napisati program kojim se pomou ovog metoda nalazi
r
priblino reenje jednaine x5 - 19 = 0. Predvideti najvie M = 10 iterativnih koraka. Proveriti
dobijeni rezultat naredbom FindRoot.
46 Numericka i programiranje 2015-16.nb

Clear@M, r, a, tac, x, x1, x0D


M = 10;
r = 5.;
a = 19;
tac = 10 ^-4;
x0 = Ha + r - 1L r;
For@i = 1, i M, i ++,
x1 = 1 r * HHr - 1L * x0 + a Hx0^Hr - 1LLL;
Print@"xH", i, "L= ", x1D;
If@Abs@x1 - x0D < tac, Break@DD;
x0 = x1;D

FindRoot@x ^5 - 19, 8x, 2<D

xH1L= 3.68849

xH2L= 2.97132

xH3L= 2.42581

xH4L= 2.05038

xH5L= 1.85531

xH6L= 1.80496

xH7L= 1.80199

xH8L= 1.80198

8x 1.80198<

7. Polinomske jednaine

Neka je dat polinom PHzL = a0 zn +a1 zn- 1 + ... + an . Tada se sve nule polinoma nalaze u krunom
prstenu (u kompleksnoj ravni) s poluprenicima
a
r = n , R= 1+ A ,

A = max 8 a1 , a2 , ..., an <, a = max 8 a0 , ..., an- 1 <.


a+ an a0

Zadatak 1. Pomou programskog paketa Mathematica, izvriti lokalizaciju svih nula datog
polinoma P = z4 + 2z3 + 3z2 + 4 z + 5.

n = 5;
p = 81., 2., 3., 4., 5.<;
bn = Delete@p, nD;H*brisanje n-tog clana*L
b0 = Delete@p, 1D;H*brisanje prvog clana*L
A = Max@b0D;
a = Max@bnD;
R = 1. + A Abs@p@@1DDD;
r = Abs@p@@nDDD Ha + Abs@p@@nDDDL;
Print@"r=", r, " R=", RD
r=0.555556 R=6.

Zadatak 2. Pomou programskog paketa Mathematica nacrtati grafik funkcije f(x)=x5 -3.5
x4 -2.5x3 +3x3 +1.5x-5. Izvriti lokalizaciju svih nula datog polinoma izraunavanjem poluprenika
Numericka i programiranje 2015-16.nb 47

-2.5 +3 +1.5x-5
kruga koji sadri sve nule, prema formuli
R = max1 i n |ai 1i ,
gde su ai koeficijenti polinoma P(z)=zn +a1 zn- 1 +...+an- 1 z+an . Za izraunavanje izraza xy (x,y R)
koristiti ekvivalenciju:
xy =eyLog@xD .

Plot@x ^5 - 3.5 x^4 - 2.5 x ^3 + 3 x^3 + 1.5 x - 5, 8x, 3.3, 3.6<D


n = 5;
a = 8- 3.5, -2.5, 3., 1.5, -5<;
R = 0.;
For@i = 1, i n, i++,
p = Exp@Log@Abs@a@@iDDDD iD;
If@Abs@pD R, R = pDD
Print@"R=", RD
40

30

20

10

3.35 3.40 3.45 3.50 3.55 3.60

R=3.5

Hornerova ema
Izraunavanje vrednosti polinoma pomou Hornerove eme.

Napisati program za izraunavanje vrednosti polinoma pomou Hornerove eme. Testirati na


primeru
4 3 2
pHzL = 3 z5 - 7 z - 5 z + z - 8 z + 2.

a = 83, -7, -5, 1, -8, 2<;


n = 5;
x = - 4.;
p = a@@1DD;
For@k = 2, k n + 1, k++,
p = p * x + a@@kDD
D;
Print@"x=", x, " P=", pD

x=- 4. P=- 4494.

Naredba cikline strukture Do


48 Numericka i programiranje 2015-16.nb

Ciklusi omoguavaju ponavljanje neke procedure odredjeni broj puta ili dok se ne ispuni izlazni
kriterijum.

Do[izraz, {i, imax}]


Do[izraz, {i, imin, imax, ikorak}]
Do[izraz, {n}]

Primer: P(x)=x4-2x3-7x2+8x+12, za vrednosti x=-2,-1,0,1,2.


Vektor koeficijenata je a={1,-2,-7,8,12}, stepen je n=4.

a = 81., -2., -7., 8., 12.<;


n = 4;
x = - 2.;
Do@p = a@@1DD;
Do@p = p * x + a@@iDD, 8i, 2, n + 1<D;
Print@"x=", x, " P=", pD;
x = x + 1., 85<D
x=- 2. P=0.

x=- 1. P=0.

x=0. P=12.

x=1. P=12.

x=2. P=0.

Program za reavanje ovog problema moe se napisati i na sledei nain:

Clear@"Global`"D;
a = 81., -2., -7., 8., 12.<;
x = - 2.;
Do@p = a@@1DD;
For@k = 2, k 5, k++,
p = p * x + a@@kDD
D;
Print@"x=", x, " P=", pD;
x = x + 1., 85<D
x=- 2. P=0.

x=- 1. P=0.

x=0. P=12.

x=1. P=12.

x=2. P=0.

8. Simboliko izraunavanje
Definisanje funkcije: IME [ARGUMENT_ ]:=IZRAZ. Ovako definisana funkcija poziva se
Numericka i programiranje 2015-16.nb 49

Definisanje funkcije: IME [ARGUMENT_ ]:=IZRAZ. Ovako definisana funkcija poziva se


imenom u okviru nekog drugog izraza za razlicite vrednosti argumenta.

f@x_D := 2 * Log@xD - x^2 + 5;


f@x + 3D

5 - H3 + xL2 + 2 Log@3 + xD

a = Hf@5D + f@3DL 2

H-24 + 2 Log@3D + 2 Log@5DL


1
2

N@aD
- 9.29195

Primer 3
Tabelirati funkciju h(x)=1+|x| na intervalu [-1,1] s korakom h=0.5 i nacrtati je.

h@x_D := If@x < 0, -x + 1, If@x 0, 1, x + 1DD;


Table@8x, h@xD<, 8x, -1, 1, 0.5<D
88- 1., 2.<, 8-0.5, 1.5<, 80., 1<, 80.5, 1.5<, 81., 2.<<

Plot@h@xD, 8x, -1, 1<D


2.0

1.8

1.6

1.4

1.2

- 1.0 - 0.5 0.5 1.0

Diferenciranje
Simboliko diferenciranje je jedna od osnovnih simbolikih operacija u Mathematica-i. Mogue je
odrediti izvode prvog i vieg reda elementarnih funkcija jedne promenljive, izvode sloenih
funkcija,
parcijalne izvode i totalne diferencijale.

D[f,x] - nalaenje prvog izvoda ili prvog parcijalnog izvoda funkcije f po promenljivoj x
D[f,{x,k}] - nalaenje (parcijalnog) izvoda reda k po promenljivoj x

D@ArcCos@xD, xD
1
-
1 - x2
50 Numericka i programiranje 2015-16.nb

D@Exp@x ^2 * Sin@xDD, xD

Ix2 Cos@xD + 2 x Sin@xDM


2
x Sin@xD

D@Sqrt@x ^2 - 3D, 8x, 3<D H* treci izvod funkcije*L


3 x3 3x

I- 3 + x2 M I-3 + x2 M
-
52 32

D@x * Sin@yD + x^2 * y, yD


x2 + x Cos@yD

Dt@x * Sin@yD + x^2 * yDH*totalni diferencijal*L


2 x y Dt@xD + x2 Dt@yD + x Cos@yD Dt@yD + Dt@xD Sin@yD

9. Interpolacija
Interpolacija podataka pomou polinoma u Mathematici se vri konstrukcijom Njutnovog intepola-
cionog polinoma sa podeljenim razlikama. Podaci se navode u parovima, gde je prva kompo-
nenta nezaisno promenljiva a druga komponenta vrednost funkcije: InterpolatingPolynomi-
al[lista, x].

Clear@aD; a = 88.1, 2<, 8.2, 6<, 8.3, 9<, 8.4, 2<<


880.1, 2<, 80.2, 6<, 80.3, 9<, 80.4, 2<<

pol = InterpolatingPolynomial@a, xD
2 + H-200. - 1500. H-0.2 + xLL H-0.4 + xL H-0.1 + xL

Expand@polD
TraditionalForm@Expand@polDD
6. - 110. x + 850. x2 - 1500. x3

- 1500. x3 + 850. x2 - 110. x + 6.

pol . x 2 H*izracunavanje za argument x=2*L


6.

Grafiko prikazivanje rezultata


Lista podataka prikazuje se direktivom ListPlot[lista]. Uz ovo se mogu dodati opcije, kao
to su razni stilovi. Poluprenik taaka koje se prikazuju moe se definisati pomou
PlotStyle -> AbsolutePointSize[5].
Numericka i programiranje 2015-16.nb 51

t1 = ListPlot@a, PlotStyle AbsolutePointSize@5DD

8
7

4
3

0.15 0.20 0.25 0.30 0.35 0.40

t2 = Plot@pol, 8x, 0, 0.5<D

0.1 0.2 0.3 0.4 0.5

-5

- 10

Show@t1, t2D H*zajednicko prikazivanje dva grafika*L

0.1 0.2 0.3 0.4

-5

- 10

Primer. Tabelirati funkciju f HxL = 1 I1 + x2 ) uzimajui za vorove take x0 = - 5, - 4, ..., 5 a zatim


interpolirati dobijenu tabelu podataka. Predstaviti grafiki funkciju f i njen interpolacioni polinom.

runge = 1. H1 + x^2L
1.
1 + x2

tab = Table@8x, runge<, 8x, -5, 5<D


88- 5, 0.0384615<, 8-4, 0.0588235<, 8-3, 0.1<, 8-2, 0.2<, 8-1, 0.5<,
80, 1.<, 81, 0.5<, 82, 0.2<, 83, 0.1<, 84, 0.0588235<, 85, 0.0384615<<

polr = InterpolatingPolynomial@tab, xD
0.0384615 + H5 + xL H0. + H-5 + xL
H-0.0384615 + x H-0.0115385 + H3 + xL H0.00384615 + H-3 + xL H0.000904977 + H4 + xL
H-0.000226244 + H-4 + xL H-0.000113122 + H1 + xL H0.0000678733 +
H-2 + xL H0.0000226244 - 0.0000226244 H2 + xLLLLLLLLLL

TraditionalForm@Expand@polrDD

- 0.0000226244 x10 + 0.00126697 x8 - 0.0244118 x6 + 0.197376 x4 - 0.674208 x2 - 2.77556 10- 17 x + 1.


52 Numericka i programiranje 2015-16.nb

Plot@8runge, polr<, 8x, -5, 5<D


2.0

1.5

1.0

0.5

-4 -2 2 4

10. Fitovanje krivih


Lista podataka moe se aproksimirati pomou metoda najmanjih kvadrata pri emu treba izabrati
skup funkcija za aproksimaciju: Fit[podaci, funkcije, promenljive].

a = 88.1, 2<, 8.2, 6<, 8.3, 9<, 8.4, 2<<


880.1, 2<, 80.2, 6<, 80.3, 9<, 80.4, 2<<

f1 = Fit@a, 81, x<, xD


4.+ 3. x

f2 = Fit@a, 81, x, x^2<, xD


- 9.75 + 140.5 x - 275. x2

g1 = ListPlot@a, PlotStyle AbsolutePointSize@5DD;


g2 = Plot@f1, 8x, 0, 0.5<D;
Show@g1, g2D

0.1 0.2 0.3 0.4 0.5


Numericka i programiranje 2015-16.nb 53

g3 = Plot@f2, 8x, 0, 0.5<D;


Show@g1, g3D

0.1 0.2 0.3 0.4 0.5

-5

- 10

Primer. Funkciju f HxL = ex tabelirati za vrednosti x = 0, 0.1, ..., 1 a zatim je aproksimirati pogod-
2

nim polinomom.

fe = Exp@x ^2D
2
x

Plot@fe, 8x, 0, 1<D

2.5

2.0

1.5

0.2 0.4 0.6 0.8 1.0

tabfe = Table@8x, Exp@x^2D<, 8x, 0, 1, 0.1<D


880., 1.<, 80.1, 1.01005<, 80.2, 1.04081<,
80.3, 1.09417<, 80.4, 1.17351<, 80.5, 1.28403<, 80.6, 1.43333<,
80.7, 1.63232<, 80.8, 1.89648<, 80.9, 2.24791<, 81., 2.71828<<

ffe2 = Fit@tabfe, 81, x, x^2<, xD


1.05463- 0.71283 x + 2.29883 x2

Plot@8fe, ffe2<, 8x, 0, 1<D

2.5

2.0

1.5

0.2 0.4 0.6 0.8 1.0


54 Numericka i programiranje 2015-16.nb

ffe3 = Fit@tabfe, 81, x, x^2, x^3<, xD


0.989726+ 0.318486 x - 0.405674 x2 + 1.803 x3

Plot@8fe, ffe3<, 8x, 0, 1<D

2.5

2.0

1.5

0.2 0.4 0.6 0.8 1.0

Primer: Data je lista podataka (0.24,0.23),(0.65,-0.26),(0.95,-1.10),(1.24,-0.45),(1.73,0.27),


(2.01,0.10), (2.23,-0.29), (2.52,0.24),(2.77,0.56),(2.99,1.00). Aproksimirati ove podatke a) lin-
earnom funkcijom, b) kvadratnim trinomom. Prikazati grafiki listu podataka i aproksimacioni
polinom.

a = 880.24, 0.23<, 80.65, -0.26<, 80.95, -1.10<, 81.24, -0.45<, 81.73, 0.27<,
82.01, 0.10<, 82.23, -0.29<, 82.52, 0.24<, 82.77, 0.56<, 82.99, 1.00<<;
gr1 = ListPlot@aD

1.0

0.5

1.0 1.5 2.0 2.5 3.0

- 0.5

- 1.0

c = Fit@a, 81, x, x^2, x^3<, xD


0.668328- 2.47973 x + 1.46734 x2 - 0.207882 x3
Numericka i programiranje 2015-16.nb 55

gr2 = Plot@c, 8x, 0, 3<D


0.8

0.6

0.4

0.2

0.5 1.0 1.5 2.0 2.5 3.0


- 0.2

- 0.4

Show@gr1, gr2D
1.0

0.5

0.5 1.0 1.5 2.0 2.5 3.0

- 0.5

- 1.0

11. Integracija
Nalaenje neodreenog integrala mogue je samo za neke klase podintegralnih funkcija
(racionalne i neke trigonometrijske, eksponencijalne i logaritamske). Primenom direktive
Integrate[ f, x]
dobija se izraz iji je izvod po x jednak f.

Integrate@Sin@2 xD, xD
1
- Cos@2 xD
2

Integrate@Hx ^2 + 1L Hx^4 + 1L, xD

J- ArcTanB1 -
1
2 xF + ArcTanB1 + 2 xFN
2

Integrate@x ^n, xD
x1+n
1+n

Integrate@x ^H-1L, xD
Log@xD

Primer. Nai neodreeni integral


x6
x i proveriti rezultat.
a + x2
2
56 Numericka i programiranje 2015-16.nb

Integrate@x ^6 Ha^2 + x ^2L, xD

- a5 ArcTanB F
a2 x3 x5 x
a4 x - +
3 5 a

D@%, xD
a4
a4 - a2 x2 + x4 -
x2
1+
a2

Simplify@%D
x6
a2 + x2

Odreeni integral nalazi se naredbom


Integrate[f, {x, xmin, xmax}]
U zagradi se navodi promenljiva po kojoj se vri integracija i granice. Slino se nalazi viestruki
integral.

Integrate@Sin@xD, 8x, 0, Pi<D


2

Plot@Sin@xD, 8x, 0, Pi<D


1.0

0.8

0.6

0.4

0.2

0.5 1.0 1.5 2.0 2.5 3.0

Integrate@x ^3, 8x, 0, 5<D


625
4

Plot@x ^3, 8x, -5, 5<D

100

50

-4 -2 2 4
- 50

- 100

Integrate@x y H1 + x^2L, 8x, 1, 2<, 8y, 0, 1<D

LogB F
1 5
4 2

12. Numerika integracija

Ukoliko reenje integrala ne moe da se nae u zatvorenoj formi, koriste se numeriki postupci
za odreivanje pribline vrednosti odreenog integrala.
Numericka i programiranje 2015-16.nb 57

za odreivanje pribline vrednosti odreenog integrala.


NIntegrate[f, {x, xmin, xmax}]
- numerika aproksimacija odreenog integrala funkcije f u granicama od xmin do xmax.

N[Integrate[f, {x, xmin, xmax}]


- integral se reava tano u delu koji je mogu a ostatak se reava numeriki.

NIntegrate[f, {x, xmin, xmax},{y, ymin, ymax}]


- priblina vrednost dvostrukog integrala

Integrate@Tan@Cos@xDD, 8x, 0, 1<D

Tan@Cos@xDD x
1

N@%D
1.16499

NIntegrate@Tan@Cos@xDD, 8x, 0, 1<D


1.16499

NIntegrate@1 Sqrt@xD, 8x, 0, 1<D


2.

NIntegrate@E^H-x^2L, 8x, 0, 1<D


0.746824

f Hx, yL = e- x cosIx2 + y 2 M
Primer. Nai zapreminu oblasti ograniene graficima krivih

gHx, yL = 3 - x2 + y 2
nad oblau [-1,1][-1,1].

Reenje: Najpre emo definisati ove funkcije i nacrtati njihove grafike.

f@x_, y_D := Exp@-xD Cos@x^2 + y^2D;


g@x_, y_D := 3 - x^2 + y^2;

grafikf = Plot3D@f@x, yD, 8x, -3, 3<, 8y, -3, 3<D


58 Numericka i programiranje 2015-16.nb

grafikg = Plot3D@g@x, yD, 8x, -3, 3<, 8y, -3, 3<D

Show@grafikf, grafikgD

zapremina = NIntegrate@g@x, yD - f@x, yD, 8x, -1, 1<, 8y, -1, 1<D
8.72898

Zadatak. Nacrtati grafik funkcije y=sin 3x/(1+cos2 x) na intervalu [0,p/2]. Zatim nai nulu funkcije
y, odnosno taku gde grafik see x-osu. Imajui na umu znak funkcije, izraunati povrinu
ogranienu ovom krivom i pravama y=0 i x=p/2.

y = Sin@3 xD H1 + Cos@xD^2L

Sin@3 xD
1 + Cos@xD2
Numericka i programiranje 2015-16.nb 59

Plot@y, 8x, 0, Pi 2<D

0.5

0.5 1.0 1.5

- 0.5

- 1.0

Plot@y, 8x, 1, 1.1<D


0.10

0.05

1.02 1.04 1.06 1.08 1.10

- 0.05

- 0.10

a = 1.047;
P = Integrate@y, 8x, 0, a<D - Integrate@y, 8x, a, Pi 2<D
0.709485

NP = NIntegrate@y, 8x, 0, a<D - NIntegrate@y, 8x, a, Pi 2<D


0.709485

TRAPEZNO PRAVILO. Primenom uoptene trapezne formule sa korakom h=0.8 izraunati


pribliznu vrednost integrala 0 x3 Ix2 + 9M
4 12
x. Izracunati apsoutnu i relativnu gresku dobijenog
aproksimativnog resenja.
60 Numericka i programiranje 2015-16.nb

Clear@Int, n, f, LD;
L = Integrate@x^3 * Sqrt@x ^2 + 9D, 8x, 0., 4<D
Print@"Tacna vrednost integrala je: ", LD
f@x_D := x^3 * Sqrt@x^2 + 9D;
h = 0.8;
a = 0.;
b = 4;
n = Hb - aL h;
xk = a;
Int = f@aD + f@bD;
For@k = 1, k n - 1, k++,
xk = xk + h;
Int = Int + 2 * f@xkDD;
Int = h * Int 2.;
Print@"Priblizna vrednost je ", IntD;
apsgreska = Abs@N@LD - IntD;
Print@"Apsolutna greska je ", apsgreskaD
Print@"Relativna greska je ", apsgreska LD

282.4

Tacna vrednost integrala je: 282.4

Priblizna vrednost je 297.886

Apsolutna greska je 15.4863

Relativna greska je 0.054838


Numericka i programiranje 2015-16.nb 61

gr1 = Plot@f@xD, 8x, 0, 4<D


a = Table@8x, f@xD<, 8x, 0, 4, 0.8<D
gr2 = ListPlot@a, PlotStyle AbsolutePointSize@5DD
Show@gr1, gr2D

300

250

200

150

100

50

880., 0.<, 80.8, 1.58968<, 81.6, 13.9264<,


1 2 3 4

82.4, 53.1101<, 83.2, 143.732<, 84., 320.<<

300

250

200

150

100

50

1 2 3 4

300

250

200

150

100

50

1 2 3 4

Zadatak. Primenom uoptene trapezne formule sa ukupno sedam (pedeset) vorova


izraunati duinu luka krive y=cos x na intervalu (0,p/2) i proceniti greku.
62 Numericka i programiranje 2015-16.nb

Clear@xD; g@x_D := -Sin@xD;


L = Integrate@Sqrt@1 + g@xD^ 2D, 8x, 0, Pi 2<D
EllipticE@- 1D

N@%D
1.9101

Clear@IntD;
f@x_D := Sqrt@1. + g@xD^ 2D;
n = 6;
a = 0.;
b = Pi 2;
h = Hb - aL n;
xk = a;
Int = f@aD + f@bD;
For@k = 1, k n - 1, k++,
xk = xk + h;
Int = Int + 2 * f@xkDD;
Int = h * Int 2.;
Print@"Priblizna vrednost luka krive je ", IntD;
greska = N@LD - Int;
Print@"greska je ", greskaD
Priblizna vrednost luka krive je 1.9101

greska je 1.70659 10-11

t = Table@8x, Cos@xD<, 8x, 0., Pi 2., Pi 12.<D

980., 1.<, 80.261799, 0.965926<, 80.523599, 0.866025<, 80.785398, 0.707107<,


81.0472, 0.5<, 81.309, 0.258819<, 91.5708, 6.12323 10-17 ==

gr = ListPlot@t, PlotStyle AbsolutePointSize@5DD


1.0

0.8

0.6

0.4

0.2

0.5 1.0 1.5


Numericka i programiranje 2015-16.nb 63

gr2 = Plot@Cos@xD, 8x, 0, Pi 2<D


1.0

0.8

0.6

0.4

0.2

0.5 1.0 1.5

Show@gr, gr2D
1.0

0.8

0.6

0.4

0.2

0.5 1.0 1.5

H* 50 cvorova*L

n = 49;
a = 0.;
b = Pi 2;
h = Hb - aL n;
xk = 0;
Int = f@aD + f@bD;
For@k = 1, k n - 1, k++,
xk = xk + h;
Int = Int + 2 * f@xkDD;
Int = h * Int 2;
Print@"Priblizna vrednost luka krive je ", IntD;
greska = N@LD - Int;
Print@"greska je ", greskaD
Priblizna vrednost luka krive je 1.9101

greska je - 6.66134 10-16

SIMPSONOVO PRAVILO. Napisati program za numeriko izraunavanje odreenog integrala


pomou Simpsonove formule. Uzeti za test primere 0 x x, 0
1 2 x
x za n=5 (ukupno 11
1+ e2 x
cvorova, tj. 10 podeoka).
64 Numericka i programiranje 2015-16.nb

ClearAll@"Global`*"D;
f@x_D = x H1 + Exp@2 * xDL;
L = Integrate@f@xD, 8x, 0., 2.<D
a = 0;
b = 2.;
n = 5;
h = Hb - aL H2 * nL;
int = f@aD + f@bD;
x1 = a + h;
x2 = a + 2 * h;
Do@int = int + 4 * f@x1D; x1 = x1 + 2 * h, 8i, 1, 2 n - 1, 2<D;
Do@int = int + 2 * f@x2D; x2 = x2 + 2 * h, 8i, 2, 2 n - 2, 2<D;
int = int * h 3;
Print@"Vrednost integrala po Simsonovoj formuli je ", intD
greska = N@LD - int;
Print@"greska je ", Abs@greskaDD
0.182909

Vrednost integrala po Simsonovoj formuli je 0.182908

greska je 4.49936 10-7


Numericka i programiranje 2015-16.nb 65

n = 5;
f@x_D = x H1 + Exp@2 * xDL;
t = Table@8x, f@xD<, 8x, 0., 2., 2 H2 * nL<D
gr = Plot@f@xD, 8x, 0, 2<D
gr2 = ListPlot@t, PlotStyle AbsolutePointSize@5DD
Show@gr, gr2D
880., 0.<, 80.2, 0.0802625<, 80.4, 0.12401<, 80.6, 0.138885<,
80.8, 0.134385<, 81., 0.119203<, 81.2, 0.0998072<, 81.4, 0.0802538<,
81.6, 0.0626652<, 81.8, 0.0478746<, 82., 0.0359724<<
0.14

0.12

0.10

0.08

0.06

0.04

0.02

0.5 1.0 1.5 2.0

0.14

0.12

0.10

0.08

0.06

0.04

0.02

0.5 1.0 1.5 2.0

0.14

0.12

0.10

0.08

0.06

0.04

0.02

0.5 1.0 1.5 2.0


66 Numericka i programiranje 2015-16.nb

13. Reavanje diferencijalnih jednaina


Klase obinih diferencijalnih jednaina i sistema diferencijalnih jednaina mogu se reiti
analitiki naredbom DSolve. Ako je dat poetni uslov, dobija se partikularno reenje.
Ako poetni uslov nije dat dobija se opte reenje.

H*PRIMER 1- DAT POCETNI USLOV*L

DSolve@8y'@xD A y@xD + 5 x, y@0D 1<, y@xD, xD

::y@xD I-5 + 5 A x + A2 A x - 5 A xM>>


1
A2
H*PRIMER 2- OPSTE RESENJE*L

DSolve@y '@xD A y@xD + 5 x, y@xD, xD

5 H1 + A xL
::y@xD - + A x C@1D>>
A2

H*PRIMER 3- DAT POCETNI USLOV*L

DSolve@8y'@xD Hx - y@xDL 2, y@0D 1<, y@xD, xD


99y@xD -x2 I3 - 2 x2 + x2 xM==

H*PRIMER 4 - SISTEM DIFERENC.JEDN.*L

DSolve@8x '@tD t, y'@tD t ^2<, 8x@tD, y@tD<, tD

::x@tD
t2 t3
+ C@1D, y@tD + C@2D>>
2 3

H*PRIMER 4 - SISTEM DIF.JEDN.*L

DSolve@8x '@tD x@tD + 2 y@tD, y'@tD 3 x@tD + 2 y@tD<, 8x@tD, y@tD<, tD

::x@tD -t I3 + 2 5 t M C@1D + -t I-1 + 5 t M C@2D,


1 2
5 5

-t I-1 + 5 t M C@1D + -t I2 + 3 5 t M C@2D>>


3 1
y@tD
5 5

Numeriko reavanje diferencijalnih jednaina

Numeriko reavanje obinih i parcijalnih


diferencijalnih jednaina i sistema jednaina vri se
naredbama:
NDSolve[jedn., f,{x, xmin, xmax}],
NDSolve[jedn., f,{x, xmin, xmax},{t, tmin, tmax}]
NDSolve[jedn., {f1 ,f2 ,...,fn }, {x, xmin, xmax}].
Jednaine se uvek piu sa zadatim poetnim uslovima.
Reenje se dobija u obliku interpolacione funkcije.
Numericka i programiranje 2015-16.nb 67

PRIMER: Reiti diferencijalnu jednainu prvog reda y'=y cos(x+y) s datim poetnim uslovom
y(0)=1.

s = NDSolve@8y '@xD == y@xD Cos@x + y@xDD, y@0D == 1<, y, 8x, 0, 30<D


88y InterpolatingFunction@880., 30.<<, <>D<<

Plot@Evaluate@y@xD . sD, 8x, 0, 30<, PlotRange AllD

1.0

0.8

0.6

0.4

0.2

5 10 15 20 25 30

Primer. Reiti datu diferencijalnu jednainu s poetnim uslovom i predstaviti grafiki dobijeno
aproksimativno reenje.
a) y'(x)=(x+sin(x)) 2 , y(0)=3.

pp = NDSolveA9y @xD Hx + Sin@y@xDDL2 , y@0D 3=, y, 8x, 0, 5<E


88y InterpolatingFunction@880., 5.<<, <>D<<

Plot@Evaluate@y@xD . sD, 8x, 0, 5<, PlotRange AllD

35

30

25

20

15

10

1 2 3 4 5

Primer (Kosijev problem drugog reda): Reiti diferencijalnu jednainu drugog reda y''+y sin
y=0, sa poetnim uslovom y(0)=1, y'(0)=0.

s = NDSolve@8y ''@xD + y@xD * Sin@y@xDD == 0, y@0D == 1, y'@0D == 0<, y, 8x, 0, 30<D


88y InterpolatingFunction@880., 30.<<, <>D<<

Grafiki predstaviti funkciju i prva dva izvoda.


68 Numericka i programiranje 2015-16.nb

Plot@Evaluate@8y@xD, y'@xD, y''@xD< . sD, 8x, 0, 30<, PlotStyle -> AutomaticD

5 10 15 20 25 30

-2

-4

Primer (konturni problem). Nai reenje diferencijalne jednaine y+y=0, koja zadovoljava
konturne uslove y(0)=1 i y(/2)=2.

DSolve@8y''@xD + y@xD 0, y@0D == 1, y@Pi 2D == 2<, y, xD


88y Function@8x<, Cos@xD + 2 Sin@xDD<<

Clear@yD; d = NDSolve@8y''@xD + y@xD 0, y@0D == 1, y@Pi 2D == 2<, y, 8x, 0, 2<D


88y InterpolatingFunction@880., 2.<<, <>D<<

Plot@Evaluate@y@xD . dD, 8x, 0, Pi 2<, PlotStyle -> AutomaticD


2.2

2.0

1.8

1.6

1.4

1.2

0.5 1.0 1.5

Primer: Reiti parcijalnu diferencijalnu jednainu provoenja toplote sa datim poetnim i kon-
turnim uslovima:
t u = xx u, uH0, xL = 0, uHt, 0L = sin t, uHt, 5L = 0, teH0, 10L.

NDSolve@8D@u@t, xD, tD == D@u@t, xD, x, xD, u@0, xD == 0,


u@t, 0D == Sin@tD, u@t, 5D == 0<, u, 8t, 0, 10<, 8x, 0, 5<D
88u InterpolatingFunction@880., 10.<, 80., 5.<<, <>D<<
Numericka i programiranje 2015-16.nb 69

Plot3D@Evaluate@u@t, xD . %D, 8t, 0, 10<, 8x, 0, 5<, PlotRange AllD

Ojlerov metod

Zadatak. Napisati program za primenu Ojlerovog metoda za reavanje datog Koijevog prob-
lema. Primeniti program za reavanje jednaine y'=x+y na intervalu [0,1] sa y(0)=1. Nai prib-
linu vrednost y(1) uzimajui za korak h= 0.1, 0.001. Reiti isti problem pomou naredbe DSolve
i uporediti rezultate.

Clear@x, y, hD;
f@x_, y_D = x + y;
n = 10;
x = 0.;
y = 1.;
h = 0.1;
For@k = 1, k n, k ++,
y1 = y + h * f@x, yD;
Print@k, " yH", x + h, "L=", y1D;
x = x + h;
y = y1D
1 yH0.1L=1.1

2 yH0.2L=1.22

3 yH0.3L=1.362

4 yH0.4L=1.5282

5 yH0.5L=1.72102

6 yH0.6L=1.94312

7 yH0.7L=2.19743

8 yH0.8L=2.48718

9 yH0.9L=2.8159

10 yH1.L=3.18748
70 Numericka i programiranje 2015-16.nb

Clear@xD; resf = DSolve@8g '@xD x + g@xD, g@0D 1.<, g, xD


88g Function@8x<, -1. + 2. x - 1. xD<<

g@1D . resf
83.43656<

b = Table@g@tD . resf, 8t, 0., 1., 0.1<D


881.<, 81.11034<, 81.24281<, 81.39972<, 81.58365<,
81.79744<, 82.04424<, 82.32751<, 82.65108<, 83.01921<, 83.43656<<

Primer. Napisati program za numeriko reavanje diferencijalnih jednaina pomou metoda


Heuna, definisanog algoritmom
h
yn+ 1 =yn + (k1 +k2 ),
2
k1 =f(xn ,yn ),
k2 =f(xn +h,yn +hk1 ).

y=HxyL3 -Hy xL3 , y(1)=1. Nai priblino y(1.2) uzimajui za korak h=0.1, 0.01.
Testirati na primeru diferencijalne jednacine

F@x_, y_D = Hx yL^3 - Hy xL^3;


h = 0.01;
x0 = 1.;
y0 = 1.;
n = 0.2 h;
Do@k1 = F@x0, y0D;
x0 = x0 + h;
k2 = F@x0, y0 + h * k1D;
y0 = y0 + h Hk1 + k2L 2., 8n<D;
Print@n, "yH1.1L=", y0D

20.yH1.1L=1.1405

NDSolve@8y'@xD == Hx y@xDL^3 - Hy@xD xL^ 3, y@1.D 1.<, y, 8x, 1., 1.2<D


88y InterpolatingFunction@881., 1.2<<, <>D<<

y@1.2D . %
81.14053<

RAZNI ZADACI

f HaL =
Primer. Funkcija
0 e
1 a 0.5 t 2
t,
2
zavisi od gornje granice integrala a. Nainiti tablicu vrednosti funkcije f kada se a menja od 0 do
2 sa korakom h=0.2. Za izraunavanje integrala primeniti numeriku integraciju u Mathematica .
Predstaviti grafiki dobijenu listu.
Numericka i programiranje 2015-16.nb 71

ClearAll;
fun@x_D = Exp@x ^2 2.D;
h = 0.1;
a = 0.;
n = 2 h;
erf = Table@0, 8i, n<D;
arg = Table@0, 8i, n<D;
Do@a = a + h;
erf@@iDD = NIntegrate@fun@xD, 8x, 0, a<D;
arg@@iDD = a, 8i, 1, n<D;
erf = erf Sqrt@2. PiD;
tabela = Transpose@8arg, erf<D;
ListPlot@tabelaD

1.5

1.0

0.5

0.5 1.0 1.5 2.0

Primer: Nai prevojnu taku funkcije f(x)=e- 2 x Log x.

F@x_D := Exp@-2 xD * Log@xD;


F1 = D@F@xD, 8x, 2<D
-2 x 4 -2 x
- - + 4 -2 x Log@xD
x2 x

Plot@F@xD, 8x, 1, 5<D


0.020

0.015

0.010

0.005

2 3 4 5
72 Numericka i programiranje 2015-16.nb

Plot@F1, 8x, 1, 5<D

2 3 4 5

- 0.02

- 0.04

- 0.06

FindRoot@F1 0, 8x, 2<D


8x 1.84825<

Primer: Fitovanje proizvoljnim funkcijama:

a = 88.1, 2<, 8.2, 6<, 8.3, 19<, 8.4, 42<<;


b = Fit@a, 81, Exp@xD<, xD
- 117.761 + 104.492 x

Show@ListPlot@a, PlotStyle AbsolutePointSize@5DD,


Plot@b, 8x, 0.1, 0.4<, PlotStyle RedDD

40

30

20

10

0.15 0.20 0.25 0.30 0.35 0.40

You might also like