Uvod u programiranje i softverski paketi -...
Transcript of Uvod u programiranje i softverski paketi -...
Univerzitet u Nišu
Građevinsko-arhitektonski fakultet
Milan Gocić
Predrag Rajković
Uvod u programiranje i
softverski paketi
Praktikum za laboratorijske vežbe
Niš, 2015.
dr Milan Gocić, dipl. inž. elektrotehnike
dr Predrag Rajković, dipl. matematičar
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
Izdavač: Građevinsko-arhitektonski fakultet, Univerzitet u Nišu
Aleksandra Medvedeva 14, Niš
Recenzenti: Dr Miomir Stanković, redovni profesor Fakulteta zaštite na radu
Univerziteta u Nišu
Dr Marko Petković, vanredni profesor Prirodno-matematičkog fakulteta
Univerziteta u Nišu
Za izdavača: Prof. dr Petar Mitković
Dizajn korica: Vladan Nikolić, dipl. inž. arh.
Odlukom Naučno-nastavnog veća Građevinsko-arhitektonskog fakulteta Univerziteta u
Nišu br. 8/247 od 28.01.2015. godine, rukopis je odobren za štampu kao pomoćni
udžbenik za predmet „Uvod u programiranje i softverski paketi“.
ISBN 978-86-88601-17-7
CIP - Каталогизација у публикацији
Народна библиотека Србије, Београд
004.42(075.8)(076)
004.42MATHEMATICA
ГОЦИЋ, Милан, 1977-
Uvod u programiranje i softverski paketi : praktikum za laboratorijske vežbe / Milan
Gocić, Predrag Rajković. - Niš : Građevinsko-arhitektonski fakultet, 2015 (Niš : Grafika
Galeb). - III, 200 str. : ilustr. ; 25 cm
Na vrhu nasl. str.: Univerzitet u Nišu. - Slike autora. - Tiraž 100. -
Autori: str. [203]. - Bibliografija: str. 201-202.
ISBN 978-86-88601-17-7
1. Рајковић, Предраг, 1959- [аутор]
a) Програмирање - Вежбе b) Апликативни програм "Mathematica"
COBISS.SR-ID 212923148
Tiraž: 100 primeraka
Štampa: Grafika Galeb, Niš
PREDGOVOR
Praktikum je namenjen studentima iz oblasti tehničko-tehnoloških nauka, a
kao pomoćni udžbenik koristiće se iz predmeta Uvod u programiranje i softverski
paketi na Građevinsko-arhitektonskom fakultetu u Nišu. Praktikumom je
obuhvaćen veliki broj primera koji se odnose na programski jezik Java i softverski
paket Mathematica.
Praktikumom je obuhvaćeno petnaest laboratorijskih vežbi, primer jedne
urađene vežbe, opisi integrisanog razvojnog okruženja Eclipse i softverskog paketa
Mathematica.
Recenzentima, dr Miomiru Stankoviću i dr Marku Petkoviću, dugujemo
posebnu zahvalnost za korisne savete i sugestije.
U Nišu, decembra 2014. godine
Autori
I
Sadržaj
Java
Integrisano razvojno okruženje Eclipse 9
Primer ispravno urađene laboratorijske vežbe 15
I vežba – Kodiranje izraza 19
1.1. Operator 20
1.2. Izraz i kodiranje izraza 21
II vežba – Linijska struktura 27
2.1. Algoritam 28
2.2. Linijska struktura 29
III vežba – Razgranata struktura 35
IV vežba – Ciklična struktura 45
4.1. Iterativni ciklus 46
4.2. Brojački ciklus 50
V vežba – Jednodimenzionalno polje 61
VI vežba – Dvodimenzionalno polje 69
VII vežba – Metoda 75
VIII vežba – Primena u građevinarstvu 85
Mathematica
IX vežba – Softverski paket Mathematica 91
9.1. Grafički korisnički interfejs paketa Mathematica 92
9.2. Tipovi podataka i aritmetičke operacije 93
9.3. Konstante 95
9.4. Promeljive 95
9.5. Relacioni i logički operatori 96
9.6. Matematičke funkcije 97
9.7. Korisnički definisane funkcije 98
X vežba – Linearna algebra 103
10.1. Vektori 104
10.2. Matrice 105
II
10.3. Sistem jednačina u matričnom obliku 107
10.4. Sopstvene vrednosti i sopstveni vektori 108
XI vežba – Simbolička izračunavanja 111
11.1. Algebarske transformacije 112
11.2. Sume i proizvodi 113
11.3. Rešavanje jednačina 114
11.4. Granične vrednosti 116
11.5. Diferenciranje 117
11.6. Diferencijalne jednačine 118
11.6.1. Diferencijalne jednačine I reda 118
11.6.1.1. Diferencijalne jednačine sa
razdvojenim promenljivama 118
11.6.1.2. Homogena diferencijalna jednačina 119
11.6.1.3. Linearna diferencijalna jednačina 120
11.6.1.4. Bernoullieva diferencijalna jednačina 120
11.6.1.5. Riccatieva diferencijalna jednačina 121
11.6.2. Linearne diferencijalne jednačine II reda 121
11.6.2.1. Homogena linearna diferencijalna
jednačina II reda sa konstantnim koeficijentima 121
11.6.2.2. Nehomogena linearna diferencijalna
jednačina II reda sa konstantnim koeficijentima 122
11.6.2.3. Homogena linearna diferencijalna
jednačina II reda sa funkcionalnim koeficijentima 122
11.6.2.4. Eulerova diferencijalna jednačina 123
11.6.2.5. Legendreova diferencijalna jednačina 123
11.6.2.6. Nehomogena linearna diferencijalna
jednačina II reda sa funkcionalnim koeficijentima 123
11.6.3. Linearne diferencijalne jednačine višeg reda 124
11.6.3.1. Homogena linearna diferencijalna
jednačina višeg reda sa konstantnim koeficijentima 124
11.6.3.2. Nehomogena linearna diferencijalna
jednačina višeg reda sa konstantnim koeficijentima 124
11.6.3.3. Homogena linearna diferencijalna
jednačina višeg reda sa funkcionalnim koeficijentima 125
11.6.3.4. Nehomogena linearna diferencijalna
jednačina višeg reda sa funkcionalnim koeficijentima 125
11.7. Integracija 125
XII vežba – Grafika 135
12.1. Dvodimenzionalna grafika 136
12.2. Opcije pri radu sa dvodimenzionalnom grafikom 137
12.3. Stilovi i boje 138
12.4. Iscrtavanje grafičkih primitive 139
12.5. Parametarski zadate krive 140
12.6. Crtanje oblasti u ravni 141
12.7. Trodimenzionalna grafika 142
III
12.8. Crtanje oblasti u prostoru 145
12.9. Prikazivanje skupova podataka i njihova analiza 146
XIII vežba – Upravljačke strukture 151
13.1. Uslovni izrazi 152
13.2. Ciklusi 155
13.2.1. Do ciklusi 155
13.2.2. While i For ciklus 155
XIV vežba – Potprogrami 161
14.1. Funkcijski potprogram 162
14.2. Opšti potprogram 162
14.3. Rekurzivna izračunavanja 164
XV vežba – Mathematica za više kurseve matematike 169
15.1. Brojni sistemi 170
15.2. Inverzne funkcije 171
15.3. Dvostruki integral 172
15.3.1. Dvostruki integral nad pravougaonikom 172
15.3.2. Dvostruki integral nad proizvoljnom oblasti u 2
173
15.3.3. Polarni koordinatni system 174
15.4. Trostruki integral 176
15.4.1. Trostruki integral nad proizvoljnom oblasti u 3 176
15.4.2. Određivanje zapremine trostrukim integralom 178
15.5. Krivolinijski integral 180
15.5.1. Krivolinijski integral I reda 180
15.5.2. Dužina luka krive 181
15.6. Površinski integral 181
15.6.1. Površinski integral I reda 181
15.6.2. Površina i zapremina rotacionog tela 183
15.7. Redovi 184
15.7.1. Ispitivanje konvergencije redova 184
15.7.2. Stepeni red 185
15.7.3. Razvoj funkcije u red 185
15.7.4. Furijeov red 186
15.8. Crtanje polja i tokova 191
15.9. Laplasova transformacija 191
15.10. Parcijalne diferencijalne jednačine 195
15.10.1. Parcijalne diferencijalne jednačine I reda 195
15.10.1.1. Linearna homogena parcijalna
diferencijalna jednačina 195
15.10.1.2. Kvazilinearna parcijalna
diferencijalna jednačina 197
15.10.1.3. Nelinearna parcijalna
diferencijalna jednačina 198
Literatura 201
Cilj
Upoznavanje sa okruženjem za izradu laboratorijskih vežbi u Javi
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
10
Eclipse
Za pisanje konzolnih aplikacija na programskom jeziku Java koristiće se Eclipse,
integrisano razvojno okruženje (Integrated Development Environment, IDE) otvorenog
kôda. Zamišljen je da se koristi kao razvojno okruženje Java programskog jezika i sastoji
se od java razvojnih alata (Java Development Tools, JDT). Može se proširiti instaliranjem
dodatnih aplikacija (engl. plugins).
Kreiranje konzolne aplikacije
Postoje tri načina za kreiranje Java projekta:
1. Selektovanje File -> New -> Project,
2. Selektovanje strelice sa dugmeta , a nakon toga Project,
3. Desnim tasterom miša pritisnite na Package Explorer u Java Perspective pogledu i
izaberite Project.
Izaberite Java Project i pritisnite Next.
Uvod u Javu
11
Imenujte projekat npr. Primer. Ako želite da kreirate src i bin direktorijume za java i class
fajlove izaberite Create separate source and output folders radio dugme iz Project
layout dela New Java Project dijaloga. Podrazumevani direktorijum izvornog koda je src/
a za izlazne rezultate bin/. Možete promeniti ove podrazumevane direktorijume izborom
Configure default.... Pritisnite Next dugme.
Sledeći prozor sadrži četiri jezička: Source, Projects, Libraries i Order and Export.
Jezičak Source postavlja izvorni i izlazni direktorijum Java fajlova i klasa. Jezičak Project
dozvoljava povezivanje novog Java projekta sa bilo kojim ranije kreiranim java projektom.
Jezičak Libraries omogućava umetanje jar fajlova i Java biblioteka. Jezičak Order and
Export određuje redosled povezivanja fajlova i kako se projekat može izvoziti za druge
aplikacije. Nakon unetih promena pritisnuti dugme Finish. Projekat se prikazuje u
Package Explorer pogledu.
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
12
Kreiranje programa u Javi
Koraci za kreiranje izvorne datoteke (programa) su:
1. Da bi se kreirao Java fajl iz glavnog menija treba izabrati File -> New -> Class.
2. Uneti ime klase, na primer Prvi.
3. Izabrati public static void main(String[] args)
4. Pritisnite dugme Finish.
5. Uneti program, na primer:
public class Prvi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Java");
}
}
Uvod u Javu
13
6. Da bi se izvršio program iz glavnog menija izabrati Run -> Run As -> Java
Application
7. U prozoru Console videćete rezultate. Ukoliko nemate ovaj prozor izaberite iz glavnog
menija Windows -> Show View -> Console.
Cilj
Upoznavanje sa načinom prikaza laboratorijske vežbe
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
16
Univerzitet u Nišu
Građevinsko-arhitektonski fakultet
Uvod u programiranje i softverski paketi
Student: Pera Perić Broj indeksa: 12/FG
Grupa: I Datum izrade vežbe: 15.04.2014.
Overa: Datum overe vežbe:
Vežba broj 1
I grupa
Sastaviti algoritam i napisati program za izračunavanje zbira dva realna broja a i b
(c = a + b). Na izlazu štampati rezultat c.
Algoritam:
Primer ispravno urađene laboratorijske vežbe
17
Program:
package programiranje;
/*
* U zadatku se na osnovu uneta dva realna broja a i b
* nalazi njihov zbir c = a + b.
*/
import java.io.*;
public class Zadatak {
public static void main(String[] args) throws Exception{
// Deklarisanje promenljivih a, b, c
double a, b, c;
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Unos vrednosti promenljivih a i b
System.out.println("Unesite realan broj a:");
a = Double.parseDouble(ulaz.readLine());
System.out.println("Unesite realan broj b:");
b = Double.parseDouble(ulaz.readLine());
// Izračunavanje zbira dva realna broja a i b
c = a + b;
// Štampanje izlaznog rezultata
System.out.println("Vrednost dobijenog zbira je " + c);
}
}
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
18
Izlazni rezultati:
Unesite realan broj a:
34.5
Unesite realan broj b:
1.2
Vrednost dobijenog zbira je 35.7
Cilj vežbe
Upoznavanje sa operatorima u Javi
Upoznavanje sa elementarnim matematičkim funkcijama
Kodiranje izraza
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
20
Teorijske osnove za izradu vežbe
1.1. Operator
Operator je simbol kojim se ukazuje kompajleru koju vrstu matematičke operacije treba
da izvede.
U tabeli 1.1 dat je pregled aritmetičkih operatora koji se koriste u programskom jeziku
Java.
Tabela 1.1. Aritmetički operatori
Operator Značenje Primer zapisa
+ Sabiranje x + y
– Oduzimanje x – y
* Množenje x * y
/ Deljenje x / y
% Moduo x % y
++ Inkrement x++ ili ++x
– – Dekrement x– – ili – –x
U tabeli 1.2 prikazani su relacioni operatori. Izlazni rezultat relacionih operatora je tipa
boolean.
Tabela 1.2. Relacioni operatori
Operator Značenje Primer zapisa
= = Jednako x = = y
!= Nejednako x != y
> Veće od x > y
< Manje od x < y
>= Veće od ili jednako x >= y
<= Manje od ili jednako x <= y
Logički operatori (tabela 1.3) se odnose na poređenje logičkih tipova podataka i kao
rezultat dobijaju se podaci tipa boolean.
Tabela 1.3. Logički operatori
Operator Značenje Primer zapisa
& Logičko I (AND) x & y
| Logičko ILI (OR) x | y
^ Isključivo ILI (XOR) x ^ y
! Logičko NE (NOT) !x
Operator dodele predstavlja se jednostrukim znakom jednakosti (=). Opšti oblik primene
operatora dodele izgleda
I vežba – Kodiranje izraza
21
promenljiva = izraz;
pri čemu tip promenljive mora biti kompatibilan tipu izraza.
Primer 1.1. Napisati naredbe dodele kojima se realizuje sledeće:
a) Logičkoj promenljivoj p dodeliti vrednost true, ako se od odsečaka sa dužinama x, y, z
može konstruisati trougao.
b) Logičkoj promenljivoj p dodeliti vrednost true, ako se pravougaonik sa stranicama a i
b može ceo smestiti u pravougaonik sa stranicama c i d.
Rešenje:
a) p = (x + y > z) && (x + z > y) && (y + z > x)
b) p = ((a < c) && (b < d)) || ((a < d) && (b < c))
1.2. Izraz i kodiranje izraza
Zapis postupka kojim se definiše dobijanje (izračunavanje) jednog rezultujućeg podatka na
osnovu jednog ili više podataka zove se izraz. Prema vrsti podataka nad kojima se vrši
izračunavanje izraz može biti:
aritmetički,
znakovni,
logički i
relacijski.
Aritmetički izraz se piše na sličan način kao što je to uobičajeno u matematici i sastoji se
od argumenata i aritmetičkih operacija. Argument može biti konstanta i/ili promenljiva.
Znakovni izrazi dobijaju se povezivanjem znakovnih veličina.
Logički izraz je zapis postupka kojim se na osnovu jednog ili više argumenata izračunava
jedna logička vrednost (true ili false). Argument logičkog izraza može biti: logička
konstanta, logička promenljiva, element logičkog niza, relacijski izraz i logički izraz
zapisan između zagrada. Logički izraz može biti zapisan u najprostijem obliku kao jedan
argument, a složeniji zapisi se dobijaju primenom logičkih operacija.
Relacijski izraz je sastavljen od dva aritmetička izraza između kojih se piše relacijski znak.
Vrednost relacijskog izraza je logička konstanta. Relacijski izraz ima vrednost true ako su
aritmetički izrazi u zadatoj relaciji, u suprotnom vrednost relacijskog izraza je false.
U mnogim matematičkim i inženjerskim zadacima zahteva se izračunavanje elementarnih
funkcija za zadate vrednosti argumenta. U matematici je ovaj problem rešavan
pronalaženjem formula po kojima se mogu izračunavati tablice za elementarne
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
22
matematičke funkcije. To se najčešće vršilo razvijanjem funkcije u stepene redove ili
primenom iteracionih formula. Razvojem računarstva pojavili su se algoritmi kojima se
može izračunati vrednost elementarne matematičke funkcije sa zadatom tačnošću.
Algoritmi za izračunavanje elementarnih matematičkih funkcija nalaze se u obliku funkcija
u okviru paketa java.lang i po pozivu programa u Javi uključuju se u program korisnika.
Tako su ove funkcije uvek na raspolaganju za korišćenje od strane programa korisnika, pa
se kaže da su to unutrašnje ili ugrađene funkcije. Poziv metode za izračunavanje
elementarne matematičke funkcije u Javi vrši se sa
Math.funkcija(a);
gde su:
Math – klasa paketa java.lang,
funkcija – ime elementarne matematičke funkcije,
a – aritmetički izraz, čija se vrednost uzima kao argument funkcije.
U klasi Math paketa java.lang deklarisane su dve konstante tipa double:
E = 2.718281828459045
PI = 3.141592653589793
i matematičke funkcije prikazane u tabeli 1.4.
Tabela 1.4. Matematičke funkcije
Povratni tip Ime funkcije Formalni argumenti Opis funkcije
double abs() double x apsolutna vrednost
double acos() double x arkus kosinus
double asin() double x arkus sinus
double atan() double x arkus tangens
double cos() double x kosinus
double cosh() double x hiperbolički kosinus
double exp() double x eksponencijalna vrednost
double log() double x prirodni logaritam
double log10() double x logaritam sa osnovom 10
double pow() double x, double y x na stepen y
double sin() double x sinus
double sinh() double x sinus hiperbolički
double sqrt() double x kvadratni koren
double tan() double x tangens
double tanh() double x tangens hiperbolički
double toRadians() double x prevodi stepene u radijane
double toDegrees() double x prevodi radijane u stepene
I vežba – Kodiranje izraza
23
Pod kodiranjem izraza podrazumeva se proces prevođenja matematičkog izraza na jezik
koji prepoznaje računar. U Javi za prevođenje izraza koriste se operatori i matematičke
funkcije.
Pri kodiranju matematičkih izraza postoje tri specijalna slučaja:
1. Predstavljanje stepena argumenta funkcije: Na primer, ukoliko je argument
funkcije sinus trećeg stepena, imaće izraz sledeći oblik
3sin( ) .sin( . ( ,3))x Math Math pow x
2. Predstavljanje stepena funkcije: Na primer, ukoliko je funkcija sinus trećeg
stepena, imaće izraz sledeći oblik
3sin ( ) . ( .sin( ),3)x Math pow Math x
3. Predstavljanje korena funkcije koji nije kvadratni: Na primer, ukoliko je
potrebno predstaviti peti koren kvadrata promenljive x, imaće izraz sledeći oblik
2
5 2 5 . ( ,2.0 / 5.0)x x Math pow x
Primer 1.2. Kodirati sledeće izraze:
a) 2ln sin cos2
xx
a e b arctg
,
b) 2 cos
ln 0,2 ,xy
ytg x
e
c)
3
2 2
sin
ln (sin )
x x
x
.
Rešenje:
a) Math.log(Math.sqrt(Math.abs(Math.sin(a + Math.exp(x / 2)
+ Math.cos(b – Math.atan(x / 2)))))
b) Math.log(Math.sqrt(Math.pow(Math.tan(x), 2) + 0.2
+ Math.cos(y) / Math.exp(x * y)))
c) Math.sqrt(Math.sin(Math.sqrt(x)) + Math.pow(x, 3))
/ Math.pow(Math.log(Math.sin(x * x)), 2)
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
24
Primer 1.3. Kodirati sledeće aritmetičke izraze:
a) 2 3sin xy x e ,
b) 2
ya
z xb
.
Rešenje:
a) y = Math.sin(x + Math.exp(2 * x + 3))
b) z = x * Math.pow(2 * a / b, y)
Zadaci za vežbu
I grupa
Kodirati sledeće aritmetičke naredbe:
sin( )2
x yz x y
x y,
2sin
3,8cos
x
x
e xy
x e.
II grupa
Kodirati sledeće aritmetičke naredbe:
3 2 22 5sin ( ) y x x ,
2
3
4
1
35
xy
x
x
x
.
I vežba – Kodiranje izraza
25
III grupa
Kodirati sledeće aritmetičke naredbe:
23
2
x a y xz
x x a,
2
3
y
baz x a
b.
IV grupa
Kodirati sledeće aritmetičke naredbe:
a b
ya
cb
,
3 2
2 2(2 sin )cos
sin cos
ay a b a b
a b b.
V grupa
Kodirati sledeće aritmetičke naredbe:
1 2 3 42 4 8 16 ,x x x xy
4 2sin
cos .x x
y xx
VI grupa
Kodirati sledeće aritmetičke naredbe:
33
4 2
0,36 13,2 ,
2,3
x xy x
x x
24,2 1 .xy x x e
VII grupa
Kodirati sledeće logičke naredbe:
( ) ( ),z x y x y
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
26
3
220 sin 2 1 3 0.
2
x xy x x x
x
VIII grupa
Kodirati sledeće aritmetičke naredbe:
2 23 sin cos ,xy x e x x
3 3cos sin .
2
x xe ey x x
IX grupa
Kodirati sledeću aritmetičku i logičku naredbu:
2
2
2
13
11 5
xy
x
x
x
,
( ) .z x y x y
X grupa
Kodirati sledeće aritmetičke naredbe:
2sin 3
3
ln(cos )
2 sin
xe xy
x x,
5 3
3 3
2
1
x
xy
x e.
Cilj vežbe
Upoznavanje sa pojmom algoritam
Predstavljanje algoritma blok šemom
Upoznavanje sa linijskom programskom strukturom
Implementacija linijske programske strukture
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
28
Teorijske osnove za izradu vežbe
2.1. Algoritam
Algoritam je potpuno i precizno definisana procedura koja uzima jednu ili više ulaznih
vrednosti i daje jednu ili više izlaznih vrednosti. Te vrednosti se zovu ulazni i izlazni
podaci algoritma. Algoritam je konačni niz logičnih koraka potrebnih da se reši neki
problem, dok je program algoritam zapisan na nekom programskom jeziku.
Za opis algoritma blok šemom koriste se grafički simboli koji su povezani orijentisanim
dužima (tabela 2.1). Tekst koji opisuje obradu se zapisuje unutar grafičkih simbola. Tok
izvršenja algoritma se opisuje linijama koje povezuju grafičke simbole.
Tabela 2.1. Grafički prikaz simbola za označavanje dijagrama toka programa
Grafički simbol Opis
Granično mesto (početak, kraj, prekid). Upotrebljava se za
predstavljanje početka i kraja postupka, procedure, procesa,
kao i prekida ili odlaganja procesa.
Konektor (veznik). Ulazna ili izlazna priključna tačka
između prekinutih linija toka programa.
Ulaz. Unos podataka preko ulazne jedinice (instrukcije
ulaza).
Izlaz. Izlaz podataka preko izlazne jedinice (instrukcije
izlaza).
Obrada (operacija, proces, radnja). Izvršenje operacije ili
grupe operacija (instrukcije obrade).
Odluka (uslovno grananje). Izbor pravca izvršenja
algoritma zavisi od uslova (instrukcije provere uslova).
Modifikacija programa. Izvršenje operacija kojima se
menjaju naredbe programa.
Poziv potprograma. Izvršavanje potprograma prethodno
zapisanog izvan glavnog programa (instrukcija poziva
potprograma).
Linija toka (vezna linija). Prikazivanje redosleda veza
između blokova.
Spajanje. Mesto spajanja dve linije.
Grananje. Jedna dolazna i više odlaznih grana.
Komentar (napomena). Objašnjenje, odnosno dodatni
komentar ili kratko tumačenje operacije.
Pod algoritamskom (programskom) strukturom podrazumevamo više koraka (naredbi
programskog jezika) koji čine jednu celinu. Postoje tri elementarne algoritamske strukture:
II vežba – Linijska struktura
29
1. linijska,
2. razgranata i
3. ciklična.
2.2. Linijska struktura
Naredbe koje se pri izvršavanju programa uvek izvršavaju u navedenom
redosledu čine linijsku strukturu. Nakon izvršenja jedne naredbe
prelazi se na izvršenje naredbe koja neposredno sledi u programu (slika
2.1).
Linijski programi su programi u kojima se javljaju naredbe ulaza,
obrade i izlaza. Ovi programi imaju smisla u slučajevima kada za
različite vrednosti ulaznih veličina treba izvršiti složena izračunavanja.
Slika 2.1. Linijska struktura
Primer 2.1. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije
4
2
x y xf
x x y
na osnovu unetih vrednosti za x i y. Na izlazu štampati vrednost funkcije f.
Rešenje:
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
/*
U zadatku se na osnovu uneta dva realna broja x i y
izračunava vrednost funkcije f.
*/
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
30
public class LinijskaStruktura1 {
public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("###,##0.00");
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Deklarisanje promenljivih x, y, f
double x, y, f;
// Unos vrednosti promenljivih x i y
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za y: ");
y = Double.parseDouble(ulaz.readLine());
// Izračunavanje vrednosti funkcije f
f = Math.pow((x + y) / (2 * x), 4) - x / (x - y);
// Štampanje izlaznog rezultata
System.out.println("Vrednost funkcije f je " + df.format(f));
}
}
Izlazni rezultati:
Unesite vrednost za x: 2.5
Unesite vrednost za y: 3.6
Vrednost funkcije f je 4.49
Primer 2.2. Tačka se kreće pravolinijski po zakonu 3 22 4 8 3, s t t t gde je put s
meren u metrima, a vreme t u sekundama. Sastaviti algoritam i napisati program za
izračunavanje kinematičkih veličina u trenutku t = 5 s.
Rešenje:
Kinematičke jednačine kretanja su:
3 22 4 8 3 s t t t 2( ) 6 8 8
v s t t t ( ) 12 8.
a v t t
U trenutku 5t s biće 2193 , 118 / , 52 / .s m v m s a m s
II vežba – Linijska struktura
31
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
/*
U zadatku se na osnovu kinematičkih jednačina kretanja i
unete vrednosti vremena t izračunavaju vrednosti kinematičkih veličina.
*/
public class LinijskaStruktura2 {
public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("#.###");
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Deklarisanje promenljivih s, v, a, t
double s, v, a, t;
// Unos vrednosti za vreme t
System.out.print("Unesite vrednost za vreme t (s): ");
t = Double.parseDouble(ulaz.readLine());
// Izračunavanje pređenog puta, brzine i ubrzanja
s = 2 * t * t * t - 4 * t * t + 8 * t + 3;
v = 6 * t * t - 8 * t + 8;
a = 12 * t - 8;
// Štampanje izlaznih rezultata
System.out.println("Vrednost pređenog puta je s = " + df.format(s)
+ " m.");
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
32
System.out.println("Vrednost brzine je v = " + df.format(v) + " m/s.");
System.out.println("Vrednost pređenog puta je a = " + df.format(a)
+ " m/s2.");
}
}
Izlazni rezultati:
Unesite vrednost za vreme t (s): 5
Vrednost pređenog puta je s = 193 m.
Vrednost brzine je v = 118 m/s.
Vrednost pređenog puta je a = 52 m/s2.
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program za izračunavanje obima i površine kvadrata za unetu
vrednost stranice a.
II grupa
Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a, b
i c izračunava vrednost izraza
3 5 4
cd ab a
b.
III grupa
Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za
izračunavanje dužine simetrale stranice a
2 2 21
2( )2
am b c a .
IV grupa
Sastaviti algoritam i napisati program za prevođenje ugla zadatog u radijanima u stepene,
ako važi 180
.radstep
II vežba – Linijska struktura
33
V grupa
Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za
izračunavanje dužine simetrale ugla iz temena A
2 21
(( ) ).
AL b c b c ab c
VI grupa
Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a i
b izračunava vrednost izraza
1
23
a bc
a
b
b
VII grupa
Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a,
b, c i x izračunava vrednost izraza
3 2
2 2 2
cos sin.
x b xy
a b c
VIII grupa
Krug je zadat poluprečnikom r i centralnim uglom α koji je zadat u stepenima. Sastaviti
algoritam i napisati program za izračunavanje:
dužine luka 2
,360
rl
površine isečka
2
.360
rP
IX grupa
Sastaviti algoritam i napisati program kojim se prevodi temperatura iz skale Celzija u skalu
Farenhajta prema formuli
temperatura_po_Farenhajtu = temperatura_po_Celziju 1,80 + 32.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
34
X grupa
Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za
izračunavanje poluprečnika opisanog kruga
,4
a b cR
P
pri čemu je ( ) ( ) ( ), .2
a b cP s s a s b s c s
Cilj vežbe
Upoznavanje sa razgranatom programskom strukturom
Implementacija razgranate programske strukture
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
36
Teorijske osnove za izradu vežbe
Razgranata struktura je programska struktura koja omogućuje grananja u programu, tako
da se pri izvršavanju programa prolazi samo kroz jednu od mogućih grana. Broj grana u
razgranatoj strukturi može biti različit (dve, tri ili više), što zavisi od naredbe prelaska
kojom se ostvaruje grananje u programu.
If iskaz spada u blokovski uslovni prelazak, jer omogućuje da se u svakoj grani razgranate
strukture može nalaziti blok naredbi. Uslov po kome se vrši prelazak predstavlja logički
izraz čija vrednost može biti true ili false.
Grananje koje se vrši ispitivanjem vrednosti logičkog izraza je binarno dvoznačno sa
granama koje se zovu potvrdna grana za istinitu vrednost logičkog izraza (na grafičkom
prikazu označena sa da) i odrečna grana (označena sa ne).
Sintaksa if-else strukture ima oblik
if (uslov) {
B1
}
else {
B2
}
Slika 3.1. If-else struktura
Ako je vrednost izraza true, izvršava se blok naredbi B1 koji sledi iza naredbe prelaska if,
u suprotnom se izvršava blok naredbi B2 koji se piše iza rezervisane reči else (slika 3.1). U
slučaju da ne postoji blok B2, tada ne treba pisati rezervisanu reč else. Sintaksa ove
strukture ima oblik
if (uslov) {
B1
}
Slika 3.2. If struktura
U slučaju if strukture u odrečnoj grani ne postoje naredbe već se vrši samo prelazak na kraj
if naredbe (slika 3.2).
III vežba – Razgranata struktura
37
Na slici 3.3 prikazana je struktura u kojoj se u odrečnoj grani if-else strukture nalazi druga
if-else struktura. Za ovakvu strukturu if naredbi kaže se da su ugneždene if naredbe.
Slika 3.3. If-else-if struktura
Sintaksa if-else-if strukture ima oblik
if (uslov1) {
B1
}
else if (uslov2) {
B2
}
else {
B3
}
Primer 3.1. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost
promenljive x izračunava vrednost funkcije
5, 0,
, 0.
x xy
x x
Na izlazu štampati rezultat oblika
Za uneto X = xxx.xxx dobija se Y = xxx.xxx.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
38
Rešenje:
package programiranje;
import java.io.*;
/*
U zadatku se na osnovu unetog realnog broja x
korišćenjem razgranate strukture izračunava vrednost funkcije y.
*/
public class IfElseStruktura {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Deklarisanje promenljivih x i y
double x, y;
// Unos vrednosti promenljive x
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
if (x >= 0)
y = x + 5;
else y = -x;
// Štampanje izlaznog rezultata
System.out.println("Za uneto X = " + x + " dobija se Y = " + y);
}
}
III vežba – Razgranata struktura
39
Izlazni rezultati:
Unesite vrednost za x: -26.3
Za uneto X = -26.3 dobija se Y = 26.3
Primer 3.2. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije
, 2,
2, 2 3,
1, 3.
x x
y x
x x
Za unetu vrednost promenljive x, štampati vrednost argumenta i vrednost funkcije.
Rešenje:
package programiranje;
import java.io.*;
/*
U zadatku se na osnovu unetog realnog broja x
korišćenjem razgranate strukture izračunava vrednost funkcije y.
*/
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
40
public class UgnezdenoIf {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Deklarisanje promenljivih x i y
double x, y;
// Unos vrednosti promenljive x
System.out.print("Unesite vrednost za x: ");
x = Double.parseDouble(ulaz.readLine());
// Primena razgranate strukture
if (x < 2)
y = x;
else if (x < 3)
y = 2.0;
else y = x - 1;
// Štampanje izlaznog rezultata
System.out.println("Za uneto X = " + x + " dobija se Y = " + y);
}
}
Izlazni rezultati:
Unesite vrednost za x: 2.5
Za uneto X = 2.5 dobija se Y = 2.0
Primer 3.3. Sastaviti algoritam i napisati program tako da se na osnovu dužine svetlog
otvora stambene prostorije (k0) u pravcu nosećih greda formira pokretno opterećenje u
stambenim zgradama prema sledećoj tabeli:
Dužina svetlog otvora Pokretno opterećenje
k0 < 4,5 m p = 1,25 kN/m2
4,5 ≤ k0 < 5,5 m p = 1,5 kN/m2
k0 ≥ 5,5 p = 2,0 kN/m2
III vežba – Razgranata struktura
41
Rešenje:
package programiranje;
import java.io.*;
/*
U zadatku se na osnovu unete dužine svetlog otvora stambene prostorije
izračunava pokretno opterećenje.
*/
public class Primer3 {
public static void main(String[] args) throws Exception {
// Deklarisanje promenljivih k0 i p
double k0, p;
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Unos vrednosti promenljive k0
System.out.print("Unesite vrednost za dužinu svetlog otvora k0: ");
k0 = Double.parseDouble(ulaz.readLine());
// Određivanje pokretnog opterećenja
if (k0 < 4.5)
p = 1.25;
else if (k0 < 5.5)
p = 1.5;
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
42
else p = 2.0;
// Štampanje izlaznog rezultata
System.out.println("Za uneto k0 = " + k0 + " dobija se p = " + p);
}
}
Izlazni rezultati:
Unesite vrednost za dužinu svetlog otvora k0: 2.6
Za uneto k0 = 2.6 dobija se p = 1.25
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program koji za unete realne vrednosti a i b izračunava y po
formuli
2 , ,
, ,
/ , .
a b a b
y a b a b
a b a b
Rezultat prikazati u obliku
Za unete vrednosti a = x.xx i b = x.xx dobija se y = x.xx.
II grupa
Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava
vrednost funkcije
2
3 +1, 2,
, 2.
x
x xy
e x
III grupa
Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje
vrednost izraza
max( ,min( , )).p x y z
III vežba – Razgranata struktura
43
IV grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije f(x) za zadatu
vrednost x po formuli
2
3 , 0,
3, 0 1,( )
3, 1 3,
10 1, 3.
x x
x xf x
x x
x x
V grupa
Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava
vrednost funkcije
2
3
( 2) , 4,
1, 4 8,
1, 8.
x x
y x x
x x
VI grupa
Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje
vrednost izraza
min( ,max( , )).p x y z
VII grupa
Sastaviti algoritam i napisati program za određivanje da li je uneti ceo broj x paran ili
neparan.
VIII grupa
Sastaviti algoritam i napisati program kojim se za date realne brojeve x i y izračunava
vrednost funkcije f(x, y) po formuli
2
max( , ) min( , )( , )
1 max ( , )
x y x yf x y
x y
.
Na izlazu štampati vrednost funkcije.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
44
IX grupa
Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava
vrednost funkcije
2 - 1, 1,
2 , 1.
x xy
x x
X grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije za unete realne
vrednosti a, b i x
2
2
1,7 3,2 , 0,
cos, 0.
sin
x x x
y a b xx
a x b x x
Cilj vežbe
Upoznavanje sa cikličnom programskom strukturom
Upoznavanje sa iterativnim i brojačkim ciklusima
Implementacija ciklične programske strukture
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
46
Teorijske osnove za izradu vežbe
Ako se niz naredbi u programu može izvršiti više puta u toku izvršavanja programa, tada
se kaže da ove naredbe obrazuju cikličnu strukturu. Među naredbama koje čine cikličnu
strukturu mora postojati bar jedna naredba takva da omogućava izlazak iz ciklusa. Uslov
pod kojim se izlazi iz ciklusa zove se izlazni kriterijum ciklusa. Ako je izlazni kriterijum
broj ponavljanja ciklusa, tada se ciklus zove brojački ciklus. Ako je izlazni kriterijum
dostignuta tačnost u procesu računanja, tada se ciklus zove iterativni ciklus.
4.1. Iterativni ciklus
Za realizaciju iterativnih ciklusa koristi se while (slika 4.1) i do-while (slika 4.2) struktura
sa osnovnom razlikom u broju prolaza kroz petlju.
Sintaksa while petlje ima oblik
while (uslov) {
B
}
Slika 4.1 While struktura
Drugi način realizacije iterativnog ciklusa je korišćenjem do-while strukture. Sintaksa do-
while petlje ima oblik
do {
B
} while (uslov);
Slika 4.2. Do-while struktura
Primer 4.1. Sastaviti algoritam i napisati program za iterativno rešavanje sistema
jednačina
2
2
4 3 1 0
2 3 0
x xy x
x y
IV vežba – Ciklična struktura
47
koristeći sledeće formule: 1 1
31(3 1) 1, .
2 2
nn n n n
xx x y y
Iterativni proces prekinuti kada se ispune uslovi 1n nx x i 1n ny y .
Na ulazu je data vrednost za i početne vrednosti za 0x i 0y . Na izlazu štampati rešenja
sistema jednačina.
Zadatak rešiti koristeći:
a) while petlju,
b) do-while petlju.
Rešenje:
a)
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
48
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
/*
U zadatku se na osnovu unete apsolutne tačnosti eps i početnih vrednosti x0 i y0
korišćenjem iterativnog ciklusa pronalaze rešenja zadatog sistema jednačina.
*/
public class WhilePetlja{
public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("###,##0.00");
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Unos vrednosti promenljivih eps, x0 i y0
System.out.print("Unesite vrednost za epsilon: ");
double eps = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za x0: ");
double x0 = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za y0: ");
double y0 = Double.parseDouble(ulaz.readLine());
// Iterativni postupak za određivanje rešenja sistema jednačina
double x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);
double y1 = Math.sqrt((x0 + 3) / 2);
while (Math.abs(x1 - x0) > eps || Math.abs(y1 - y0) > eps) {
x0 = x1;
x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);
y0 = y1;
y1 = Math.sqrt((x0 + 3) / 2);
}
// Štampanje izlaznog rezultata
System.out.println("Rešenja sistema jednačina su x = " + df.format(x1)
+ " i y = " + df.format(y1));
}
}
Izlazni rezultati:
Unesite vrednost za epsilon: 1.0E-6
Unesite vrednost za x0: 1.2
Unesite vrednost za y0: 3.4
Rešenja sistema jednačina su x = 1.05 i y = 1.42
IV vežba – Ciklična struktura
49
b)
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
/*
U zadatku se na osnovu unete apsolutne tačnosti eps i početnih vrednosti x0 i y0
korišćenjem iterativnog ciklusa pronalaze rešenja zadatog sistema jednačina.
*/
public class DoWhilePetlja {
public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("###,##0.00");
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
50
// Unos vrednosti promenljivih eps, x0 i y0
System.out.print("Unesite vrednost za epsilon: ");
double eps = Double. parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za x0: ");
double x0 = Double. parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za y0: ");
double y0 = Double. parseDouble(ulaz.readLine());
// Iterativni postupak za određivanje rešenja sistema jednačina
double x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);
double y1 = Math.sqrt((x0 + 3) / 2);
do {
x0 = x1;
x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);
y0 = y1;
y1 = Math.sqrt((x0 + 3) / 2);
} while (Math.abs(x1 - x0) > eps || Math.abs(y1 - y0) > eps);
// Štampanje izlaznog rezultata
System.out.println("Rešenja sistema jednačina su x = " + df.format(x1)
+ " i y = " + df.format(y1));
}
}
Izlazni rezultati:
Unesite vrednost za epsilon: 1.0E-6
Unesite vrednost za x0: 1.2
Unesite vrednost za y0: 3.4
Rešenja sistema jednačina su x = 1.05 i y = 1.42
4.2. Brojački ciklus
Za realizaciju brojačkog ciklusa koristi se for petlja. Sintaksa for petlje ima oblik
for (inicijalizacija; uslov; iteracija) {
telo ciklusa
}
Slika 4.3. For petlja
Na slici 4.3 prikazana je for petlja, pri čemu je m1 početak, m2 kraj, a m3 korak brojanja.
IV vežba – Ciklična struktura
51
Primer 4.2. Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije
3( ) 1f x x za x = 1,00(0,2)2,00. Izlazna lista neka izgleda
X F(X)
x.xx xxx.xx
Rešenje:
package programiranje;
import java.text.DecimalFormat;
/*
U zadatku se korišćenjem brojačkog ciklusa vrši tabeliranje vrednosti funkcije
*/
public class ForPetlja {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("###,##0.00");
// Deklarisanje promenljivih f i x
double f, x;
// Štampanje zaglavlja
System.out.println("\tX\tF(X)");
for (x = 1.0; x <= 2.0; x += 0.2) {
// Izračunavanje vrednosti funkcije f
f = Math.sqrt(1 + Math.pow(x, 3));
// Štampanje izlaznog rezultata
System.out.println("\t" + df.format(x) + "\t" + df.format(f));
}
}
}
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
52
Izlazni rezultati:
X F(X)
1.00 1.41
1.20 1.65
1.40 1.93
1.60 2.26
1.80 2.61
2.00 3.00
Primer 4.3. Sastaviti algoritam i napisati program za izračunavanje vrednosti sume
13
3
3
n
ii
iS
i
za unetu vrednost n.
Rešenje:
IV vežba – Ciklična struktura
53
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
/*
U zadatku se korišćenjem brojačkog ciklusa izračunava vrednost sume
*/
public class Suma {
public static void main(String[] args) throws Exception {
DecimalFormat df = new DecimalFormat("###,##0.00");
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Inicijalizacija promenljive s
double s = 0;
// Unos vrednosti promenljive n
System.out.print("Unesite vrednost za n: ");
int n = Integer.parseInt(ulaz.readLine());
for (int i = 1; i <= n; i++)
if (i != 3)
s += (i + 3) / (i - 3.0);
// Štampanje izlaznog rezultata
System.out.println("Dobijena vrednost sume je " + df.format(s));
}
}
Izlazni rezultati:
Unesite vrednost za n: 10
Dobijena vrednost sume je 15.56
Primer 4.4. Data je greda opterećena trougaonim opterećenjem 0 1 /q kN m i
dužine 6 .L m Za poprečne preseke na rasponu grede 2,5 3,5m z m sa korakom od
0,1 m sastaviti algoritam i napisati program za tabeliranje vrednosti transverzalne sile i
napadnog momenta.
Izlazni razultati su oblika:
z Ft M
x.xx xxx.xx xxx.xx
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
54
Napomena: Transverzalna sila se određuje na osnovu formule
2
0( ) ,2 3
T
q L zF z
L a
napadni moment
32
0( )6
q L z zM z
L L.
Rešenje:
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
public class Primer4 {
public static void main(String[] args) throws Exception {
// q0 - trougaono opterećenje
// L - dužina grede
// m - napadni moment
// ft - transverzalna sila
double q0, L, m, ft;
IV vežba – Ciklična struktura
55
DecimalFormat df = new DecimalFormat("#,##0.00");
// Unos podataka
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Unesite vrednost za trougaono opterećenje q0: ");
q0 = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za dužinu grede L: ");
L = Double.parseDouble(ulaz.readLine());
// Štampanje zaglavlja
System.out.println("\tz\tFt\tM");
// Tabeliranje vrednosti transverzalne sile i napadnog momenta
for (double z = 2.5; z < 3.5; z += 0.1) {
ft = q0 * (L / 3.0 - z * z / L) / 2.0;
m = q0 * L * L * (z / L - Math.pow(z / L, 3.0)) / 6.0;
System.out.println("\t" + df.format(z) + "\t" + df.format(ft)
+ "\t" + df.format(m));
}
}
}
Izlazni rezultati:
Unesite vrednost za trougaono opterećenje q0: 1
Unesite vrednost za dužinu grede L: 6
z Ft M
2.50 0.48 2.07
2.60 0.44 2.11
2.70 0.39 2.15
2.80 0.35 2.19
2.90 0.30 2.22
3.00 0.25 2.25
3.10 0.20 2.27
3.20 0.15 2.29
3.30 0.09 2.30
3.40 0.04 2.31
Primer 4.5. Sastaviti algoritam i napisati program za određivanje zapremine i položaja
težišta prave kupe poluprečnika 0,2(0,1)0,4R i visine 1,0(0,5)2,0H . Na izlazu
štampati rezultate oblika:
R.BR. R H V ZT
xxx xx.xx xx.xx xx.xx xx.xx
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
56
Rešenje:
Omotač prave kupe nastaje obrtanjem prave y k z oko ose simetrije (z-ose):
2 22
0
; [ ( )]3
b H
a
R R R R Hk tg y z f z dz z dz
H H H
Zapremina je 2 21
[ ( )]3
b
a
V f z dz R H
Koordinate statičkog momenta su
2
2 2 2
0
1[ ( )]
4
b H
a
Rz f z dz z z dz R H
H
Koordinate težišta prave kupe su 3
4TZ H
IV vežba – Ciklična struktura
57
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
public class Primer5 {
public static void main(String[] args) throws Exception {
// r – poluprečnik osnove kupe
// h - visina kupe
// zt – z koordinata težišta
// v - zapremina kupe
double v, zt;
int rbr;
DecimalFormat df = new DecimalFormat("#,##0.00");
// Štampanje zaglavlja
System.out.println("R.BR\tR\tH\tV\tZT");
// Postavljanje rednog broja
rbr = 0;
for (double r = 0.2; r <= 0.4; r += 0.1)
for (double h = 1.0; h <= 2.0; h += 0.5) {
rbr++;
v = (1. / 3.) * r * r * Math.PI * h;
zt = (3. / 4.) * h;
// Štampanje rezultata
System.out.print(rbr + "\t" + df.format(r) + "\t"
+ df.format(h) + "\t" + df.format(v) + "\t"
+ df.format(zt) + "\n");
}
}
}
Izlazni rezultati:
R.BR R H V ZT
1 0.20 1.00 0.04 0.75
2 0.20 1.50 0.06 1.12
3 0.20 2.00 0.08 1.50
4 0.30 1.00 0.09 0.75
5 0.30 1.50 0.14 1.12
6 0.30 2.00 0.19 1.50
7 0.40 1.00 0.17 0.75
8 0.40 1.50 0.25 1.12
9 0.40 2.00 0.34 1.50
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
58
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program kojim se štampaju elementi niza 2 2 ,( 1,..., ) i i n i n deljivi sa 5 na osnovu unete vrednosti za n.
II grupa
Sastaviti algoritam i napisati program za tabeliranje funkcije
2 2
3
xz
x a y,
ako je 1(1)2, 0,1(0,1)0,5x a i 0,1(0,3)1,2y .
III grupa
Sastaviti algoritam i napisati program kojim se za date prirodne brojeve m i n, izračunava
vrednost sume
11 1 1 1
... ( 1) .2 3
mSn m n m n m n m m
IV grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti izraza
3
2
x yz
x y
ako je 1(0,5)2x i 0(0,2)1y .
V grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti sume za unetu vrednost
parametra n
2 2 2
1 2... .
1 3 (2 1)
nS
n
IV vežba – Ciklična struktura
59
VI grupa
Sastaviti algoritam i napisati program kojim se štampaju svi trocifreni brojevi ABC koji
imaju svojstvo 2 2( ) ( )ABC AB C , gde su nepoznate cifre 0 9,A 0 9,B
0 9.C Primer: 147 = 142 – 7
2.
VII grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti x a , po formuli
0 1
1
11, ( 1,2, ).
2n n
n
ax a x x n
x
Proces prekinuti kada je 5
1 10 .n nx x
VIII grupa
Sastaviti algoritam i napisati program za nalaženje najvećeg pozitivnog korena funkcije 3 2( ) 27 4 2014 f x x x x koristeći iterativnu formulu
0 27.x ,
i 1 2
i i
2014 427, 0, 1, x i
x x .
Izračunavanje prekinuti kada bude zadovoljen uslov 6
i 1 i 10x x
.
IX grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti proizvoda
14
2,5
4
n
ii
iP
i
za unetu vrednost n.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
60
X grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti sume
50
1
( 1).
( 1)( 2)
k
k
Sk k
Cilj vežbe
Upoznavanje sa jednodimenzionalnim poljem
Implementacija jednodimenzionalnog polja
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
62
Teorijske osnove za izradu vežbe
Polje ili niz (engl. array) je kolekcija promenljivih istog tipa sa zajedničkim imenom. Za
polje se može reći da je to skup homogenih elemenata podataka (istog tipa), gde je svakom
elementu stavljen u korespondenciju uređeni niz celih brojeva (indeksa), tako da se svaki
element polja može jednoznačno locirati na osnovu indeksa. Broj indeksa koji su dodeljeni
svakom elementu polja naziva se dimenzionalnost polja. Broj elemenata polja naziva se
veličina, rang ili dužina polja. U Javi polje može imati jednu ili više dimenzija.
Jednodimenzionalno polje je struktura koju čini skup podataka kod kojih se svaki element
jedinstveno identifikuje vrednošću koja odgovara njegovoj poziciji u polju. U matematici,
jednodimenzionalno polje brojeva zove se vektor, pri čemu se pozicija svakog elementa
specificira indeksom, kao što je
a1, a2, … , an
za vektor od n elemenata.
U Javi prvi element vektora ima indeks 0
a[0], a[1], ... , a[n - 1]
gde a[i] ukazuje na adresu elementa ai.
Pošto se polja implementiraju kao objekti, kreiranje polja sastoji se iz dva koraka:
1. Deklariše se polje kao referencna promenljiva.
2. Alocira se memorija za polje, dodeljuje se referenca na tu memoriju promenljivoj
polja. Zato se sva polja u Javi dinamički alociraju korišćenjem operatora new.
Ukoliko je potrebno da se kreira celobrojno polje od 20 elemenata i povezuje sa
referencnom promenljivom polja mojePolje, izraz za kreiranje polja biće oblika
int mojePolje[ ] = new int[20];
Polja se mogu inicijalizovati pri njihovom kreiranju. Opšti oblik inicijalizacije
jednodimenzionalnog polja je
tip ime_polja[ ] = { vrednost1, vrednost2, vrednost3, ... , vrednostn };
Inicijalne vrednosti su specificirane sa vrednost1 do vrednostn. Dodeljivanje vrednosti
elementima polja vrši se sekvencijalno s leva udesno prema redosledu indeksa.
V vežba – Jednodimenzionalno polje
63
Sortiranje predstavlja postupak uređenja objekata nekog skupa u određenom poretku. Na
primer, ako je dato polje brojeva [1], [2],..., [ ]a a a n sortiranje je njihovo uređenje u
neopadajućem
[1] [2] ... [ ]a a a n
ili nerastućem poretku
[1] [2] ... [ ]a a a n .
Primer 5.1. Sastaviti algoritam i napisati program kojim se određuje maksimalni i
minimalni element u celobrojnom vektoru X od n elemenata.
Rešenje:
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
64
package programiranje;
import java.io.*;
/*
U zadatku se pronalazi maksimalni i minimalni element
celobrojnog polja x od n elemenata
*/
public class MinMax {
public static void main(String[] args) throws Exception {
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
// Kreiranje celobrojnog polja x
int[] x = new int[100];
// Unos vrednosti promenljive n
System.out.print("Unesite broj elemenata n polja x: ");
int n = Integer.parseInt(ulaz.readLine());
// Unos elemenata polja x
System.out.println("Unesite elemente polja x: ");
for (int i = 1; i <= n; i++) {
System.out.print("x[" + i + "] = ");
x[i] = Integer.parseInt(ulaz.readLine());
}
// Određivanje minimalnog i maksimalnog elementa polja
int min, max;
min = max = x[1];
for (int i = 2; i <= n; i++) {
if (x[i] > max)
max = x[i];
if (x[i] < min)
min = x[i];
}
// Štampanje izlaznog rezultata
System.out.println("Maksimalni element je " + max
+ "\nMinimalni element je " + min);
}
}
V vežba – Jednodimenzionalno polje
65
Izlazni rezultati:
Unesite broj elemenata n polja x: 4
Unesite elemente polja x:
x[1] = 25
x[2] = -16
x[3] = 65
x[4] = 32
Maksimalni element je 65
Minimalni element je -16
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program pomoću kojeg se za dati broj n izračunava n-ti član
niza 1 2 1 23 2 n n n n nF F F F F pri čemu je 0 0F i 1 1F .
II grupa
Sastaviti algoritam i napisati program kojim se određuju k-ti elementi nizova koji se
formiraju na sledeći način: 0a i 0b su zadate vrednosti nizova, a važi
1 1
, 1 12
a i b ia i b i a i b i za 1,2,3,....i
III grupa
Sastaviti algoritam i napisati program kojim se na osnovu niza A od n elemenata formira
niz B od n elemenata po formuli
1
.2
a i a n ib i
IV grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti
2
3
3 , ako je neparno,
2 , ako je parno, 5, ...,15.
k
k ka
k k k
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
66
V grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti
1 2 ... .nnP x x x
Na ulazu učitati vrednosti , ( 1,2,..., ).in x i n Na izlazu štampati P.
VI grupa
Sastaviti algoritam i napisati program kojim se na osnovu niza A od 2n elemenata formira
niz B od n elemenata po formuli
2 1
.2
a i a n ib i
VII grupa
Sastaviti algoritam i napisati program za tabeliranje funkcije
2( 1)
( ) 7,51,5
ii
xy x
u tačkama ( 1,2,...,10),ix i datim na ulazu.
VIII grupa
Dat je niz A od n elemenata. Sastaviti algoritam i napisati program kojim se određuje suma
članova na parnim mestima i proizvod na neparnim mestima.
IX grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti izraza
2
2
1 1
1 1 .
n n
i i
i i
S x xn n
Na ulazu učitati vrednosti , ( 1,2,..., )in x i n , a na izlazu štampati S.
V vežba – Jednodimenzionalno polje
67
X grupa
Sastaviti algoritam i napisati program za izračunavanje sume
1
,n
i
i
S x
gde je
22 , ,
2 , ,
3 , .
i i i i i i
i i i i i i i
i i i i i i
a b c a b c
x a b c a b c
a b c a b c
Dimenzija nizova n i trojke podataka , , ( 1,2,..., ),i i ia b c i n date su na ulazu.
Cilj vežbe
Upoznavanje sa dvodimenzionalnim poljem
Implementacija dvodimenzionalnog polja
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
70
Teorijske osnove za izradu vežbe
Dvodimenzionalno polje je lista jednodimenzionalnih polja. Na primer, dvodimenzionalno
celobrojno polje matrica veličine 5x5 deklariše se kao
int matrica[ ][ ] = new int[5][5];
ili
int[ ][ ] matrica = new int[5][5];
U Javi se svaka dimenzija polja stavlja u poseban skup uglastih zagrada ([ ]). U opštem
slučaju elementu iz prethodnog primera se može pristupiti pomoću iskaza
matrica[element_vrste][element_kolone].
Opšti oblik inicijalizacije dvodimenzionalnog polja je
tip ime_polja[ ] [ ] = {
{ vrednost1, vrednost2, ..., vrednostn },
…
{ vrednost1, vrednost2, ..., vrednostn }
};
Nad dvodimenzionalnim poljem mogu se primeniti sve operacije koje se primenjuju u
matematici: transponovanje, množenje, sabiranje, pronalaženje inverzne matrice,
izračunavanje determinante.
Primer 6.1. Sastaviti algoritam i napisati program za nalaženje transponovane matrice AT
na osnovu zadate matrice A
3x3431
541
532
A
.
Rešenje:
package programiranje;
/*
U zadatku se vrši transponovanje matrice A reda 3x3
*/
public class TransponovanjeMatrice {
public static void main(String[] args) {
// Deklarisanje i inicijalizacija dvodimenionalnog polja a
int[][] a = {{2, -3, -5}, {-1, 4, 5}, {1, -3, -4}};
VI vežba – Dvodimenzionalno polje
71
// Deklarisanje dvodimenionalnog polja b
int[][] b = new int[5][5];
// Nalaženje transponovane matrice
for (int i = 0; i <= 2; i++)
for (int j = 0; j <= 2; j++)
b[i][j] = a[j][i];
// Štampanje izlaznog rezultata
System.out.println("Dobijena transponovana matrica je ");
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 2; j++)
System.out.print(b[i][j] + " ");
System.out.println();
}
}
}
Izlazni rezultati:
Dobijena transponovana matrica je
2 -1 1
-3 4 -3
-5 5 -4
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
72
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program kojim se formira matrica A reda n x n tako da se na
glavnoj dijagonali nalaze jedinice, elementi gornje trougaone matrice imaju vrednost 5, a
elementi donje trougaone matrice vrednost 10.
Na primer, za n = 3 matrica A ima oblik
3 3
1 5 5
10 1 5
10 10 1x
A
.
II grupa
Sastaviti algoritam i napisati program kojim se formira matrica A reda n x n tako da se na
glavnoj i sporednoj dijagonali nalaze jedinice, a svi ostali elementi matrice budu nule.
Na primer, za n = 3 matrica A ima oblik
3 3
1 0 1
0 1 0
1 0 1x
A
.
III grupa
Sastaviti algoritam i napisati program kojim se pomoću nizova [ ]( 1,..., )iX x i n ,
[ ]( 1,..., )jY y j m , generiše matrica [ ]ij n xmZ z gde je
2 2
2 2
i j
ij
i j
x yz
x y
.
IV grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti determinante
0 6 8
5 4 5 .
5 8 6
D
VI vežba – Dvodimenzionalno polje
73
V grupa
Za matricu A reda n x m ),10m,10n( sastaviti algoritam i napisati program za
određivanje najvećeg elementa i njegovih indeksa. Na izlazu štampati najveći element i
njegove indekse.
VI grupa
Sastaviti algoritam i napisati program kojim se za matricu A reda n x n određuje:
a) suma svih elemenata,
b) suma negativnih elemenata matrice.
VII grupa
Sastaviti algoritam i napisati program za nalaženje C = A + B na osnovu zadatih matrica A
i B:
3 3
2 3 5
1 4 15
11 12 4x
A
,
3 3
10 8 5
1 4 5
1 3 4x
B
.
VIII grupa
Sastaviti algoritam i napisati program koji će zadatoj matrici X reda n x n (n 10)
zameniti elemente na glavnoj i sporednoj dijagonali. Na izlazu štampati transformisanu
matricu.
IX grupa
Sastaviti algoritam i napisati program kojim se izračunava 12 33 23 11 21( )a a a a a , ako
je matrica
3 3
2 3 5
1 4 5 .
1 3 4x
A
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
74
X grupa
Sastaviti algoritam i napisati program za nalaženje matrice 22 3 TB A A na osnovu
zadate matrice A:
3 3
2 3 2
1 4 8
1 3 3x
A
.
Cilj vežbe
Upoznavanje sa pojmom metoda
Savladavanje načina prenosa argumenata u metodi
Implementacija metode
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
76
Teorijske osnove za izradu vežbe
Metoda je izdvojena programska celina u koju se smešta ponavljani postupak. Metode se
pišu kao posebni blokovi naredbi pre ili posle glavne metode main(). Poziv metode se
obavlja tako što se trenutno prekine izvođenje glavnog kôda, a izvođenje programa se
prenosi na metodu. Nakon što se kôd u metodi izvede, nastavlja se izvršavanje glavnog
programa od sledeće naredbe iza poziva metode.
Metode imaju parametre ili argumente koji se zadaju pri pozivu, a vraćaju povratnu
vrednost. Vrednost koja se prosleđuje metodi naziva se argument. Unutar metode
promenljiva koja prima argument zove se parametar.
Metodu je moguće pozvati i iz neke druge metode ili iz sebe same (rekurzivne metode), pri
čemu se svaka metoda može pozivati neograničeni broj puta. Razbijanjem kôda u metode,
doprinosi se modularnosti programa (kôd je čitljiviji i razumljiviji).
Promenljive koje su definisane unutar metode zovu se lokalne promenljive. Lokalne
promenljive se mogu koristiti samo u izrazima unutar bloka u kome su deklarisane.
Globalne promenljive su poznate unutar celog programa. Kreiraju se deklarisanjem van
metode. Kada lokalna i globalna promenljiva imaju isto ime, lokalna promenljiva ima
prednost.
Pod deklaracijom metode podrazumeva se imenovanje metode, specificiranjem broja i tipa
parametara i tipa povratne vrednosti. Deklaracija ne sadrži opis šta i kako metoda radi, već
daje prototip metode. Opšti oblik deklaracije metode izgleda
modifikator_pristupa povratni_tip ime_metode (<tip> arg1, …, <tip> argn)
Prototipom metode specificira se o metodi:
tip povratne vrednosti,
tip argumenata,
broj argumenata.
Broj argumenata, njihov redosled i tip nazivaju se potpisom metode.
Definicija metode određuje šta i kako metoda radi. Definicija metode svojim oblikom
mora u potpunosti odgovarati deklaraciji.
Naredbe koje se izvode prilikom poziva metode čine telo metode.
Argument u definiciji metode je formalni argument – simboličko ime koje prevodilac
koristi tokom prevođenja tela metode. Kada se program izvršava, pri pozivu metode se
formalni argument inicijalizira stvarnim argumentom. Imena formalnog i stvarnog
argumenta ne moraju biti ista.
VII vežba – Metoda
77
Primer 7.1. Sastaviti algoritam i napisati program za tabeliranje vrednosti funkcije
( ( ( )))y f g f x ,
za x = 0,1(0,1)0,9 ako je
( ) 3, ( ) .2
xf x x g x
Izlaznu listu štampati u obliku
X Y
0.1 xx.xx
Rešenje:
package programiranje;
import java.text.DecimalFormat;
/*
U zadatku se na osnovu definisanih metoda f i g izračunava vrednost funkcije y
*/
public class Metoda {
// Definisanje metoda f i g
static double f(double x) {
return x + 3;
}
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
78
static double g(double x) {
return x / 2.;
}
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("###,##0.00");
// Deklarisanje promenljivih x i y
double x, y;
// Štampanje zaglavlja
System.out.println("\tX\tY");
for (x = 0.1; x <= 0.9; x += 0.1) {
// Poziv metoda f i g
y = f(g(f(x)));
// Štampanje izlaznog rezultata
System.out.println("\t" + df.format(x) + "\t" + df.format(y));
}
}
}
Izlazni rezultati:
X Y
0.10 4.55
0.20 4.60
0.30 4.65
0.40 4.70
0.50 4.75
0.60 4.80
0.70 4.85
0.80 4.90
0.90 4.95
Primer 7.2. Za trougaono opterećenje poznati su sledeći podaci: opterećenje 0 1 /q kN m
i dužina 6 .L m Odrediti:
ukupno opterećenje 02
q
LF q ,
otpore oslonaca 06
A
LF q i 0
3B
LF q ,
VII vežba – Metoda
79
zmax iz uslova da je transverzalna sila
2
0( ) 0,2 3
T
q L zF z
L
najveći napadni moment
32
0( )6
q L z zM z
L L za vrednost zmax.
Napomena: Za određivanje nule funkcije koristiti Njutnovu metodu za koju važe sledeća
pravila:
početni uslov: 0 ,x
iterativna zakonitost 1 '
( ), 0,1,
( )
kk k
k
f xx x k
f x ,
uslov kraja 1 .k kx x
Rešenje:
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
80
package programiranje;
import java.io.*;
import java.text.DecimalFormat;
public class Primer2 {
// Funkcija transverzalne sile
public static double f(double q0, double L, double z) {
return q0 * (L / 3.0 - z * z / L) / 2.0;
}
// Prvi izvod transverzalne sile
public static double f1(double q0, double L, double z) {
return - q0 * z / L;
}
// Njutnova metoda za određivanje nule funkcije
public static double njutn(double z0, double eps, double q0, double L) {
double z1 = z0 - f(q0, L, z0) / f1(q0, L, z0);
while (Math.abs(z1 - z0) > eps) {
z0 = z1;
z1 = z0 - f(q0, L, z0) / f1(q0, L, z0);
}
return z1;
}
VII vežba – Metoda
81
public static void main(String[] args) throws Exception {
// q0 - trougaono opterećenje
// L - dužina grede
// fq - ukupno opterećenje
// fa, fb - otpori oslonaca
// zmax - maksimalni raspon
// m - napadni moment
// z0 - početna vrednost raspona
// eps - apsolutna tačnost
double q0, L, m, zmax, fq, fa, fb, z0, eps;
DecimalFormat df = new DecimalFormat("#.##");
// Unos podataka
BufferedReader ulaz = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Unesite vrednost za trougaono opterećenje q0 (kN/m):");
q0 = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za dužinu grede L (m): ");
L = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za z0 (m): ");
z0 = Double.parseDouble(ulaz.readLine());
System.out.print("Unesite vrednost za eps: ");
eps = Double.parseDouble(ulaz.readLine());
// Izračunavanje ukupnog opterećenja i otpora oslonaca
fq = q0 * L / 2.0;
fa = q0 * L / 6.0;
fb = q0 * L / 3.0;
// Određivanje zmax
zmax = njutn(z0, eps, q0, L);
// Izračunavanje maksimalnog napadnog momenta
m = q0 * L * L * (zmax / L - Math.pow(zmax / L, 3.0)) / 6.0;
// Štampanje rezultata
System.out.println("Ukupno opterećenje Fq = " + df.format(fq)
+ "kN, otpori opterećenja Fa = " + df.format(fa) + "kN i Fb = "
+ df.format(fb) + "kN");
System.out.println("Maksimalni napadni moment je Mmax = "
+ df.format(m) + "kNm za zmax = " + df.format(zmax) + "m");
}
}
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
82
Izlazni rezultati:
Unesite vrednost za trougaono opterećenje q0 (kN/m): 1
Unesite vrednost za dužinu grede L (m): 6
Unesite vrednost za z0 (m): 0.1
Unesite vrednost za eps: 1.0e-6
Ukupno opterećenje Fq = 3kN, otpori opterećenja Fa = 1kN i Fb = 2kN
Maksimalni napadni moment je Mmax = 2.31kNm za zmax = 3.46 m
Zadaci za vežbu
I grupa
Napisati metodu za izračunavanje vrednosti funckije
3, 1,
( ) 2 , 1 2,
6 1, 2,
y y
f y y y
y y
gde je 2 1.y x x
U glavnom programu za n unetih vrednosti za x, štampati vrednost
funkcije.
II grupa
Napisati metodu kojom se za zadate vrednosti x, y i z izračunava vrednost p po formuli
min( ,max( , )).p x y z
U glavnom programu uneti vrednosti za x, y i z štampati rezultat p.
III grupa
Napisati metodu kojom se izračunava vrednost proizvoda
13
818 .
-3
n
ii
iP
i
U glavnom programu uneti vrednost za n i izračunati proizvod.
VII vežba – Metoda
83
IV grupa
Napisati metodu za izračunavanje funkcije f(x) zadate u obliku
3
2
sin( ) 1 .
10 3
xf x x
x
U glavnom programu za x = 0,3(0,5)2,8 štampati vrednosti x i f(x) u tabeli sa
odgovarajućim zaglavljem.
V grupa
Napisati metodu za rešavanje jednačine 5 3- 2 +10 0x x Njutnovim iterativnim
postupkom. Početno rešenje x0 i tačnost dati su na ulazu. Na izlazu štampati krajnje
rešenje. Funkciju i njen prvi izvod definisati metodama.
Napomena: Za Njutnov metod važe sledeća pravila:
početni uslov: 0 ,x
iterativna zakonitost 1 '
( ), 0,1,
( )
kk k
k
f xx x k
f x ,
uslov kraja 1 .k kx x
VI grupa
Napisati metodu kojom se izračunava vrednost x a , po formuli
0 1
1
11, ( 1,2, ).
2n n
n
ax a x x n
x
Proces prekinuti kada je 1 .n nx x U glavnom programu uneti vrednost za a i ε i naći
vrednost korena.
VII grupa
Napisati metodu za izračunavanje norme matrice nxmijaA ][ date izrazom
2
1 1
.m n
ij
i j
A a
U glavnom programu učitati matricu A i štampati normu matrice.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
84
VIII grupa
Napisati metodu kojom se izračunava vrednost funkcije log(1+x) po sledećem algoritmu
10
1
1log(1 ),
8( )
( 1) 1,
8
k k
k
x x
f xx
xk
U glavnom programu treba učitati n vrednosti argumenta x i za svaku od njih izračunati
vrednosti funkcije.
IX grupa
Napisati metodu za izračunavanje koeficijenta proste linearne korelacije slučajnih veličina
1, ,...,i nX x x x i 1, ,...,i nY y y y po formuli
1 1 1
2 2
2 2
1 1 1 1
.
n n n
i i i i
i i i
n n n n
i i i i
i i i i
n x y x y
r
n x x n y y
U glavnom programu izračunati vrednost r na osnovu podataka iz sledeće tabele
x 0,1 0,2 0,3 0,4 0,5
y 0,5 0,3 0,2 0,0 -0,6
X grupa
Napisati metodu za izračunavanje vrednosti funkcije
2
1 ln 1 , 0
1, 01
, 0
u x xu a a
r x xw a a
u x w u x x
.
U glavnom programu za p kx x x x , štampati vrednosti funkcije r.
Cilj vežbe
Primena stečenog znanja iz oblasti programiranja u građevinarstvu
Realizacija programskih struktura
Rešavanje praktičnih problema
Implementacija rešenja korišćenjem programskog jezika Java
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
86
Zadaci za vežbu
I grupa
Sastaviti algoritam i napisati program za izračunavanje vrednosti varijanse
2
1
1,
1
n
i sr
i
V x xn
gde je xsr srednja vrednost i izračunava se na osnovu sledeće formule
1
1, 50,
n
sr i
i
x x nn
a x niz podataka. Na izlazu štampati vrednost varijanse V.
Napomena: Program testirati na osnovu skupa izmerenih mesečnih padavina u Nišu
tokom 2010. godine datih sledećom tabelom
mesec 1 2 3 4 5 6 7 8 9 10 11 12
padavine
(mm) 54 88,3 48,8 79,5 68,8 67,4 35,8 29,5 14,4 73,7 44,9 72,6
II grupa
Sastaviti algoritam i napisati program za tabelarni prikaz koeficijenta izvijanja za
neelastično ponašanje materijala prema obrascu
2
1,
1 0,8100
za vrednosti 10 75, gde je λ vitkost štapova.
III grupa
Sastaviti algoritam i napisati program za određivanje dometa mlaza na osnovu izraza
1,55 1 1000 ,4,9
HR H D
H
VIII vežba – Primena u građevinarstvu
87
gde je D – prečnik mlaznika u metrima, H – napor vode pred mlaznicom (napor prskača) u
metrima.
Na ulazu su zadate vrednosti za D i H. Na izlazu predstaviti vrednost za domet mlaza.
IV grupa
Sastaviti algoritam i napisati program za izračunavanje godišnje potrošnje vode za
navodnjavanje ako važi
,(1 )
eg
ET PW
LR
gde je ET – evapotranspiracija, LR – zahtevano ispiranje, Pe – efektivne padavine, η –
koeficijent korisnog dejstva. Na ulazu su zadate vrednosti za evapotranspiraciju, efektivne
padavine i koeficijent korisnog dejstva, dok se zahtevano ispiranje za površinska zalivanja
određuje pomoću izraza:
,5
w
e w
ECLR
EC EC
gde je ECw – zasoljenost vode za navodnjavanje, ECe – zasoljenost zemljišta.
Vrednosti za ECw i ECe uneti na ulazu na osnovu sledeće tabele:
Kultura ECe ECw
Ječam 1,3 8,7
Pšenica 9,5 6,4
Kupus 4,4 2,9
Krompir 3,8 2,5
Izlazna lista neka izgleda
ECe ECw LR Wg
x.xx x.xx x.xx x.xx
V grupa
Sastaviti algoritam i napisati program za izračunavanje neto potrebne količine vode za
navodnjavanje ako važi
,1
ETW
LR
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
88
gde je ET – evapotranspiracija, LR – zahtevano ispiranje. Na ulazu je zadata vrednost
evapotranspiracije dok se zahtevano ispiranje za zalivanja kapanjem određuje pomoću
izraza:
max
,2
w
e
ECLR
EC
gde je ECemax maksimalna zasoljenost zemljišta.
Vrednosti za ECw, ECe i ECemax uneti na ulazu na osnovu sledeće tabele:
Izlazna lista neka izgleda
ECe ECw ECemax LR W
x.xx x.xx x.xx x.xx x.xx
VI grupa
Sastaviti algoritam i napisati program za tabelarni prikaz vrednosti maksimalne vlažnosti
drveta na osnovu formule
0
0
1,5max 100[%],
1,5
Hw w
gde je 3
0 [ / ]t m zapreminska masa, a Hw granica zasićenosti vlakana. Zapreminska
masa i granica zasićenosti vlakana za četiri vrste drveta date su u sledećoj tabeli:
Vrsta drveta Zapreminska masa 3
0 ( / )t m
Granica zasićenosti
vlakana (%)Hw
Jela 0,43 32
Bor 0,49 25
Bukva 0,68 33,5
Hrast 0,65 24
Kultura ECe ECw ECemax
Ječam 1,3 8,7 28
Pšenica 9,5 6,4 20
Kupus 4,4 2,9 12
Krompir 3,8 2,5 10
VIII vežba – Primena u građevinarstvu
89
VII grupa
Sastaviti algoritam i napisati program za tabelarno prikazivanje vrednosti horizontalnog
pritiska na tlo, na bočnim površinama masivnog dubokog temelja, primenom sledećeg
izraza
0z m z z z tg
Na ulazu su zadate vrednosti 0, , , .p km z z z z z Izlazna lista neka izgleda:
z z
xx.xx xx.xx
xxx.xxxmax (za z = xxx.xx)
VIII grupa
Poroznost drveta se definiše izrazom
0
21 100[%],
3
gde je 3
0 [ / ]t m zapreminska masa. Sastaviti algoritam i napisati program za
izračunavanje vrednosti α za vrste drveta prikazane sledećom tabelom
Vrsta drveta Zapreminska masa 3
0 ( / )t m
Jela 0,43
Bor 0,49
Bukva 0,68
Hrast 0,65
IX grupa
Sastaviti algoritam i napisati program za tabeliranje vrednosti stvarnog pritiska vodene
pare u funkciji od minimalne temperature (Tmin)
min
min
17,27
237,3
min( ) 0,611
T
TVP T e .
Za n unetih vrednosti Tmin izračunati vrednosti stvarnog pritiska vodene pare.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
90
X grupa
Minimalni poluprečnik Rmin se određuje iz uslova stabilnosti vozila u krivini sa
2
min
,max
[ ],127( )
r
r pk
VR m
f i
gde je ]h/km[Vr - računska brzina, [%]i max,pk - maksimalni poprečni ugib kolovoza u
krivini, %7i max,pk , rf - koeficijent radijalnog otpora klizanja. Sastaviti algoritam i
napisati program za izračunavanje vrednosti Rmin za vrednosti rV i rf prikazane sledećom
tabelom
Vr (km/h) 30 40 50 60 70
rf 0,245 0,218 0,193 0,171 0,151
Cilj vežbe
Upoznavanje sa softverskim paketom Mathematica
Upoznavanje sa operatorima
Implementacija korisnički definisanih funkcija
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
92
Teorijske osnove za izradu vežbe
9.1. Grafički korisnički interfejs paketa Mathematica
Mathematica je razvijena u softverskoj kompaniji Wolfram Research i predstavlja
programski paket za matematičke i druge primene (tehnologija, finansije, medicina,
istraživanje, obrazovanje). Posebno je pogodna za obradu numeričkih podataka, za
simbolička procesiranja, kao i za grafičko prikazivanje podataka i funkcija.
Za rad u programskom paketu Mathematica koriste se dokumenta koja se zovu beležnici
(engl. notebooks) i zato Mathematica dokumenti nose oznaku *.nb . Beležnici se sastoje od
ćelija koje mogu sadržati tekst, izračunavanja ili grafikone. Ćelija se prepoznaje po
zagradama sa desne strane ([ ]). Ulazni podaci na osnovu kojih se vrši izračunavanje u
paketu Mathematica se unose u ulaznim ćelijama koje se prepoznaju po oznaci In[n]:=, a
rezultati i odgovori se nalaze u izlaznoj ćeliji Out[n]=. Broj n se dodaje automatski.
Da bi se kreirala nova ulazna ćelija, treba pritisnuti ENTER van postojeće ćelije i početi sa
kucanjem. Nakon unosa podataka treba pritisnuti taster SHIFT u kombinaciji sa tasterom
ENTER. Mathematica vrši izračunavanje na osnovu unetih podataka i daje izlazni rezultat
u izlaznoj ćeliji odmah ispod ulazne ćelije. Prekid računanja se postiže tasterima
[Alt][,] ili [Alt][.].
Komentari se pišu unutar oznaka (* i *) i nemaju izvršnu vrednost. Na primer
(* Vezba 1 *)
Naredba Print prenosi tekst i vrednosti promenljivih u izlaznu ćeliju.
Na slici 9.1 prikazan je izgled grafičkog korisničkog interfejsa paketa Mathematica.
Slika 9.1. Prikaz grafičkog korisničkog interfejsa paketa Mathematica
IX vežba – Softverski paket Mathematica
93
Meni File omogućava stvaranje novih dokumenata, otvaranje postojećih i pamćenje nove
verzije, kao i štampanje dokumenta. Meni Edit omogućava izmene sadržaja dokumenta.
Meni Cell omogućava rad sa ćelijama dokumenta i njihovo organizovanje na različite
načine, odnosno omogućava organizaciju izgleda sveske (engl. notebook) preme želji
korisnika. Meni Format pruža mogućnost za izvođenje različitih manipulacija sa tekstom i
graficima. Meni Input omogućava različitu prezentaciju ulaznih i izlaznih podataka. Meni
Kernel omogućava upravljanje jezgrom paketa Mathematica. Meni Find služi za
pretraživanje dokumenta. Meni Windows omogućava da se podesi raspored prozora koji
prikazuju otvorena dokumenta. Meni Help pruža korisniku pomoć i informacije o
mogućnostima paketa Mathematica.
Palete (engl. pallets) predstavljaju jednostavan način pristupanja sadržajima koje
Mathematica nudi i korišćenja njenih mogućnosti. U meniju File/Pallets dostupne su
sledeće palete:
1. Basic Input - paleta osnovnih matematičkih pojmova,
2. Basic Calculations - paleta osnovnih matematičkih operacija,
3. Algebraic Manipulation - paleta koja omogućava rad sa delovima algebarskih izraza,
4. Basic Typesetting - paleta uobičajenih objekata i operacija potrebnih pri kucanju
matematičkih formula,
5. Notebook Launcher - kreiranje novih programa u različitim stilovima,
6. Complete Characters - paleta specijalnih znakova,
7. International Characters - paleta internacionalnih znakova.
9.2. Tipovi podataka i aritmetičke operacije
Postoje sledeći tipovi brojeva: Integer, Rational, Real i Complex (tabela 9.1).
Tabela 9.1. Tipovi podataka
Tip broja Objašnjenje
Integer Celi brojevi proizvoljne dužine
Rational Racionalni brojevi oblika Integer/Integer
Real Približni realni brojevi sa proizvoljnom specificiranom tačnošću
Complex Kompleksan broj oblika x+y I, gde su x i y realni brojevi
U tabeli 9.2 prikazane su aritmetičke operacije u paketu Mathematica.
Tabela 9.2. Aritmetičke operacije
Aritmetička
operacija
Mathematica Primer
sabiranje + x + y
oduzimanje - x - y
množenje praznina ili * x y ili x * y
deljenje / x / y
stepenovanje ^ x ^ y
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
94
Primer 9.1. a) Sabrati dva cela broja 10 i 8.
Rešenje:
In[1]:= 10 + 8
Out[1]= 18
Primer 9.2. Naći treći stepen broja 2.
Rešenje:
In[2]:= 2 ^ 3
Out[2]= 8
Za izvršavanje operacije množenje koristi se praznina ili znak *.
Znak % se može koristiti za rezultat poslednjeg izvršenog proračuna.
Primer 9.3.
In[3]:= 3 ^ 2
Out[3]= 9
In[4]:= Sqrt[%]
Out[4]= 3
Izraz //N ili N[izraz] uvek daje približan numerički rezultat.
In[5]:= 1/3 + 2/7
Out[5]= 13/21
In[6]:= 1/3 + 2/7 //N
Out[6]= 0.619048
Ukoliko je potrebno da se odredi broj značajnih cifara nekog izlaznog rezultata koristi se
N[izraz, n] gde je n broj značajnih cifara.
In[7]:= N[1/3 + 2/7, 4]
Out[7]= 0.6190
In[8]:= N[Pi, 50]
Out[8]= 3.1415926535897932384626433832795028841971693993751
IX vežba – Softverski paket Mathematica
95
9.3. Konstante
Veličina čija se vrednost ne može menjati u toku izvršavanja programa naziva se
konstanta. Konstantama se mogu dodeljivati simbolička imena, koja se mogu koristiti
umesto njih. Poznate simboliče konstante imaju svoja posebna, rezervisana imena (tabela
9.3).
Tabela 9.3. Konstante
Mathematica Matematička konstanta
Pi 14159.3
E 71828.2e Degree 180/ - faktor konverzije stepena u radijane
I 1i
Infinity
Imena svih konstanti, kao i svih funkcija koje su definisane u paketu Mathematica počinju
velikim slovom.
9.4. Promeljive
Promenljive su veličine koje menjaju svoju vrednost u programu. Svaka promenljiva ima
svoje simboličko ime. Promenljive se nazivaju simboli i predstavljaju osnovne imenovane
objekte u jeziku Mathematica. Ime koje se koristi kao simbol mora da bude sekvenca slova
i cifara, koja ne počinje cifrom. Velika i mala slova se razlikuju. Simbolima se ne može
dodeliti ime postojećih funkcija i konstanti u paketu Mathematica.
U tabeli 9.4 prikazani su načini dodele vrednosti promenljivama.
Tabela 9.4. Dodela vrednosti promenljivama
Operacija Mathematica
Dodela vrednosti promenljivoj x x = vrednost
Dodela vrednosti promenljivama x i y x = y = vrednost
Odbacuje se vrednost dodeljena promenljivoj x x = . ili Clear[x]
Trenutna dodela x /. a
Odložena dodela x := a
Sledećim primerom se promenljivoj x dodeljuje vrednost 10.
In[9]:= x = 10
Out[9]= 10
U jednoj liniji je moguće napisati više matematičkih operacija korišćenjem znaka ;.
In[10]:= x = 2; y = 80; z = y - x
Out[10]= 78
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
96
Trenutna dodela ima dejstvo samo u navedenoj liniji.
In[11]:= x//Print; x/.x→5//Print; x//Print
Out[11]= x 5 x
Odložena dodela ima dejstvo samo u svim sledećim pozivanjima.
In[12]:= x//Print; x:=5; x//Print; x + 2//Print
Out[12]= x 5 7
Vrednosti promenljivih se prenose i u sledeće ćelije.
In[13]:= x = 5
Out[13]= 5
In[14]:= (x + y) ^ 2
Out[14]= (5+y)2
Ako ne želimo ovaj prenos, možemo ga sprečiti početnom naredbom Clear[x]. Zabranu
bilo kakvog prenosa podataka između ćelija postižemo naredbom Clear["Global′∗"] .
9.5. Relacioni i logički operatori
U tabeli 9.5 prikazani su relacioni operatori.
Tabela 9.5. Relacioni operatori
Relacioni operator Mathematica
= ==
≠ !=
> >
>=
< <
<=
U tabeli 9.6 prikazani su logički operatori.
Tabela 9.6. Logički operatori
Logički operator Mathematica p !
qp p && q qp p || q
qp Xor[p, q]
IX vežba – Softverski paket Mathematica
97
Primer 9.4. Naći vrednost izraza 12 34 2 13.
Rešenje:
In[15]:= 12 > 34 && 2 != 13
Out[15]= False
9.6. Matematičke funkcije
Sve ugrađene matematičke funkcije rade na sličan način: njihova imena počinju velikim
slovom, a argumenti im se nalaze u uglastim zagradama (tabela 9.7).
Tabela 9.7 Matematičke funkcije
Matematička funkcija Mathematica
x
Abs[x]
x Sqrt[x]
xe Exp[x]
ln x Log[x]
logb x
Log[b, x]
Trigonometrijske funkcije (argumenti su u
radijanima)
Sin[x], Cos[x], Tan[x], Cot[x]
Inverzne trigonometrijske funkcije ArcSin[x], ArcCos[x], ArcTan[x],
ArcCot[x]
Hiperboličke funkcije Sinh[x], Cosh[x], Tanh[x], Coth[x]
Inverzne hiperboličke funkcije ArcSinh[x], ArcCosh[x], ArcTanh[x],
ArcCoth[x]
Zaokruživanje na ceo deo broja x Round[x]
Celobrojni ostatak pri deljenju (n moduo m) Mod[n, m]
Slučajni brojevi između 0 i 1 Random[ ]
Maksimum, minimum od x, y, ... Max[x, y, ...], Min[x, y, ...]
m na ^ ( / )a n m
Za trigonometrijske funkcije podrazumevana vrednost argumenta je data u radijanima.
Mathematica ima mogućnost simboličkog i numeričkog izračunavanja vrednosti funkcija.
Primer 9.5. Naći tačnu i numeričku vrednost cos /6.
Rešenje:
In[16]:= Cos[Pi/6]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
98
Out[16]=
3
2
In[17]:= Cos[Pi/6]//N
Out[17]= 0.866025
Primer 9.6. Naći numeričku vrednost za sin 20
.
Rešenje:
In[18]:= Sin[20 Degree] //N
Out[18]= 0.34202
Primer 9.7. Naći numeričku vrednost za
3216
125 .
Rešenje:
In[19]:= N[(216/125) ^ (1/3)]
Out[19]= 1.2
9.7. Korisnički definisane funkcije
Funkcija više promenljivih definiše se izrazom
funkcija[x_, y_, ...] := izraz.
Pri definisanju funkcije treba voditi računa da se argumenti navode u uglastim zagradama,
a svaki element u listi parametara se završava znakom za podvlačenje _. Umesto znaka
jednakosti stoji znak odložene dodele := koji ukazuje na to da će funkcija naknadno dobiti
vrednost kada promenljive uzmu konkretne vrednosti.
Primer 9.8. Naći vrednost funkcije ( ) 2 5f x x za x = 3,2.
Rešenje:
In[20]:= f[x_] := 2 x+5
In[21]:= f[3.2]
Out[21]= 11.4
Funkcije mogu imati proizvoljan broj argumenata.
Primer 9.9. Napisati funkciju za sabiranje dva broja. Testirati funkciju za argumente 10 i
3.
IX vežba – Softverski paket Mathematica
99
Rešenje:
In[22]:= f[x_, y_] := x + y
In[23]:= f[10, 3]
Out[23]= 13
Primer 9.10. Za proizvoljno unete vrednosti x i y napisati funkciju oblika
3
2 2, 3
x yf x y x y
x y.
Funkciju testirati za vrednosti 0,25x i 0,5y .
Rešenje:
In[23]:= f[x_, y_] := 3 x + y ^ 2 + (x ^ 3 - 2 y) / (x + y)
In[24]:= f[0.25, 0.5]
Out[24]= -0.3125
Primer 9.11. Neka je data funkcija oblika
2, 0( ) .
3, 0
x xf x
x x
Odrediti vrednosti funkcije za x = 10 i x = -3.
Rešenje:
In[25]:= f[x_]:= x + 2 /; x > 0
f[x_]:= x - 3 /; x < 0
In[26]:= f[10]
Out[26]= 12
In[27]:= f[-3]
Out[27]= -6
Napomena: Oznaka /; ukazuje na uslove pod kojima se funkcija izračunava po navedenoj
formuli.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
100
Zadaci za vežbu
I grupa
Za proizvoljno unetu vrednost x napisati funkciju oblika
2 2
cos 3sin cos
x xf x x
x x
.
Funkciju testirati za vrednost 0,25x .
II grupa
Neka je data funkcija oblika
sin 2 , 0( ) .
3 , 0
x xf x
x x
Odrediti vrednosti funkcije za x = π/3 i x = -2.
III grupa
Neka je data funkcija oblika
,0 1
( ) 1,1 2 .
3 ,2 3
x x
f x x
x x
Odrediti vrednosti funkcije za x = 0,3 i x = 1,5.
IV grupa
Neka je data funkcija oblika
3 , 0
( ) ,0 1.
sin , 1
x x
f x x x
x x
Odrediti vrednosti funkcije za x = -1, x = 1 i x = π/2.
IX vežba – Softverski paket Mathematica
101
V grupa
Naći 20. element Fibonačijevog niza ako važi:
(0) 1,
(1) 1,
( ) ( 1) ( 2).
f
f
f n f n f n
VI grupa
Neka je data funkcija oblika
2 2( , , ) ln sin cos .c c
f a b c a e b e
Odrediti vrednost funkcije za a = π/2, b = π/3 i c = 1.
VII grupa
Neka je data funkcija oblika
2 cos( , ) ln 0,2 .
xy
yf x y tg x
e
Odrediti vrednost funkcije za x = 1 i y = 0,5.
VIII grupa
Neka je data funkcija oblika
3
2 2
sin( )
ln sin
x xf x
x
.
Odrediti vrednosti funkcije za x = 0,5.
IX grupa
a) Naći prvih 20 značajnih cifara izraza 11.
b) Izračunati 3
216
27.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
102
X grupa
Neka je data funkcija oblika
2
5, 0 10
( ) 3 20,10 20 .
15 2 , 20 30
x x
f x x x x
x x
Odrediti vrednosti funkcije za x = 3 i x = 15.
Cilj vežbe
Upoznavanje sa linearnom algebrom u paketu Mathematica
Savladavanje načina određivanja sopstvenih vrednosti i sopstvenih vektora
matrice
Rešavanje sistema jednačina korišćenjem matričnog računa
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
104
Teorijske osnove za izradu vežbe
Vektori i matrice se u paketu Mathematica predstavljaju putem listi (tabela 10.1).
Tabela 10.1. Predstavljanje vektora i matrica
Operacija Mathematica
Vektor ( , , )a b c {a, b, c}
Matrica a b
c d
{{a, b}, {c, d}}
Prikaz matrice vrši se naredbom MatrixForm[lista] ili lista//MatrixForm.
10.1. Vektori
Skalarni proizvod vektora
In[1]:= {a, b, c} . {x, y, z}
Out[1]= a x + b y + c z
Norma vektora
In[2]:= Norm[{x, y, z}]
Out[2]= 2 2 2[ ] [ ] [ ]Absx Abs y Absz
Vektorski proizvod
In[3]:= Cross[{a, b, c}, {x, y, z}]
Out[3]= {-c y + b z, c x - a z,-b x + a y}
Ortogonalizacija vektora
In[4]:= Orthogonalize[{{1, 0, 1},{1, 1, 1}}]
Out[4]= {{1/ 2,0,1/ 2},{0,1,0}}
Projekcija jednog na drugi vektor
In[5]:= Projection[{5, 6, 7}, {1, 1, 1}]
Out[5]= {6,6,6}
X vežba – Linearna algebra
105
10.2. Matrice
Primer 10.1. Prikazati matricu oblika
3x3
2 3 4
3 4 5 .
4 5 6
A
Rešenje:
In[6]:= A = {{2, 3, 4}, {3, 4, 5}, {4, 5, 6}}
Out[6]= {{2,3,4},{3,4,5},{4,5,6}}
In[7]:= MatrixForm[A]
Out[7]=//MatrixForm=
654
543
432
Vektori i matrice proizvoljnog reda definišu se naredbom Table[ ].
Primer 10.2. Uvesti matricu oblika
1 2 ...
2 3 1.
1 2 1
n
nA
n n n
Rešenje:
In[8]:= A[n_] := Table[i + j - 1, {i, 1, n}, {j, 1, n}]
Operatori za rad sa matricama su prikazani u tabeli 10.2.
Tabela 10.2. Operacije nad matricama
Matrične operacije Mathematica
Množenje matrice a skalarom m a m
Proizvod matrica a i b a . b
Inverzna matrica Inverse[a]
n-ti stepen matrice a MatrixPower[a, n]
Determinanta matrice a Det[a]
Transponovanje matrice a Transpose[a]
Jedinična matrica dimenzije n IdentityMatrix[n]
Primer 10.3. Odrediti proizvod matrica
3 3
1 2 3
2 4 6
3 6 7
x
A i
3 3
1 2 4
1 2 4 .
1 2 4
x
B
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
106
Rešenje:
In[9]:= A = {{1, 2, 3}, {2, 4, 6}, {3, 6, 7}}
Out[9]= {{1, 2, 3},{2, 4, 6},{3, 6, 7}}
In[10]:= B = {{-1, -2, -4}, {-1, -2, -4}, {1, 2, 4}}
Out[10]= {{-1, -2, -4},{-1, -2, -4},{1, 2, 4}}
In[11]:= A.B
Out[11]= {{0, 0, 0},{0, 0, 0},{0, 0, 0}}
Primer 10.4. Odrediti proizvod matrica
3 1
2
1
3
x
A i 1 3
1 2 3 .x
B
Rešenje:
In[12]:= A = {{2}, {1}, {3}}
Out[12]= {{2},{1},{3}}
In[13]:= B = {{1, 2, 3}}
Out[13]= {{1, 2, 3}}
In[14]:= A.B
Out[14]= {{2, 4, 6},{1, 2, 3},{3, 6, 9}}
Primer 10.5. Naći inverznu matricu matrice
3 3
6 3 1
1 1 1 .
3 2 1
x
A
Rešenje:
In[15]:= A = {{6, 3, 1}, {1, 1, 1}, {3, 2, 1}}
Out[15]= {{6, 3, 1},{1, 1, 1},{3, 2, 1}}
In[16]:= Inverse[A]
Out[16]= {{1, 1, -2},{-2, -3, 5},{1, 3, -3}}
Primer 10.6. Naći peti stepen matrice
2 2
1 1.
0 1
x
A
Rešenje:
In[17]:= A = {{1, 1}, {0, 1}}
Out[17]= {{1, 1},{0, 1}}
In[18]:= MatrixPower[A, 5]
Out[18]= {{1, 5},{0, 1}}
X vežba – Linearna algebra
107
Primer 10.7. Naći determinantu matrice
4 4
1 1 3 4
2 0 0 8.
3 0 0 2
4 4 7 5
x
A
Rešenje:
In[19]:= A = {{1, 1, 3, 4}, {2, 0, 0, 8}, {3, 0, 0, 2}, {4, 4, 7, 5}}
Out[19]= {{1, 1, 3, 4},{2, 0, 0, 8},{3, 0, 0, 2},{4, 4, 7, 5}}
In[20]:= Det[A]
Out[20]= 100
Primer 10.8. Naći transponovanu matricu matrice
3 3
6 3 1
1 1 1 .
3 2 1
x
A
Rešenje:
In[21]:= A = {{6, 3, 1}, {1, 1, 1}, {3, 2, 1}}
Out[21]= {{6, 3, 1},{1, 1, 1},{3, 2, 1}}
In[22]:= Transpose[A]
Out[22]= {{6, 1, 3},{3, 1, 2},{1, 1, 1}}
Primer 10.9. Generisati jediničnu matricu reda 3.
Rešenje:
In[23]:= IdentityMatrix[3]
Out[23]= {{1, 0, 0},{0, 1, 0},{0, 0, 1}}
10.3. Sistem jednačina u matričnom obliku
Neka je zadat sistem linearnih jednačina u matričnom obliku A X = B, pri čemu je A
matrica sistema, X kolona nepoznatih i B kolona slobodnih članova, pomoću
X = LinearSolve[A, B] možemo da izračunamo rešenje sistema ako postoji.
Ukoliko postoji više, ili beskonačno mnogo rešenja tog sistema, funkcija vraća jedno od
njih.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
108
Primer 10.10. Naći rešenje sistema jednačina zadatog u matričnom obliku
1 2 5,4X
4 6 2
Rešenje:
In[24]:= A = {{1, 2}, {4, 6}}
B = {5.4, 2}
X = LinearSolve[A, B]
Out[24]= {{1, 2}, {4, 6}}
Out[25]= {5.4, 2}
Out[26]= {-14.2, 9.8}
10.4. Sopstvene vrednosti i sopstveni vektori
Neka je data matrica A. Funkcija Eigenvalues[A] određuje sopstvene vrednosti matrice A.
Sopstvene vektore daje funkcija Eigenvectors[A].
Sopstvene vrednosti i vektore možemo zapisati kao uređene parove pomoću
Eigensystem[A].
Primer 10.11. Neka je zadata matrica A oblika
2x2
1 2.
3 2
A
Rešenje:
In[27]:= A = {{1, 2}, {3, 2}}
Eigenvalues[A]
Out[27]= {4, -1}
In[28]:= Eigenvectors[A]
Out[28]= {{2, 3}, {-1, 1}}
In[29]:= Eigensystem[A]
Out[29]= {{4, -1}, {2, 3}, {-1, 1}}
X vežba – Linearna algebra
109
Zadaci za vežbu
I grupa
Naći sopstvene vrednosti i sopstvene vektore matrice
3x3
3 1 1
1 3 1
1 1 1
A .
II grupa
Koristeći matričnu jednačinu rešiti sistem jednačina:
2 3
2 2
1
x y z
x z
x y z
III grupa
Koristeći matričnu jednačinu rešiti sistem jednačina:
2 5
3 4 9
8 3 18
x y z
x y z
x y z
IV grupa
Neka je
3x3
2 4 5
3 7 5
8 1 8
A i
3x3
6 1 3
6 8 2
3 1 6
B . Izračunati: a) A + B, b) B - 2A.
V grupa
Neka je
3x3
5 4 5
3 7 3
4 1 6
A i
3x3
4 2 3
6 5 2
3 3 4
B . Izračunati: a) A-1
, b) (A + B)T,
c) det B.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
110
VI grupa
Neka su dati vektori ( 1 4 9 12) u i (0 2 4 3) .v Naći: a) 2v – u, b) v + u, c) uv .
VII grupa
Prelaskom na matrični oblik, rešiti sistem jednačina:
2 3 9
3 5 4
4 7 2 5
x y z
x y z
x y z
VIII grupa
Koristeći matričnu jednačinu rešiti sistem jednačina:
3 2 1
2 3 1
4 5 2 2
x y z
x y z
x y z
IX grupa
Neka je
3x3
2 3 8
13 7 5
18 11 18
A i
3x3
16 11 3
6 18 12
3 11 6
B . Izračunati: a) A + B,
b) B - 2A, c) det B, d) (A + B)T.
X grupa
Naći sopstvene vrednosti i sopstvene vektore matrice
3x3
1 1 3
2 3 1
4 1 2
A .
Cilj vežbe
Savladavanje simboličkog izračunavanja kroz algebarske transformacije,
određivanje graničnih vrednosti, određivanje parcijalnih izvoda funkcija,
rešavanje sistema linearnih jednačina, rešavanje diferencijalnih jednačina,
izračunavanje neodređenog i određenog integrala
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
112
Teorijske osnove za izradu vežbe
11.1. Algebarske transformacije
U tabeli 11.1 date su funkcije za konvertovanje između različitih oblika algebarskih izraza.
Tabela 11.1. Funkcije za konvertovanje algebarskih izraza
Opis funkcije Mathematica
Ekspanzija proizvoda i stepena u polinomu p Expand[p]
Faktorizacija izraza p Factor[p]
Izdvajanje zajedničkih faktora u p FactorTerms[p]
Zapis polinoma u obliku sume stepena promenljive x Collect[p, x]
Zapis polinoma u obliku sume stepena od x, y, ... Collect[p, {x, y, …}]
Funkcije za algebarske operacije sa polinomima prikazane su u tabeli 11.2.
Tabela 11.2. Funkcije za algebarske operacije sa polinomima
Opis funkcije Mathematica
Količnik deljenja polinoma p1 po x polinomom p2, pri
čemu se odbacuje ostatak
PolynomialQuotient[p1, p2, x]
Ostatak deljenja polinoma p1 po x polinomom p2 PolynomialRemainder[p1, p2, x]
NZD dva polinoma PolynomialGCD[p1, p2]
NZS dva polinoma PolynomialLCM[p1, p2]
Redukcija polinoma p po modulu m PolynomialMod[p, m]
Primer 11.1. a) Odrediti faktore polinoma 2 212 27 84 ,x xy y b) izračunati proizvod
polinoma 2( )x y i
3(3 )x y .
Rešenje:
a) In[1]:= Factor[12 x^2+ 27 x y - 84 y ^ 2]
Out[1]= 3 (4 x-7 y) (x+4 y)
b) In[2]:= Expand[(x+y)^2 (3 x - y) ^ 3]
Out[2]= 5 4 3 2 4 527 27 18 7x x y x y xy y
Primer 11.2. Odrediti količnik i ostatak pri deljenju polinoma 4 315 10 2 1x x x
polinomom 1.x
Rešenje:
In[3]:= PolynomialQuotient[15 x^4-10 x^3+2 x +1, x + 1, x]
Out[3]= 2 323 25 25 15x x x
In[4]:= PolynomialRemainder[15 x^4-10 x^3+2 x +1, x + 1, x]
Out[4]= 24
XI vežba – Simbolička izračunavanja
113
11.2. Sume i proizvodi
Upotrebom softverskog paketa Mathematica mogu se izračunati konačne i beskonačne
sume i proizvodi (tabela 11.3).
Tabela 11.3. Sume i proizvod
Operacija Mathematica
maxi
miniiif
Sum[ f , {i, imin, imax}]
Suma po i sa korakom d
2 ( ( 1) ) a a d a d a ndf f f f a nd b a n d
Sum[ f , {i, a, b, d}]
Ponovljene sume
maxi
minii
maxj
minjjijf
Sum[ f , {i, imin, imax},
{j, jmin, jmax}]
n
miif
Product[ f , {i, m, n}
Ponovljeni proizvodi
maxi
minii
maxj
minjjijf
Product[ f , {i, imin, imax},
{j, jmin, jmax}]
Primer 11.3. Odrediti sumu oblika 4
1
.i
i
x
Rešenje:
In[5]:= Sum[x^i, {i, 1, 4}]
Out[5]= 2 3 4x x x x
Primer 11.4. Odrediti sumu oblika2
1 1
.i
i j
i j
x y
Rešenje:
In[6]:= Sum[x^i y^j, {i, 1, 2}, {j, 1, i}]
Out[6]= 2 2 2x y x y x y
Primer 11.5. Odrediti tačnu i približnu sumu reda 2
1
1.
i i
Rešenje:
In[7]:= Sum[1/ i^2, {i, 1, Infinity}]
Out[7]= 2
6
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
114
In[8]:= NSum[1/ i^2, {i, 1, Infinity}]
Out[8]= 1.64493
Primer 11.6. Odrediti proizvod oblika 5
1
.2i
i
i
Rešenje:
In[9]:= NProduct[i / 2 ^ i, {i, 1, 5}]
Out[9]= 0.00366211
11.3. Rešavanje jednačina
Za rešavanje jednačina koristi se oblik
Solve[leva_strana == desna_strana, x]
Ova naredba daje potpuno tačna rešenja u simboličkom obliku kad je to moguće.
Primer 11.7. Naći rešenja kvadratne jednačine 2 2 8 0.x x
Rešenje:
In[10]:= Solve[x ^ 2 + 2 x - 8 == 0, x]
Out[10]= {{x-4},{x2}}
Primer 11.8. Naći rešenja kvadratne jednačine 2 3 1 0 x x .
Rešenje: Rešenja ove jednačine sadrže u sebi iracionalne brojeve
In[11]:= Solve[x ^ 2 + 3 x + 1 == 0, x]
Out[11]= 1 1
{{ ( 3 5)},{ ( 3 5)}}2 2
x x
Primer 11.9. Naći rešenja kvadratne jednačine 2 2 2 0 x x .
Rešenje: Ova jednačina ima kompleksna rešenja
In[12]:= Solve[x ^ 2 + 2 x + 2 == 0, x]
Out[12]= {{x-1-},{x-1+}}
Međutim, za dosta složene jednačine eksplicitne algebarske formule se ne mogu prikazati.
Za jednačine do stepena 4 Mathematica može dati rešenja. Ako je stepen 4 ili veći
XI vežba – Simbolička izračunavanja
115
matematički je nemoguće dati eksplicitne algebarske formule za sva rešenja. Tada tražimo
numerička rešenja pomoću naredbe NSolve.
Primer 11.10. Naći rešenja kvadratne jednačine 5 3 1 0 x x .
Rešenje: Ova jednačina ima kompleksna rešenja
In[13]:= NSolve[x ^ 5 - 3 x + 1 == 0, x]
Out[13]= {{x-1.38879},{x-0.0802951-1.32836}, {x-0.0802951+1.32836 },{x0.334734},{x1.21465}}
Funkcijom
Solve[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]
mogu se rešavati sistemi jednačina. Tako se dobija jedno rešenje specificiranog sistema po
promenljivim x, y, ..., iako može postojati više rešenja. Ako sistem nema rešenja, kao izlaz
se dobija prazna lista.
Primer 11.11. Naći rešenja sistema jednačina
2 10
5
x y
x y
Rešenje:
In[14]:= Solve[{2 x - y 10, x + y 5}, {x, y}]
Out[14]= {{x5,y0}}
Ukoliko rešenja postoje samo za specijalne vrednosti parametara, one se određuju
funkcijom
Reduce[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]
Takođe, ako sistem ima više rešenja, mogu se dobiti funkcijom Reduce.
Funkcijom
Eliminate[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]
može se sistem jednačina pojednostaviti koristeći eliminaciju navedenih promenljivih.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
116
11.4. Granične vrednosti
Funkcije za određivanje graničnih vrednosti date su u tabeli 11.4.
Tabela 11.4. Granične vrednosti
Opis Mathematica
Granična vrednost funkcije f kada 0xx , )x(flim0xx
Limit[f, 0xx ]
Granična vrednost funkcije f kada 0xx sa leve
strane
Limit[f, 0xx , Direction 1]
Granična vrednost funkcije f kada 0xx sa desne
strane
Limit[f, 0xx , Direction -1]
Primer 11.12. Odrediti graničnu vrednost 0
sin3lim .x
x
x
Rešenje:
In[15]:= Limit[Sin[3 x] / x, x -> 0]
Out[15]= 3
Primer 11.13. Odrediti graničnu vrednost 3
0
1lim .x
xe
x
Rešenje:
In[16]:= Limit[Exp[3 x] – 1 / x, x -> 0]
Out[16]= -
Primer 11.14. Odrediti graničnu vrednost 2lim .x
xe x
Rešenje:
In[17]:= Limit[Exp[-2 x] Sqrt[x], x-> Infinity]
Out[17]= 0
Primer 11.15. Odrediti graničnu vrednost 0
lim .x
x
x
Rešenje:
In[18]:= Limit[Abs[x] / x, x -> 0, Direction -> -1]
Out[18]= 1
XI vežba – Simbolička izračunavanja
117
Primer 11.16. Odrediti graničnu vrednost
1
0lim .x
xe
Rešenje:
In[19]:= Limit[Exp[-1 / x], x -> 0, Direction -> 1]
Out[19]=
11.5. Diferenciranje
Funkcije za numeričko i simboličko diferenciranje date su u tabeli 11.5.
Tabela 11.5. Diferenciranje
Opis Mathematica
Prvi, drugi i treći izvod funkcije f jedne promenljive f'[x], f''[x], f'''[x]
n-ti izvod funkcije jedne promenljive D[f,{x, n}]
Parcijalni izvod
f
x i
f
y
D[f, x]
D[f, y]
Mešoviti parcijalni izvod
m n
m n
f
x y
D[f, {x, m},{y, n}]
Primer 11.17. Odrediti izvod funkcije1
( ) .f x xx
Rešenje:
In[20]:= D[x + 1 / x, x]
Out[20]= 2
11
x
Primer 11.18. Odrediti treći izvod funkcije ( ) cos .f x x
Rešenje:
In[21]:= D[Cos[x], {x, 3}]
Out[21]= Sin[x]
Primer 11.19. Odrediti prvi i drugi izvod funkcije ( ) cos .xf x e x
Rešenje:
In[22]:= f[x_]:= Exp[x] + Cos[x]
In[22]:= f'[x]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
118
Out[22]= xe Sin x
In[23]:= f''[x]
Out[23]= xe Cos x
Primer 11.20. Odrediti parcijalni mešoviti izvod 3
2
f
x yfunkcije 2ln ( ) f x y .
Rešenje:
In[24]:= f[x_, y_]:= Log[x + y ^ 2]
In[25]:= D[f[x, y],{x, 1},{y, 2}]
Out[25]=
2
2 3 2 2
8 2
( ) ( )
y
x y x y
11.6. Diferencijalne jednačine
Diferencijalne jednačine i sistemi diferencijalnih jednačina u čisto funkcionalnom obliku
rešavaju se funkcijom DSolve (tabela 11.6).
Tabela 11.6. Diferencijalne jednačine
Opis Mathematica
Rešavanje diferencijalne jednačine
za y[x], smatrajući x za nezavisnu
promenljivu
DSolve[jednačina, y[x], x]
Rešavanje sistema diferencijalnih
jednačina
DSolve[{jednačina1, jednačina2, …}, {y1, y2, …}, x]
Kada postoji rešenje, ali se ne može naći u tačnom obliku, naredba NDSolve pronalazi
približno rešenje diferecijalne jednačine.
11.6.1. Diferencijalne jednačine I reda
11.6.1.1. Diferencijalne jednačine sa razdvojenim promenljivama
Primer 11.21. Naći opšte rešenje diferencijalne jednačine
2 2
2.
3
x yy
x
Rešenje:
In[26]:= DSolve[y'[x] == (x ^ 2 y[x] ^2) / Sqrt[3 - x ^ 2], y[x], x]
XI vežba – Simbolička izračunavanja
119
Out[26]= 2
2y[x]
xx 3 x 3ArcSin 2C[1]
3
Primer 11.22. Naći opšte rešenje diferencijalne jednačine
2 2sin 1 . y x x x
Rešenje:
In[27]:= DSolve[y'[x] == x ^ 2 Sin[x] + Sqrt[1 + x ^ 2], y[x], x]
Out[27]=
2 21 ArcSinh[ ]y[x] 1 [1] ( 2 )Cos[ ] 2 Sin[ ]
2 2
xx x C x x x x
11.6.1.2. Homogena diferencijalna jednačina
Primer 11.23. Naći opšte rešenje diferencijalne jednačine
3 2 3
3 2
2.
x x y yy
x x y
Rešenje:
In[28]:= DSolve[y'[x] == (x ^ 3 + 2 x ^ 2 y[x] - y[x] ^ 3) / (x ^ 3 + x ^ 2 y[x]), y[x], x]
Out[28]= 2 [1] 2
2 [1] 2
( e )y[x]
e
C
C
x x
x
Primer 11.24. Naći opšte rešenje diferencijalne jednačine
2 23
.
x y
yx y
Rešenje:
In[29]:= DSolve[y'[x] == -(x ^ 2 - 3 y[x] ^ 2) / (x y[x]), y[x], x]
Out[29]= 2 6 2 6
2 [1] 2 [1]y[x] , y[x]
2 2
x x C x x C
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
120
11.6.1.3. Linearna diferencijalna jednačina
Primer 11.25. Naći opšte rešenje diferencijalne jednačine
21. y y x
x
Rešenje:
In[30]:= DSolve[y'[x] - y[x] / x == x ^ 2, y[x], x]
Out[30]= 3
y[x] [1]2
xxC
Primer 11.26. Naći opšte rešenje diferencijalne jednačine
2 3( 1) 2 2 2 0. x y xy x x
Rešenje:
In[31]:= DSolve[(x ^ 2 - 1) y'[x] - 2 x y[x] + 2 x - 2 x ^ 3 == 0, y[x], x]
Out[31]= 2 2 2y[x] ( 1 )[1] ( 1 )Log[ 1 ]x C x x
11.6.1.4. Bernoullieva diferencijalna jednačina
Primer 11.27. Naći opšte rešenje diferencijalne jednačine
24 0. xy y x y
Rešenje:
In[32]:= DSolve[x y'[x] - 4 y[x] - x ^ 2 Sqrt[y[x]] == 0, y[x], x]
Out[32]= 4 2 4 4 21y[x] (4 [1] 4 [1]Log[ ] Log[ ])
4x C x C x x x
Primer 11.28. Naći opšte rešenje diferencijalne jednačine
3 311 . y xy x y
Rešenje:
In[33]:= DSolve[y'[x] + 11 x y[x] == x ^ 3 y[x] ^ 3, y[x], x]
XI vežba – Simbolička izračunavanja
121
Out[33]=
2 22 11 2 11
11 11y[x] , y[x]
1 11 121e [1] 1 11 121e [1]x x
x C x C
11.6.1.5. Riccatieva diferencijalna jednačina
Primer 11.29. Naći opšte rešenje diferencijalne jednačine
2
2
23 0. y y
x
Rešenje:
In[34]:= DSolve[y'[x] + (2 / x ^ 2) - 3 y[x] ^ 2 == 0, y[x], x]//Simplify
Out[34]= 5
6
3 2 [1]y[x]
3 3 [1]
x C
x xC
11.6.2. Linearne diferencijalne jednačine II reda
11.6.2.1. Homogena linearna diferencijalna jednačina II reda sa konstantnim
koeficijentima
Primer 11.30. Naći opšte rešenje linearne diferencijalne jednačine
5 6 0. y y y
Rešenje:
In[35]:= DSolve[y''[x] + 5 y'[x] - 6 y[x] == 0, y[x], x]
Out[35]= 6y[x] e [1] e [2]
x xC C
Primer 11.31. Naći opšte rešenje linearne diferencijalne jednačine
4 4 0. y y y
Rešenje:
In[36]:= DSolve[y''[x] - 4 y'[x] + 4 y[x] == 0, y[x], x]
Out[36]= 2 2y[x] e [1] e [2]
x xC xC
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
122
11.6.2.2. Nehomogena linearna diferencijalna jednačina II reda sa
konstantnim koeficijentima
Primer 11.32. Naći opšte rešenje linearne diferencijalne jednačine
24 4 . xy y e
Rešenje:
In[37]:= DSolve[y''[x] - 4 y[x] == 4 Exp[-2 x], y[x], x]
Out[37]= 2 2 21y[x] e (1 4 ) e [1] e [2]
4
x x xx C C
Primer 11.33. Naći opšte rešenje linearne diferencijalne jednačine
4 2 (8 1)sin2 . y y x x
Rešenje:
In[38]:= DSolve[y''[x] + 4 y[x] == 2 + (8 x - 1) Sin[2 x], y[x], x]
Out[38]=
2 2
2 2
{{y[x] [1]Cos[2 ] [2]Sin[2 ]
1(4 Cos[2 ] 16 Cos[2 ] 8Cos[2 ] 2Cos[2 ]Cos[4 ]
16
2Cos[2 ]Sin[2 ] 8 Cos[4 ]Sin[2 ] 8Sin[2 ] Cos[2 ]Sin[4 ]
8 Cos[2 ]Sin[4 ] 2Sin[2 ]Sin[4 ])}}
C x C x
x x x x x x x
x x x x x x x x
x x x x x
11.6.2.3. Homogena linearna diferencijalna jednačina II reda sa
funkcionalnim koeficijentima
Primer 11.34. Naći opšte rešenje linearne diferencijalne jednačine
(2 ) 0. xy x y y
Rešenje:
In[39]:= DSolve[x y''[x] + (2 + x) y'[x] + y[x] == 0, y[x], x]
Out[39]= e [1] [2]
y[x]
xC C
x x
XI vežba – Simbolička izračunavanja
123
11.6.2.4. Eulerova diferencijalna jednačina
Primer 11.35. Naći opšte rešenje diferencijalne jednačine
2 3 4 0. x y xy y
Rešenje:
In[40]:= DSolve[x ^ 2 y''[x] - 3 x y'[x] + 4 y[x] == 0, y[x], x]
Out[40]= 2 2y[x] [1] 2 [2]Log[ ]x C x C x
Primer 11.36. Naći opšte rešenje diferencijalne jednačine
2 5 6 0. x y xy y
Rešenje:
In[41]:= DSolve[x ^ 2 y''[x] + 5 x y'[x] + 6 y[x] == 0, y[x], x]
Out[41]= 2 2
[2]Cos[ 2Log[ ]] [1]Sin[ 2Log[ ]]y[x]
C x C x
x x
11.6.2.5. Legendreova diferencijalna jednačina
Primer 11.37. Naći opšte rešenje diferencijalne jednačine
2(3 1) 5(3 1) 6 0. x y x y y
Rešenje:
In[42]:= DSolve[(3 x + 1) ^ 2 y''[x] + 5 (3 x + 1) y'[x] + 6 y[x] == 0, y[x], x]
Out[42]= 1/3 1/3
1 1[2]Cos[ 5Log[1 3 ]] [1]Sin[ 5Log[1 3 ]]
3 3{{y[x] }}(1 3 ) (1 3 )
C x C x
x x
11.6.2.6. Nehomogena linearna diferencijalna jednačina II reda sa
funkcionalnim koeficijentima
Primer 11.38. Naći opšte rešenje linearne diferencijalne jednačine
(2 ) . xxy x y y e
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
124
Rešenje:
In[43]:= DSolve[x y''[x] + (x + 2) y'[x] + y[x] == Exp[x], y[x], x]
Out[43]= e e [1] [2]
y[x]2
x xC C
x x x
11.6.3. Linearne diferencijalne jednačine višeg reda
11.6.3.1. Homogena linearna diferencijalna jednačina višeg reda sa
konstantnim koeficijentima
Primer 11.39. Naći opšte rešenje linearne diferencijalne jednačine
4 25 28 0. y y y y
Rešenje:
In[44]:= DSolve[y'''[x] - 4 y''[x] - 25 y'[x] + 28 y[x] == 0, y[x], x]
Out[44]= 4 7y[x] e [1] e [2] e [3]
x x xC C C
Primer 11.40. Naći opšte rešenje linearne diferencijalne jednačine
(4) 16 94 240 225 0. y y y y y
Rešenje:
In[45]:= DSolve[y''''[x] - 16 y'''[x] + 94 y''[x] - 240 y'[x] + 225 y[x] == 0, y[x], x]
Out[45]= 3 3 5 5y[x] e [1] e [2] e [3] e [4]
x x x xC xC C xC
11.6.3.2. Nehomogena linearna diferencijalna jednačina višeg reda sa
konstantnim koeficijentima
Primer 11.41. Naći opšte rešenje linearne diferencijalne jednačine
3 4 2 . xy y y y e
Rešenje:
In[46]:= DSolve[y'''[x] - 3 y''[x] + 4 y'[x] - 2 y[x] == Exp[x], y[x], x]
Out[46]= y[x] e e [3] e [2]Cos[ ] e [1]Sin[ ]x x x xx C C x C x
XI vežba – Simbolička izračunavanja
125
11.6.3.3. Homogena linearna diferencijalna jednačina višeg reda sa
funkcionalnim koeficijentima
Primer 11.42. Naći opšte rešenje linearne diferencijalne jednačine
3 22 0. x y x y xy y
Rešenje:
In[47]:= DSolve[x ^ 3 y'''[x] + 2 x ^ 2 y''[x] - x y'[x] + y[x] == 0, y[x], x]
Out[47]= [1]y[x] [2] [3]Log[ ]
CxC xC x
x
11.6.3.4. Nehomogena linearna diferencijalna jednačina višeg reda sa
funkcionalnim koeficijentima
Primer 11.43. Naći opšte rešenje linearne diferencijalne jednačine
3 2 22 . x y x y xy y x
Rešenje:
In[48]:= DSolve[x ^ 3 y'''[x] + 2 x ^ 2 y''[x] - x y'[x] + y[x] == x ^ 2, y[x], x]
Out[48]= 2
[1]y[x] [2] [3]Log[ ]
3
x CxC xC x
x
11.7. Integracija
Za izračunavanje integrala koristi se službena reč Integrate (tabela 11.7).
Tabela 11.7. Integracija
Operacija Mathematica
Neodređen integral dxf Integrate[f, x]
Višestruki integral dydxyxf ),( Integrate[f, x, y]
Određen integral maxx
minx
dxf Integrate[f, {x, xmin, xmax}]
Višestruki određen integral max
min
max
min
y
y
x
x
dxdyf Integrate[f, {x, xmin, xmax}, {y, ymin,
ymax}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
126
Primer 11.44. Odrediti vrednost integrala 7
.2
xI dx
x
Rešenje:
In[49]:= Integrate[(x + 7) / Sqrt[x + 2], x]
Out[49]= 2
2 (17 )3
x x
Primer 11.45. Za 1, n odrediti vrednost integrala .nI x dx
Rešenje:
In[50]:= Integrate[x ^ n, x]
Out[50]=
1
1
nx
n
Primer 11.46. Odrediti vrednost integrala
2
2.
1
x
I dxx
Rešenje:
In[51]:= Integrate[x ^ 2 / (x ^ 2 + 1), x]
Out[51]= x-ArcTan[x]
Primer 11.47. Odrediti vrednost integrala 2
0
.xI e dx
Rešenje:
In[52]:= Integrate[Exp[-x ^ 2], {x, 0, Infinity}]
Out[52]=
2
Primer 11.48. Odrediti vrednost integrala
1
0
ln.
xI dx
x
Rešenje:
In[53]:= Integrate[Log[x] / Sqrt[x], {x, 0, 1}]
Out[53]= -4
XI vežba – Simbolička izračunavanja
127
Za određivanje približne vrednosti integrala koristi se funkcija NIntegrate[f, x].
Primer 11.49. Odrediti vrednost integrala
1
0
sin(cos ) .I x dx
Rešenje:
In[54]:= N[Integrate[Sin[Cos[x]], {x, 0, 1}]]
Out[54]= 0.738643
Primer 11.50. Odrediti približnu vrednost integrala
1
0
2 5.
xI dx
x
Rešenje:
In[55]:= NIntegrate[Sqrt[2 Sqrt[x] + 5] / Sqrt[x],{x, 0, 1}]
Out[55]= 4.89328
Primer 11.51. Odrediti približnu vrednost integrala
2
20
2 6.
2 2
xI dx
x x
Rešenje:
In[56]:= NIntegrate[(2 x ^ 2 - 6) / Sqrt[x ^ 2 + 2 x + 2],{x, 0, π}]
Out[56]= -1.38969
Primer 11.52. Odrediti približnu vrednost integrala
1
2
0
ln . I x x dx
Rešenje:
In[57]:= NIntegrate[Sqrt[x] Log[x] ^ 2, {x, 0, 1}]
Out[57]= 0.592593
Primer 11.53. Odrediti vrednost višestrukog integrala
1
2 2
0 0
( ) . x
I dx x y dy
Rešenje:
In[58]:= Integrate[ x ^ 2 + y ^ 2, {x, 0, 1}, {y, 0, x} ]
Out[58]= 1
3
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
128
Primer 11.54. Odrediti vrednost višestrukog integrala
2 1
2
0 0
( 2 ) . I dy x y dx
Rešenje:
In[59]:= Integrate[ x ^ 2 + 2 y, {y, 0, 2}, {x, 0, 1} ]
Out[59]= 14
3
Primer 11.55. Odrediti vrednost višestrukog integrala 2
3 5
3 4
( 2 ) .
y
I dy x y dx
Rešenje:
In[60]:= Integrate[ x + 2 y, {y, -3, 3}, {x, y ^ 2 - 4, 5} ]
Out[60]= 252
5
Primer 11.56. Odrediti vrednost višestrukog integrala
21 1 1
0 2
.
x
x
I dx x dy
Rešenje:
In[61]:= Integrate[ x, {x, 0, 1}, {y, -x + 2, Sqrt[1 - x ^ 2] + 1} ]
Out[61]= 1
6
Primer 11.57. Odrediti vrednost višestrukog integrala
2
2
8
2 4
2
4
.
x
x
I dx dy
Rešenje:
In[62]:= Integrate[ 1, {x, -2, 2}, {y, x ^ 2 / 4, 8 / (x ^ 2 + 4)} ]
Out[62]= 4
23
XI vežba – Simbolička izračunavanja
129
Zadaci za vežbu
I grupa
a) Odrediti količnik i ostatak pri deljenju polinoma 6 33 2 1x x polinomom
3 2.x x
b) Odrediti sumu oblika 4
1
3.
2,5i
i
c) Naći rešenja jednačine 3 2 1 0.x x
d) Odrediti graničnu vrednost 1
1 1lim .
ln 1x x x
e) Odrediti prvi i drugi izvod funkcije5 3( ) 4 2 3.f x x x x
f) Rešiti diferencijalnu jednačinu 2 . xy y e
g) Odrediti vrednost integrala 2
1.
6I dx
x x
II grupa
a) Odrediti količnik i ostatak pri deljenju polinoma 5 4 32 3 1x x x x polinomom
3.x
b) Odrediti sumu oblika 30
1
( 2) .i
i
x
c) Naći rešenja jednačine 3 23 3 0.x x x
d) Odrediti graničnu vrednost 0
1 1lim .
1xx x e
e) Odrediti izvod funkcije2 2( ) .x xf x e e
f) Rešiti diferencijalnu jednačinu 25 0. xy x y
g) Odrediti vrednost integrala
21 1
2 2
0 0
14 .
4
x
I x y dydx
III grupa
a) Odrediti NZD polinoma 3 22 5 6 2x x x
i
3 26 3 2 1.x x x
b) Odrediti sumu oblika 2
1 1
(2 ).i
i j
i j
c) Naći rešenja sistema jednačina
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
130
2 3 8
3 2 5
1
x y z
x y z
x y z
d) Odrediti granične vrednosti
2
limx
tg x
i
2
limx
tg x
.
e) Odrediti drugi parcijalni izvod funkcije3 2( ) 10 8 4.f x x x x
f) Rešiti diferencijalnu jednačinu 2 24 2 0. y xyy x
g) Odrediti vrednost integrala
42
0
(1 tan ) .I x dx
IV grupa
a) Odrediti NZD polinoma 4 3 23 4 3x x x x
i 3 23 10 2 3.x x x
b) Odrediti proizvod oblika 5
2
1
3 .i
i
c) Naći rešenja sistema jednačina
2 2
2 3 4
3
x y z
x y z
x y z
d) Odrediti graničnu vrednost
2
20lim .
x
x
e x x
x
e) Odrediti prvi izvod funkcije1
( ) .ln
xf x
x x
f) Rešiti diferencijalnu jednačinu 21
2 .y y xx
g) Odrediti vrednost integrala
2
2
20
1.
1I dx
x
V grupa
a) Izračunati proizvod polinoma 2 2x i
4 22 6x x .
b) Odrediti proizvod oblika 5
2
1 1
3i
i j
j
c) Naći rešenja jednačine 4 24 3 0.x x
XI vežba – Simbolička izračunavanja
131
d) Odrediti graničnu vrednost 0
2 5lim .
x x
x x
e) Odrediti prvi izvod funkcije2( ) 1.f x x x
f) Rešiti diferencijalnu jednačinu 2 ln .xy y y e x
g) Odrediti vrednost integrala 2
0
sin 2 .xI e x dx
VI grupa
a) Odrediti količnik i ostatak pri deljenju polinoma 3 22 3 1x x polinomom
2 1.x
b) Odrediti sumu oblika 5
1 1
(2 ).i
i j
i j
c) Naći rešenja sistema jednačina
5 1 3 13
6 10
11 113
6 4
x y
x y
d) Odrediti graničnu vrednost lim 1.x
x x
e) Odrediti prvi i drugi izvod funkcije ( ) .xf x e x
f) Rešiti diferencijalnu jednačinu 2 2 2 2( ) 0.x yx y y xy
g) Odrediti vrednost integrala 2
0
2.xI e dx
VII grupa
a) Odrediti količnik i ostatak pri deljenju polinoma 4 3 2 1x x x
polinomom 1.x
b) Odrediti sumu oblika 20
1
( 3) .i
i
x
c) Naći rešenja sistema jednačina
2 5 6
2 2 5
3 3 4 8
x y z
x y z
x y z
d) Odrediti graničnu vrednost 1
lim 1 .
x
x x
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
132
e) Odrediti prvi izvod funkcije1
( ) .1
xf x
x
f) Rešiti diferencijalnu jednačinu cos .xy y x
g) Odrediti vrednost integrala 1 sin
.sin (1 cos )
xI dx
x x
VIII grupa
a) Odrediti NZS polinoma 3 22 3 4x x x
i 2( 1) .x
b) Odrediti sumu oblika 25
1
2.
5i
i
i
c) Naći rešenja sistema jednačina
2 1
2 1
2 2 1
x y z
x y z
x y z
d) Odrediti graničnu vrednost lim .x
x
e
x
e) Odrediti prvi i drugi parcijalni izvod funkcije3 2cos ln .yz x y y tgx x e y x
f) Rešiti diferencijalnu jednačinu 3 22 2 0. x y x y xy y
g) Odrediti vrednost integrala
4 3 2
5 4 3 2
3 5 10 5 1.
2 3 2
x x x xI dx
x x x x x
IX grupa
a) Odrediti faktore polinoma 3 7 6.x x
b) Odrediti sumu oblika2
1
1.
(1 )i i
c) Naći rešenja sistema jednačina
1 2 3 4
1 2 3 4
1 3 4
1 2 3 4
3 2 6
5 3 4 12
2 1
5 3 3 3
x x x x
x x x x
x x x
x x x x
d) Odrediti graničnu vrednost 0
ln(1 )lim .x
x
x
e) Odrediti parcijalni izvod funkcije ln( ) 2 3.z xy x y x
XI vežba – Simbolička izračunavanja
133
f) Rešiti diferencijalnu jednačinu 2 33 16 2 .y y x xy
g) Odrediti vrednost integrala 1 sin
.sin (1 cos )
xI dx
x x
X grupa
a) Odrediti NZD polinoma 3 7 6x x
i 3 22 5 6.x x x
b) Odrediti proizvod oblika 5
1 1
2 .i
i
i j
j
c) Odrediti rešenja jednačine 2 2 2( 2 ) 2( 2 ) 3.x x x x
d) Odrediti graničnu vrednost lim .x
x
x x x
e) Odrediti parcijalni izvod funkcije 2 2ln .z x x y
f) Rešiti diferencijalnu jednačinu 2 3( 1) 2 2 2 0.x y xy x x
g) Odrediti vrednost integrala
5
0
1( ) .xI e dx
x
Cilj vežbe
Savladavanje načina iscrtavanja grafika funkcija
Upoznavanje sa parametarski zadatom krivom
Upoznavanje sa trodimenzionalnom grafikom
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
136
Teorijske osnove za izradu vežbe
12.1. Dvodimenzionalna grafika
Osnovna funkcija za iscrtavanje grafika funkcija u paketu Mathematica je Plot, koja
iscrtava proizvoljnu funkciju jedne promenljive u zadatom intervalu (tabela 12.1).
Tabela 12.1. Iscrtavanje grafika funkcije
Funkcija u paketu Mathematica Opis
Plot[ f , {x, xmin, xmax}] Grafik funkcije f u zavisnosti od x u
intervalu [xmin, xmax]
Plot[{f1, f2, ... }, {x, xmin, xmax}] Crtanje više funkcija zajedno
Primer 12.1. Nacrtati grafik funkcije sin(x) za [0,2 ]x .
Rešenje:
In[1]:= Plot[Sin[x], {x, 0, 2Pi}]
Out[1]=
Primer 12.2. Nacrtati grafik funkcija sin(x), cos(x) za [0,2 ]x .
Rešenje:
In[2]:= Plot[{Sin[x], Cos[x] }, {x, 0, 2Pi}]
Out[2]=
XII vežba – Grafika
137
12.2. Opcije pri radu sa dvodimenzionalnom grafikom
Da bi korisnik sam podesio opcije pri iscrtavanju dvodimenzionalnih grafika koristi se
funkcija oblika
Plot[ f , {x, xmin, xmax}, opcija -> vrednost]
U tabeli 12.2 navedene su opcije koje se mogu podešavati u dvodimenzionalnom grafiku.
Tabela 12.2. Opcije pri crtanju dvodimenzionalnog grafika
Opcija Podrazumevana
vrednost
Opis
AspectRatio 1/GoldenRatio Odnos visine i širine grafika
Axes True Iscrtavanje koordinatnih osa
AxesLabel None Oznake za koordinatne ose
AxesOrigin Automatic Tačka u kojoj se seku koordinatne ose
Frame False Iscrtavanje okvira grafika
FrameLabel None Oznake za okvir
FrameTics Automatic Koordinate koje treba obeležiti na okviru
GridLines None Iscrtavanje pomoćnih linija
PlotJoined False Spajanje tačaka na grafiku
PlotLabel None Naslov grafika
PlotLegends None Legende za krive
PlotPoints 25 Najmanji broj tačaka u kojima se računa vrednost
funkcije
PlotRange Automatic Oblast grafika koji se prikazuje
PlotStyle Automatic Grafičke direktive za specificiranje stila svake krive
Ticks Automatic Koordinate koje treba obeležiti na koordinatnim
osama
Primer 12.3. Nacrtati grafik funkcije 2sin x za [0,3]x .
Rešenje:
In[3]:= Plot[Sin[x ^ 2], {x, 0, 3}, AxesLabel -> {"x", Sin[x ^ 2]}, PlotLabel -> "Grafik
funkcije"]
Out[3]=
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
138
In[4]:= Plot[Sin[x ^ 2], {x, 0, 3}, Frame -> True, GridLines -> Automatic]
Out[4]=
12.3. Stilovi i boje
Način i sortiranje pojedinih krivih na grafiku zadaje se opcijom PlotStyle, koja sadrži listu
stilova za svoju vrednost (tabela 12.3). Stil je lista grafičkih kontrolnih funkcija koje
određuju izgled krive ili niza tačaka.
Tabela 12.3. Opcija PlotStyle
Primena stila u paketu Mathematica Opis
PlotStyle -> stil Stil koji se primenjuje na sve krive na grafiku
PlotStyle -> {{stil1}, {stil2}, ... }} Stilovi koji se primenjuju na pojedinačne krive
na grafiku
Grafičke kontrolne funkcije imaju efekat samo ako se navedu kao vrednosti opcija funkcije
PlotStyle (tabela 12.4).
Tabela 12.4. Grafičke kontrolne funkcije opcije PlotStyle
Grafičke kontrolne funkcije Opis
GrayLevel[i] Nijansa sivog između 0 (crno) i 1 (belo)
RGBColor[r, g, b] Boja određena crvenom, zelenom i plavom
komponentom, svaka između 0 i 1
Hue[h] Boja h iz spektra
Hue[h, s, b] Boja h, zasićenje s i osvetljenje b
PointSize Prečnik tačke zadat relativno u odnosu na
širinu celog grafika
AbsolutePointSize[d] Prečnik tačke u apsolutnim jedinicama
Thickness[r] Debljina linije u odnosu na širinu grafika
AbsoluteThickness[d] Debljina linije u apsolutnim jedinicama
Dashing[{r1, r2, ...}] Dužine segmenta za crtanje neprekidnih
linija zadate u odnosu na širinu grafika
AbsoluteDashing[{d1, d2, ...}] Dužine segmenata u apsolutnim jedinicama
Opacity Neprovidnost
XII vežba – Grafika
139
Primer 12.4. Nacrtati grafik funkcija sin(x), cos(x), tan(x) za [0,2 ]x .
Rešenje:
In[5]:= Plot[{Sin[x], Cos[x], Tan[x]},{x, 0, 2 Pi}, PlotStyle -> {Red, Dashed, Thick},
PlotLegends -> "Expressions"]
Out[5]=
Opcije koje utiču na boje celog grafika prikazane su u tabeli 12.5.
Tabela 12.5. Opcije za boju celog grafika
Opcije za boju celog grafika Opis
Background -> boja Boja za pozadinu grafika
DefaultColor -> boja Boja kojom se iscrtava grafik
ColorOutput -> GrayLevel Generisanje crno-bele slike na monitoru u boji
12.4. Iscrtavanje grafičkih primitiva
Rezultat grafičkih funkcija je objekat -Grafics-, koji sadrži sve podatke o nacrtanom
grafiku. Objekat -Grafics- se može ponovo prikazati na ekranu funkcijom Show. Za
iscrtavanje dvodimenzionalnih grafičkih slika koristi se funkcija oblika
Graphics[primitive, opcije]
Paket Mathematica sadrži funkcije za crtanje grafičkih primitiva (tabela 12.6).
Tabela 12.6. Iscrtavanje grafičkih primitiva
Funkcija u paketu Mathematica Opis
Point[{x, y}] Tačka na poziciji (x, y)
Line[{x1, y1}, {x2, y2}, ...] Linija kroz tačke {x1, y1}, {x2, y2}, ...
Rectangle[{xmin, ymin}, {xmax, ymax}] Crtanje pravougaonika
Polygon[{x1, y1}, {x2, y2}, ...] Crtanje poligona
Circle[{x, y}, r] Krug sa centrom u (x, y) i poluprečnikom r
Disc[{x, y}, r] Ispunjen disk sa centrom u (x, y) i poluprečnikom r
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
140
Primer 12.5. Nacrtati krug sa centrom u (3, 4) i poluprečnikom r = 2 i elipsu sa centrom u
tački (0, 1) i poluosama a = 2 i b = 3.
Rešenje:
In[6]:= Show[Graphics[Circle[{3, 4}, 5]]]
In[7]:= Show[Graphics[Circle[{0, 1},{2, 3}]]]
Out[6]=
Out[7]=
12.5. Parametarski zadate krive
Za crtanje kriva zadatih parametraskim jednačinama ( ), ( ),x x t y y t a t b se koristi
ParametricPlot[{x[t], y[t]}, {t, a, b}]
Primer 12.6. Nacrtati cikloidu i spiralu
sin( 2 2 )
1 cos
x t tt
y t,
cos(0 4 )
sin
x u uu
y u u.
Rešenje:
In[8]:= ParametricPlot[{t + Sin[t], 1+Cos[t]}, {t, -2Pi, 2Pi}, AspectRatio-> Automatic]
XII vežba – Grafika
141
In[9]:= ParametricPlot[{u*Cos[u], u*Sin[u]}, {u, 0, 4Pi}, AspectRatio-> Automatic]
5 5 10
10
5
5
Out[9]= - Graphics -
12.6. Crtanje oblasti u ravni
Naredba za crtanje oblasti u ravni koja je određena datim uslovima
RegionPlot[uslovi, {x, xmin, xmax}, {y, ymin, ymax}].
Primer 12.7. Nacrtati oblast unutar centralnog kruga poluprečnika r = 2 ispod prave
1 x y . Uzeti oblast crtanja 2,2 , 2,2 x y .
Rešenje:
In[10]:= RegionPlot[x^2 + y^2 < 4 && x + y < 1,{x, -2, 2},{y, -2, 2}]
Out[10]=
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
142
Primer 12.8. Nacrtati oblast unutar centralnog kruga poluprečnika r = 2 i izvan elipse 2 24 6 4 x y za 2,2 , 2,2 x y .
Rešenje:
In[11]:= RegionPlot[4 x^2 + 6 y^2 > 4 && x^2 + y^2 < 4,{x, -2, 2},{y, -2, 2}]
Out[11]=
12.7. Trodimenzionalna grafika
Umesto jedne promenljive u dvodimenzionalnom slučaju, ovde postoje dve promenljive:
Plot3D[f, {x, xmin, xmax}, {y, ymin, ymax}].
U tabeli 12.7 navedeni su parametri koji se mogu podešavati u trodimenzionalnom grafiku.
Tabela 12.7 Opcije pri crtanju trodimenzionalnog grafika
Opcija Podrazumevana
vrednost
Opis
AmbientLight GrayLevel[0] Osvetljenje trodimenzionalnog grafika
Axes True Iscrtavanje kordinatnih osa
AxesLabel None Oznake za koordinatne ose
Boxed True Iscrtavanje grafika unutar kvadra
BoxRatios {1,1, .4} Odnos dimenzija stranica kvadra
FaceGrids None Iscrtavanje pomoćnih linija na stranama kvadra
Lighting True Za senčenje grafika
Mesh True Iscrtavanje mreže na grafiku
PlotLabel None Naslov grafika
PlotPoints 15 Broj tačaka u oba pravca u kojima se računa vrednost
funkcije
PlotRange Automatic Oblast grafika koja se prikazuje
PlotStyle Automatic Grafičke direktive za specificiranje stila svakog
oblika
Shading True Senčenje grafika
XII vežba – Grafika
143
Primer 12.9. Prikazati sliku paraboloida datog funkcijom 2 2 f x y i površi zadate
funkcijom 2 3 g x y za [ 5,5], [ 5,5]. x y
Rešenje:
In[12]:= Plot3D[{x ^ 2 + y ^ 2, 2 x + 3 y}, {x, -5, 5}, {y, -5, 5},
PlotStyle -> Directive[Blue, Opacity[0.6]], PlotPoints -> 25]
Out[12]=
U tabeli 12.8 navedene su trodimenzionalne grafičke primitive.
Tabela 12.8. Trodimenzionalne grafičke primitive
Funkcija u paketu Mathematica Opis
Point[{x, y, z}] Tačka sa koordinatama (x, y, z)
Line[{x1, y1, z1}, {x2, y2, z2}, ...] Linija kroz tačke {x1, y1, z1}, {x2, y2, z2}, ...
Polygon[{x1, y1, z1}, {x2, y2, z2}, ...] Crtanje poligona sa zadatom listom temena
Cuboid[{xmin, ymin, zmin},
{xmax, ymax, zmax}]
Crtanje paralelopipeda
Text[expr, {x, y, z}] Tekst na poziciji {x, y, z}
Cuboid[{x, y, z}] Jedinična kocka sa naspramnim temenima koje
imaju koordinate {x, y, z} i {x+1, y+1, z+1}
Sphere[{x, y, z}, r] Sfera sa centrom i poluprečnikom
Cylinder[{{xa, ya, za},{xb, yb, zb}},r] Valjak sa centrima bazisa i radijusom osnove
Cone[{{xa, ya, za},{xb, yb, zb}}, r] Kupa sa centrom bazisa, vrhom i radijusom
osnove
Primer 12.10. Na istoj slici, prikazati:
sferu sa centrom u tački O(0, 0, 0) i poluprečnika r = 1 i
kocku sa krajnjim temenima A(0, 0, 0) i B(1.5, 1.5, 1.5).
Rešenje:
In[13]:= sph = Graphics3D[{Red, Sphere[{0, 0, 0}, 1]}];
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
144
cub = Graphics3D[{Blue, Cuboid[{0, 0, 0},{1.5, 1.5, 1.5}]}];
Show[sph, cub]
Primer 12.11. Na istoj slici, prikazati:
kosi valjak sa centrom jednog bazisa u tački O (0, 0, 0), drugog u tački A (1, 1, 2) i
poluprečnika r = 1,
kupu sa centrom osnove u tački A(2, 2, 0), vrhom B(-1, -1, 2) i poluprečnikom
osnove r = 1.
Rešenje:
In[14]:= a = Graphics3D[{Blue, Cylinder[{{0, 0, 0},{1, 1, 2}}, 1]}]
b = Graphics3D[{Red, Cone[{{2, 2, 0},{-1, -1, 2}}, 1]}]
Show[a, b]
XII vežba – Grafika
145
Svi grafici rađeni u paketu Mathematica mogu biti eksportovani u razli;itim formatima:
kao bitmape (BMP), grafički metafajlovi (EMF ili WMF), JPEG ili PostScript datoteke
(EPS).
12.8. Crtanje oblasti u prostoru
Za crtanje oblasti u prostoru koristi se naredba
RegionPlot3D[uslovi,{x, xmin, xmax},{y, ymin, ymax},{z, zmin, zmax}].
Primer 12.12. Nacrtati oblast u prostoru zadatu nejednakostima 2 2 2 1 x y z i
2 2 2 x y z za 1,1 , 1,1 , 1,1 x y z .
Rešenje:
In[15]:= RegionPlot3D[x ^ 2 + y ^ 2 + z ^ 2 < 1 && x ^ 2 + y ^ 2 < z ^ 2, {x, -1 , 1},{y, -1,
1}, {z, -1, 1}, PlotRangeAll]
Primer 12.13. Nacrtati oblast u prostoru zadatu nejednakostima 1, 1 x y i 1z za
1,1 , 1,1 , 1,1 x y z .
Rešenje:
In[16]:= RegionPlot3D[Abs[x] < 1 && Abs[y] < 1 && Abs[z] < 1 && x ^ 2 + y ^ 2 >
z ^ 2, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, PlotRangeAll]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
146
12.9. Prikazivanje skupova podataka i njihova analiza
Inženjeri u praksi često dolaze do dvodimenzionalnih i trodimenzionalnih skupova
podataka putem merenja. Njihovo ucrtavanje omogućavaju naredbe ListPlot i ListPlot3D.
Primer 12.14. Formirati tabelu podataka za funkciju /2( ) xf x e za vrednosti argumenta
1,2,...,10x i ucrtati podatke, kao i približan grafik funkcije.
Rešenje:
In[17]:= t = Table[{n,Exp[-n/2]}, {n, 1, 10}]
g1 = ListPlot[t]
g2 = ListPlot[t, Joined {True}, PlotRange All]
Show[g1, g2]
XII vežba – Grafika
147
Primer 12.15. Formirati tabelu podataka za funkciju 2( , ) sin( ) f x y x y za vrednosti
argumenata , 0,0(0,1)3,0x y i ucrtati podatke, kao i približan grafik funkcije.
Rešenje:
In[18]:= tab = Table[{x, y, Sin[x + y ^ 2]},{x, 0, 3, 0.1},{y, 0, 3, 0.1}];
data = Flatten[tab,1];
ListPointPlot3D[data, AxesLabel {x, y, z}]
ListPlot3D[data, AxesLabel {x, y, z}]
Plot3D[Sin[x + y ^ 2],{x, 0, 3},{y, 0, 3}, AxesLabel {x, y, z}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
148
Zadaci za vežbu
I grupa
Nacrtati grafik funkcije
2
2
9( )
4
xf x
x
za [ 3,3].x
II grupa
Nacrtati grafik funkcije 24y x za [ 2,2].x
III grupa
Nacrtati grafike funkcija 3 8y x i 2 5y x za [ 5,5].x
IV grupa
Nacrtati grafike funkcija siny x i
2
10
xy za [0,2 ].x
V grupa
Nacrtati krive zadate parametarskim jednačinama
sin 2 ,2 2 .
tan ,
x t tt
y t t
VI grupa
Nacrtati grafik funkcije 3 3 2y x x za [ 5,5].x
VII grupa
Nacrtati grafik funkcije
2
2
4
1
xy
x
za [ 5,5].x
VIII grupa
Nacrtati grafik funkcije 5 33 10 7y x x za [ 5,5].x
XII vežba – Grafika
149
IX grupa
Nacrtati grafik funkcija 3( )f x x ,
21( ) 1
2g x x za [ 10,10]x .
X grupa
Nacrtati krive zadate parametarskim jednačinama
sin 2 ,2 2 .
sin3 ,
x t tt
y t t
Cilj vežbe
Upoznavanje sa upravljačkim strukturama
Implementacija upravljačkih struktura
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
152
Teorijske osnove za izradu vežbe
13.1. Uslovni izrazi
U paketu Mathematica uslovni izrazi If-Then i If-Then-Else predstavljaju pozive funkcija
(tabela 13.1).
Tabela 13.1. Uslovni izrazi
Funkcija u paketu Mathematica Opis
If[test, direktiva]
Izvršava se direktiva ako test ima
vrednost True
If[test, direktiva, alternativa] Izvršava se direktiva ako test ima
vrednost True, inače se izvršava
alternativa
Primer 13.1. Neka je definisana funkcija 1, 0
( ) .1, 0
xf x
x
Naći f(10).
Rešenje:
In[1]:= f[x_] := If[x > 0, 1, -1]; f[10]
Out[3]= 1
Za testiranje većeg broja uslova koriste se funkcije Which i Switch (tabela 13.2).
Tabela 13.2. Funkcije za testiranje više uslova
Funkcija u paketu Mathematica Opis
Which[test1, vrednost1, test2, vrednost2, ...]
Evaluira se redom test1,test2,... Pri čemu
je rezultat vrednost asocirana sa prvim
testi koji je True
Switch[izraz, form1, vrednost1, form2,
vrednost2, ...]
Upoređuje se izraz sa svakim od izraza
form1,,..., a rezultat je vrednost izraza
vrednosti, koji je asociran sa prvim
izrazom formi koji se slaže sa izraz
Switch[izraz, form1, vrednost1, form2,
vrednost2,..., def]
Koristi se def kao vrednost koja se vraća
ako se nijedan od izraza formi ne slaže sa
izrazom
Svaki od izraza vrednost1,vrednost2,... predstavlja jedan izraz ili sekvencu izraza koji su
razdvojeni znakom ;.
XIII vežba – Upravljačke strukture
153
Primer 13.2. Neka je definisana funkcija
sin, 0,
( ) 1, 0,
1, 0.
x
xx
x
f x x
ex
x
Naći f(-1) i f(1).
Rešenje:
In[2]:=
g[x_]:=Which[
x < 0, Sin[x] / x,
x == 0,1,
x > 0, (Exp[x] - 1) / x]
g[-1]//Print; g[1]//Print;
Out[3]= Sin[1]
Out[3]= -1+E
Primer 13.3. Na dati izraz, primeniti:
svođenje na jedan razlomak, ukoliko je zbir dva razlomka;
razdvajanje na elementarne razlomke, ako je proizvod dva razlomka.
Primeniti na izraze 1
1 1
x xa
x x i
2 1
1 1
a
x x.
Rešenje:
In[4]:= f[a_] := Switch[a, _Plus, Together, _Times,Apart];
a = (1 + x) / (1 - x) + x / (1 + x);
f[a]
f[a][a]
b = 2 / ((1 - x) (1 + x));
f[b]
f[b][b]
Out[5]= Together (-1-3 x)/((-1+x) (1+x))
Out[5]= Apart -1/(-1+x)+1/(1+x)
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
154
Primer 13.4. Neka je dat broj x.
Ako je celi broj, naći njegove činioce;
Ako je racionalan, njegovu približnu decimalnu vrednost;
Ako je realan, njegov racionalni oblik;
Ako je kompleksan, njegov realni deo.
Isprobati na brojevima 18, 2/3, 1.2, 7+2i.
Rešenje:
In[6]:= switchfun[x_] := Switch[x, _Integer,FactorInteger[x], _Rational,N[x],
_Real,Rationalize[x], _Complex,Re[x]];
switchfun[18]
switchfun[2/3]
switchfun[1.2]
switchfun[7 + 2 i]
Out[6]= {{2,1},{3,2}}
Out[7]= 0.666667
Out[8]= 6/5
Out[9]= 7
Primer 13.5. Neka je definisana funkcija
1, ( , ) ,
( , ) 0, ( , ) * ,
1, ( , ) .
y
f x y x y
r x y f x y x y
f x y x
Isprobati za a * b.
Rešenje:
In[10]:= r = Switch[a * b,
x_ + y_, -1,
x_ * y_, 0,
x_ ^ y_, 1]
Out[10]= 0
XIII vežba – Upravljačke strukture
155
13.2. Ciklusi
U paketu Mathematica postoje upravljačke strukture kojima se definiše višestruko
ponavljanje određene sekvence naredbi.
Brojačke petlje su petlje kod kojih postoji brojač kojim se upravlja izvršenjem petlje.
13.2.1. Do ciklusi
Do ciklusi se koriste za definisanje brojačkih programskih ciklusa (tabela 13.3).
Tabela 13.3. Do ciklusi
Funkcija u paketu Mathematica Opis
Do[izraz, {i, imax}]
Evaluirati izraz za svako i, pri čemu i
uzima vrednosti iz skupa {1, ..., imax}
Do[izraz,{i, imin, imax, di}]
Evaluirati izraz sa vrednostima i od imin
do imax sa korakom di
Do[izraz, {n}] Evaluacija izraza izraz n puta
Primer 13.6. Odrediti sumu prvih 100 prirodnih brojeva.
Rešenje:
In[11]:= sum = 0;
Do[sum += i, {i, 100}];
sum
Out[11]= 5050
13.2.2. While i For ciklus
Za razliku od Do petlje koja se uvek izvršava zadati broj puta, broj izvršavanja petlji For i
While je određen nekim izlaznim kriterijumom. Te petlje se izvršavaju samo dok određeni
uslov ima vrednost True.
Opšti oblik While ciklusa je
While[test, telo]
gde se telo izvršava sve dok je test =True.
Opšti oblik For ciklusa je
For[start, test, inkr, telo]
gde se izvršava start, zatim respektivno evaluira telo i inkr sve dok test ne postane False.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
156
Primer 13.7. Odrediti vrednost sume
1 2 10S ... .
1 2 2 3 10 11
Rešenje:
In[12]:= For[i = 1; sum = 0, i < 11, i++, sum += i / (i + i + 1)];
sum
Out[12]= 64157087/14549535
Primer 13.8. Napisati program za rešavanje jednačine 5 3- 2 +10 0x x Njutnovim
iterativnim postupkom. Početno rešenje x0 i tačnost dati su na ulazu. Na izlazu štampati
krajnje rešenje.
Napomena:
Za Njutnov metod važe sledeća pravila:
početni uslov: 0 ,x
iterativna zakonitost 1 '
( ), 0,1,
( )
kk k
k
f xx x k
f x ,
uslov kraja 1 .k kx x
Rešenje:
In[13]:= f[x_] := x ^ 5 - 2 x ^ 3 + 10
eps = .00001;
xi = 50;
While[Abs[f[xi]] > eps, xi = N[xi - f[xi] / f'[xi]]]
xi
Out[13]= -1.87523
XIII vežba – Upravljačke strukture
157
Zadaci za vežbu
I grupa
Neka je definisana funkcija
2 , 1,
( ) 2 1, 1 2,
1, 2,
y y
f y y y
y y
gde je 2 1.y x x
Za x = 10 izračunati vrednost funkcije f.
II grupa
Iterativno rešiti sistem jednačina
2
2
2 5 1 0
1,6 0,
x xy x
x y
sa tačnošću 410 , koristeći formule
1 1
5 1, 1,6.
2
n n
n n n
x yx y x
Iterativni proces završiti kada budu istovremeno ispunjeni uslovi
1n nx x i 1n ny y .
Na izlazu štampati vrednosti rešenja sistema. Na ulazu su date početne vrednosti 0x i 0y .
III grupa
Napisati program za rešavanje jednačine 10 0xf e x
metodom sečice. Početna
rešenja x0 i x1 i dati su na ulazu. Na izlazu štampati krajnje rešenje.
Napomena: Za metodu sečice važe sledeća pravila:
definisanje funkcije,
početni uslovi: 0 1, ,x x
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
158
iterativna zakonitost
11
1
, 1,2,k kk k k
k k
x xx x f x k
f x f x
,
uslov kraja 1 .k kx x
IV grupa
Za x = 1(0,5)5 izračunati vrednost funkcije f(x) zadate u obliku
4
3
1( ) .
5 6
xf x
x
V grupa
Izračunati i štampati vrednosti prvih 10 Lagerovih polinoma korišćenjem rekurentnih
formula:
0
1
2
1 1
1,
1 ,
2 1 ,n n n
L x
L x x
L x n x L x n L x
za učitanu vrednost promenjive x.
VI grupa
Napisati metodu kojom se izračunava vrednost x a , po formuli
0 1
1
11, ( 1,2, ).
2n n
n
ax a x x n
x
Proces prekinuti kada je 1 .n nx x U glavnom programu uneti vrednost za a i ε i naći
vrednost korena.
VII grupa
Neka je definisana funkcija
sin(1/ ), 0( )
, 0
t tf t
t t
Za t = 10 izračunati vrednost funkcije f.
XIII vežba – Upravljačke strukture
159
VIII grupa
Neka je definisana funkcija
, 0 1,
( ) 1, 1 2,
3 , 2 3.
x x
f x x
x x
Za x = 10 izračunati vrednost funkcije f.
IX grupa
Neka je definisana funkcija
2
2
1, 0
1 ,0 3( )
2 15 25,3 5
15 2 , 5
x x
x xf x
x x x
x x
Za x = 3,5 izračunati vrednost funkcije f.
X grupa
Tabelirati funkciju
2( , , ) ln sin cos2
xx
y a b x a e b arctg
za sve kombinacije parametara: a = 0,1(0,01)0,15; b = 0,15(0,01)0,19; x = 0,3(0,15)0,6.
Cilj vežbe
Upoznavanje sa pojmom potprograma
Implementacija potprograma
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
162
Teorijske osnove za izradu vežbe
Potprogrami se definišu kao programske celine koje se zatim po potrebi pozivaju, bilo u
okviru programa u kome su definisani, bilo u drugim programima.
Osobine potprograma:
1. Svaki potprogram ima jednu ulaznu tačku.
2. Programska jedinica koja poziva potprogram prekida svoju aktivnost sve dok se ne
završi pozvani potprogram. To znači da se u jednom trenutku izvršava samo jedan
potprogram.
3. Po završetku potprograma upravljanje tokom izvršenja se prenosi na pozivajuću
programsku jedinicu, na mestu iza poziva potprograma.
Za svaki potprogram su karakteristična sledeća četiri elementa:
ime potprograma,
lista imena argumenata,
telo potprograma,
okruženje u kome je potprogram definisan.
14.1. Funkcijski potprogram
Funkcijski potprogram se definiše naredbom
Function[{x1, x2, …}, telo potprograma].
In[1]:= Function[x, x ^ 2][z]
Out[1]= z^2
In[2]:= Function[{x, y},Sqrt[x2 + y
2]][3, 4]
Out[2]= 5
14.2. Opšti potprogram
U paketu Mathematica koristi se i opšti potprogram koji se naziva modul. Modul je
posebno označeni deo programa koji se definiše naredbom
Module[{promenljiva1, promenljiva2, ...}, program]
ili
Module[{promenljiva = vrednost, ...}, program]
XIV vežba – Potprogrami
163
Izlazak iz funkcije sa vraćanjem vrednosti se zadaje naredbom
Return[izraz].
Ova naredba vraća vrednost izraza kao rezultat tekuće funkcije i zatim se kontrola
programa prenosi u pozivajuću programsku jedinicu.
U modulima se imena promenljivih tretiraju kao lokalne. Međutim, ponekad je potrebno da
promenljiva bude globalna, ali da dobije lokalnu vrednost.
U paketu Mathematica globalne i lokalne promenljive postoje unutar strukture Block
(tabela 14.1).
Tabela 14.1. Block naredbe
Funkcija u paketu Mathematica Opis
Block[{x, y, ...}, procedura]
Blok sa lokalnim vrednostima simbola x,
y, ...
Block[{x = x0, y = y0, ...}, procedura] Postavljanje početnih vrednosti za x, y, ...
Primer 14.1. Napisati modul za nalaženje faktorijela broja.
Rešenje:
In[1]:= faktorijel[n_] := Module[{i = 1, fac = 1},
While [i < n, i = i + 1; fac = fac * i]; fac];
faktorijel[7]
Out[1]= 5040
Primer 14.2. Napisati modul koji za uređeni par celih brojeva vraća onoliko jedinica koliki
im je zbir, ako je on pozitivan. Probati za parove brojeva (-1,-2) i (3,2).
Rešenje:
In[2]:= g[{m_, n_}] := Module[
{k}, k = m + n;
If[k <= 0, Return["Zbir brojeva nije pozitivan"]];
Table[1, {i, 1, k}]];
g[{-1, -2}]
g[{3, 2}]
Out[2]= Zbir brojeva nije pozitivan {1,1,1,1,1}
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
164
Primer 14.3. Napisati modul za Newtonov metod za rešavanje jednačina. Omogućiti
naknadno zadavanje funkcije, argumenta i početne vrednosti.
Probati na jednačini 5 4cos(2 ) 1 0 x x za početnu vrednost x = -1.
Rešenje:
In[3]:=
newton[f_, x_, xp_]:=
(* f - funkcija; x - argument; xp - početna vrednost *)
Module[{},
g/:g:= Function[x, f];
x = 0; y = xp;
While[Abs[x - y] > 10^(-5),
x = y; y = x - g[x] / D[g[z], z]/.z -> x;
Print[N[y, 16]]]]
newton[5 x + 4 Cos[2 x] + 1, x, -1]
Out[3]= -0.55530
14.3. Rekurzivna izračunavanja
Rekurzivna izračunavanja izvršavaju se naredbom
f[x_] := f[x] = izraz.
Primer 14.4 Napisati rekurziju za izračunavanje članova Fibonačijevog niza
0 1 1 11, ( 2,3,...). n n nF F F F F n
Rešenje:
In[2]:=
F[0] = F[1] = 1;
F[n_] := F[n] = F[n - 1] + F[n - 2];
Table[F[i], {i, 0, 9}]
Out[2]= {1,1,2,3,5,8,13,21,34,55}
XIV vežba – Potprogrami
165
Zadaci za vežbu
I grupa
Napisati potprogram kojim se izračunava i štampa vrednost nx a (pri čemu je a > 0),
primenom iterativnog postupka
0
1a nx
n
,
n 1
1
( -1)
, 0,1,2,...
i
ii
an x
xx i
n
Izračunavanje prekinuti kada je 1i ix x , gde je zadata tačnost.
II grupa
Napisati potprogram za izračunavanje funkcije f(x) zadate u obliku
2
3
1( ) .
1 5
xf x
x
U glavnom programu za x = 1(0,5)5 štampati vrednosti x i f(x).
III grupa
Napisati potprogram za tabeliranje funkcije:
3
2 3
x a y xz
x x a y ,
pri čemu je: 1(1)4 , 0,1(0,001)0,15, 0,5(0,05)0,8.x a y
IV grupa
Napisati potprogram kojim se izračunava i štampa rastojanje između dve tačke čije su
koordinate date na ulazu.
Napomena: Za izračunavanje rastojanja između dve tačke koristi se formula
2 2
1 1 2 2( ) ( ) .d x y x y
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
166
V grupa
Napisati potprogram kojim se pomoću rekurzije izračunava suma geometrijskog niza
dužine n čiji je prvi član a, a koeficijent q.
Napomena: Suma geometrijskog niza određuje se na sledeći način
2 1 2
11 ... 1 (1 ... ) 1 .
n n
n nS q q q q q q qS
VI grupa
Napisati potprogram za izračunavanje binomnog koeficijenta.
Napomena: Binomni koeficijent se izračunava na osnovu sledeće formule:
( 1) ... ( 1) !.
! !( )!
n n n n k n
k k k n k
VII grupa
Napisati potprogram kojim se za dato x i n izračunava ex po formuli
1
.!
knx
k
xe
k
VIII grupa
Napisati potprogram za izračunavanje vrednosti
20
sin cos
1k
x xS x
k
za date vrednosti x i tačnost . Sumiranje prekinuti kada je poslednje dodata vrednost po
apsolutnoj vrednosti .
IX grupa
Napisati potprogram za izračunavanje vrednosti 171/4
primenom iterativne formule
1 3
1 17( ), 0,1,
4 i i i
i
x x x ix
ako je 0 2x . Tačnost proračuna je 0,00005.
XIV vežba – Potprogrami
167
X grupa
Napisati potprogram kojim se određuje najmanji pozitivni koren transcedentne jednačine
sinA
xx
za zadatu vrednost parametra A. Za izračunavanje korena primeniti iterativni postupak
1 , 0,1,2,...sin
i
i
Ax i
x
gde je 0 2x . Iterativni postupak prekinuti kada bude ispunjen uslov
1i ix x ,
gde je zadata tačnost.
Cilj vežbe
Primena stečenog znanja
Rešavanje praktičnih problema iz matematike
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
170
15.1. Brojni sistemi
Podrazumeva se da korisnik softvera Mathematica zapisuje brojeve u dekadnom brojnom
sistemu.
Cifre celog broja možemo zapisati kao niz
IntegerDigits[n] - niz dekadnih cifara celog broja n
Na primer, IntegerDigits[1234135634] kao rezultat daje {1, 2, 3, 4, 1, 3, 5, 6, 3, 4}
Naredba kojom se dekadni broj x zapisuje kao broj u brojnom sistemu sa osnovom b glasi
BaseForm[x, b]
Primer 15.1. Zapisati dekadni broj 37 u brojnom sistemu sa osnovom 2.
Rešenje:
In[1]:= BaseForm[37, 2]
Out[1]//BaseForm= (100101)2
Obrnuto, broj iz osnove b se vraća u dekadni oblik naredbom
b^^y
Primer 15.2. Zapisati broj 100101 iz brojnog sistema sa osnovom 2 u dekadni sistem.
Rešenje:
In[2]:= 2^^100101
Out[2]= 37
Cifre u osnovama većim od 10, se označavaju po alfabetu
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, ...}
Primer 15.3. Zapisati broj 1234135634 iz dekadnog brojnog sistema u heksadekadni
sistem.
Rešenje:
In[3]:=BaseForm[1234135634,16]
Out[3]= 498f6a5216
XV vežba – Mathematica za više kurseve matematike
171
Cifre celog broja n u osnovi b možemo zapisati kao niz
IntegerDigits[n, b]
Primer 15.4. Zapisati cifre celog broja 1234135634 u osnovi 16.
Rešenje:
In[4]:=IntegerDigits[1234135634,16]
Out[4]= {4, 9, 8, 15, 6, 10, 5, 2}
15.2. Inverzne funkcije
Za funkcije f(x) i g(x) se kaže da su inverzne funkcije ako važi
f(g(x)) = g(f(x)) = x.
Grafici inverznih funkcija su simetrični oko linije y = x.
Naredbom
Composition[f1, f2, ..., fn, x]
izračunava se kompozicija oblika
1 2 2( )( ) ( ( ( ( )))).n nf f f x f f f x
Primer 15.5. Pokazati da su funkcije 1 2
( )4
xf x
x i
4 1( )
2
xg x
x inverzne fukcije.
Rešenje:
In[5]:= f[x_] = (– 1 – 2 x) / (– 4 + x) ;
g[x_] = (4 x – 1) / (x + 2);
f[g[x]]
Out[5]=
2( 1 4 )1
21 4
42
x
xx
x
In[6]:= Simplify[f[g[x]]]
Out[6]= x
In[7]:= Simplify[g[f[x]]]
Out[7]= x
In[8]:= Plot[{f[x],g[x],f[g[x]]},{x, -10,10}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
172
Out[8]=
10 5 5 10
20
10
10
20
15.3. Dvostruki integral
15.3.1. Dvostruki integral nad pravougaonikom
Neka je f neprekidna funkcija definisana nad pravougaonikom
, , , | , . P a b c d x y a x b c y d Dvostruki integral funkcije f nad
pravougaonikom P je
( , ) ( , ) ( , ) . b d d b
P a c c a
f x y dxdy f x y dxdy f x y dxdy
U paketu Mathematica koriste se naredbe oblika
Integrate[f[x, y], {y, c, d}, {x, a, b}]
ili
NIntegrate[f[x, y], {y, c, d}, {x, a, b}]
Primer 15.6. Izračunati dvostruki integral funkcije 2( , ) xyf x y ye nad pravougaonikom
1,2 1,0 . P
Rešenje:
Za rešavanje zadatog dvostrukog integrala
0 2
2 2
1 1
xy xy
P
ye dxdy ye dxdy koristimo
naredbu
In[9]:= Integrate[y Exp[2 x y], {y, 1, 2}, {x, -1, 0}]
XV vežba – Mathematica za više kurseve matematike
173
Out[9]=4 2
1 1 12
4 e e
In[10]:= NIntegrate[y Exp[2 x y], {y, 1, 2}, {x, -1, 0}]
Out[10]= 0.470745
15.3.2. Dvostruki integral nad proizvoljnom oblasti u 2
Razlikujemo sledeća dva osnovna slučaja:
1) Neka je oblast integraljenja data sa
1 2, | , ( ) ( ) , A x y a x b h x y h x
gde su h1 i h2 realne funkcije definisane nad intervalom ,a b za koje važi
1 2( ) ( ) . c h x h x d Tada je dvostruki integral nad A
2
1
( )
( )
( , ) ( , ) . h xb
Aa h x
f x y dxdy f x y dydx
2) Neka je oblast integraljenja data sa
1 2, | , ( ) ( ) , A x y c x d h y x h y
gde su h1 i h2 realne funkcije definisane nad intervalom ,c d za koje važi
1 2( ) ( ) . a h y h y b Tada je dvostruki integral nad A
2
1
( )
( )
( , ) ( , ) . h yd
Ac h y
f x y dxdy f x y dxdy
Primer 15.7. Izračunati dvostruki integral funkcije ( , ) 2 3 f x y x y nad oblasti
ograničenoj parabolama 23y x i
22 y x .
Rešenje:
In[11]:= Solve[3x ^ 2== 2 + x ^ 2]
Out[11]=
In[12]:= Plot[{3x ^ 2, 2 + x ^ 2}, {x, –1, 1}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
174
Out[12]= 1.0 0.5 0.5 1.0
0.5
1.0
1.5
2.0
2.5
3.0
Date parabole se seku u tačkama (-1, 3) i (1, 3), pa je oblast integraljenja
2 2, | 1 1,3 2 A x y x x y x
i sledi 2
2
1 2
1 3
(2 3 ) (2 3 ) .
x
Ax
x y dxdy x y dy dx
In[13]:= NIntegrate[2 x - 3 y, {x, -1, 1}, {y, 3x ^ 2, 2 + x ^ 2}]
Out[13]= -11.2
15.3.3. Polarni koordinatni sistem
Veza između pravouglog i polarnog koordinatnog sistema je data sa cosx r i
siny r , gde je 2 2 , 0,2 . r x y
Neka je funkcija f neprekidna nad oblasti A iz 2
koja je u polarnim koordinatama data sa
*
1 2, | , ( ) ( ) , A r h r h
tada za dvostruki integral funkcije f nad A važi
2
1
( )
( )
( , ) ( cos , sin ) .
h
Ah
f x y dxdy f r r rdrd
XV vežba – Mathematica za više kurseve matematike
175
Primer 15.8. Izračunati dvostruki integral funkcije 2 2( , ) f x y x y nad oblasti
ograničenoj kružnicom 2 2 2 . x y y
Rešenje:
In[14]:= RegionPlot[{x ^ 2 + y ^ 2 == 2 y}, {x, –1, 1}, {y, 0, 2}]
Out[14]=
Koordinatu r dobijamo uvođenjem smene cosx r i siny r , tj. iz
2 2( cos ) ( sin ) 2 sin r r r
sledi ( 2sin ) 0 r r i dobijamo 0,2sin , 0, . r
Oblast integraljenja je
* , | 0 2sin ,0 2 A r r
i sledi 2sin
2 2 2 2
0 0
( cos ) ( sin ) .
Ax y dxdy r r rdrd
In[15]:= NIntegrate[Sqrt[(r Cos[t]) ^ 2 + (r Sin[t]) ^ 2] r, {t, 0, Pi}, {r, 0, 2 Sin[t]}]
Out[15]= 3.55556
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
176
15.4. Trostruki integral
Neka je f neprekidna funkcija definisana nad paralelopipedom , , , . P a b c d u v
Trostruki integral funkcije f nad paralelopipedom P je
( , , ) ( , , ) . b d v
Pa c u
f x y z dxdydz f x y z dxdydz
U paketu Mathematica koriste se naredbe oblika
Integrate[f[x, y, z], {x, a, b}, {y, c, d}, {z, u, v}]
ili
NIntegrate[f[x, y, z], {x, a, b}, {y, c, d}, {z, u, v}]
Primer 15.9. Izračunati trostruki integral funkcije 2( , , ) f x y z xy z nad paralelopipedom
1,1 2,3 0,1 . P
Rešenje:
Za rešavanje zadatog trostrukog integrala
1 3 1
2 2
1 2 0
Pxy zdxdydz xy zdxdydz koristimo
naredbu
In[16]:= NIntegrate[x y ^ 2 z, {x, -1, 1}, {y, 2, 3}, {z, 0, 1}]
Out[16]= 0
15.4.1. Trostruki integral nad proizvoljnom oblasti u 3
Razlikujemo sledeća tri osnovna slučaja:
1) Neka je oblast integraljenja data sa
1 2, , | ( , ) , ( , ) ( , ) , xyA x y z x y O x y z x y
gde je Oxy oblast u xy-ravni, a ϕ1 i ϕ2 su realne funkcije definisane nad Oxy. Tada je trostruki
integral nad A
XV vežba – Mathematica za više kurseve matematike
177
2
1
( , )
( , )
( , , ) ( , , ) .
xy
x y
A Ox y
f x y z dxdydz f x y z dz dxdy
2) Neka je oblast integraljenja data sa
1 2, , | ( , ) , ( , ) ( , ) , xzA x y z x z O x z y x z
gde je Oxz oblast u xz-ravni, a φ1 i φ2 su realne funkcije definisane nad Oxz. Tada je trostruki
integral nad A
2
1
( , )
( , )
( , , ) ( , , ) .
xz
x z
A Ox z
f x y z dxdydz f x y z dy dxdz
3) Neka je oblast integraljenja data sa
1 2, , | ( , ) , ( , ) ( , ) , yzA x y z y z O y z x y z
gde je Oyz oblast u yz-ravni, a ψ1 i ψ2 su realne funkcije definisane nad Oyz. Tada je
trostruki integral nad A
2
1
( , )
( , )
( , , ) ( , , ) .
yz
y z
A Oy z
f x y z dxdydz f x y z dx dydz
Primer 15.10. Izračunati trostruki integral funkcije 2 2( , , ) 1 f x y z x y nad oblasti
3A koja je ograničena cilindrom 2 2 1, x y konusom
2 21 z x y i xy-ravni.
Rešenje:
Oblast integraljenja je oblika
2 2, , | ( , ) ,0 1 , xyA x y z x y O z x y
gde je Oxy projekcija cele oblasti na xy-ravan i sledi 2 21
2 2 2 2
0
( 1) ( 1) .
xy
x y
A Ox y dxdydz x y dz dxdy
Uvođenjem polarnih koordinata cosx r i siny r , pri čemu je
0,1 , 0,2 , r dvostruki integral postaje
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
178
2 1
2 2 2 2 2
0 0
1 1 ( 1)(1 ) .
xyO
x y x y dxdy r r rdr d
In[17]:= NIntegrate[(r ^ 2 + 1) (1 + r) r, {t, 0, 2 Pi}, {r, 0, 1}]
Out[17]= 8.06342
15.4.2. Određivanje zapremine trostrukim integralom
Ako je A ograničena oblast u 3, tada se zapremina date oblasti može odrediti pomoću
trostrukog integrala na sledeći način
( ) . AV A dxdydz
Primer 15.11. Izračunati zapreminu regiona nad oblasti 3A koja je ograničena
funkcijama 2 24 z x y i 2 . z x
Rešenje:
In[18]:= p1 = Plot3D[{4 - x^2 - y^2, 2 - x}, {x, -2, 2}, {y, -2, 2}]
p2 = ContourPlot[4 - x^2 - y^2 - (2 - x) == 0, {x, -2, 2}, {y, -2, 2}]
Show[GraphicsRow[{p1, p2}]]
Out[18]=
XV vežba – Mathematica za više kurseve matematike
179
Out[19]= 2 1 0 1 2
2
1
0
1
2
In[20]:= RegionPlot3D[2-x<=z<=4-x^2-y^2,{x,-2,2},{y,-2,2}, {z,-4,4}]
Out[20]=
Zapremina tela je
2
2
2 2
3 1 19 4
2 2 22 2
3 1 19 4
2 2 2
( ) 4 2
( ) 4 2
xyA O
y
y
V A dxdydz x y x dxdy
V A x y x dxdy
In[21]:= NIntegrate[(4 - x^2-y^2) - (2 - x), {y, -3/2, 3/2}, {x, 1/2 - 1/2 Sqrt[9 - 4 y^2], 1/2
+ 1/2 Sqrt[9 - 4 y^2]}]
Out[21]= 7.95216
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
180
15.5. Krivolinijski integral
15.5.1. Krivolinijski integral I reda
Krivolinijski integral funkcije f duž krive c je
( , ) .c f x y ds
Krivolinijski integral realne funkcije dve promenljive f duž krive c parametarski date kao
( ) ( ( ), ( ))c t x t y t , kada , t , izračunavamo na sledeći način
2 2
( , ) ( ( ), ( )) ( ) ( ) ,
cf x y ds f x t y t x t y t dt
gde je 2 2
( ) ( ) ds x t y t dt element dužine luka krive, a integral sa desne strane
Rimanov određeni integral.
Primer 15.12. Izračunati krivolinijski integral funkcije3
( , )4 3
xf x y
y nad krivom c
parametarski zapisane kao 2( ) ( , 1), c t t t pri čemu 1,2 t , tj. parametrizovana je sa
( ) x t t i 2( ) 1 y t t za 1,2 . t
Rešenje:
Traženi krivolinijski integral je oblika
2
2 2
1
( , ) ( , 1) 1 4 .
cf x y ds f t t t dt
In[22]:= f[x_, y_] = 3 x / Sqrt[4 y - 3]
x[t_] = t
y[t_] = t ^ 2 + 1
fx = D[x[t], t]
fy = D[y[t], t]
s1 = Simplify[Sqrt[fx ^ 2 + fy ^ 2]]
NIntegrate[f[t, t ^ 2 + 1] s1,{t, -1, 2}]
Out[22]= 4.5
XV vežba – Mathematica za više kurseve matematike
181
15.5.2. Dužina luka krive
Dužina luka krive f(x) od tačke na grafiku sa apscisom a do tačke na grafiku sa apscisom b,
iznosi
2
1 ( ) . b
a
l f x dx
Primer 15.13. Izračunati dužinu luka krive L date sa 2( ) log 1 , 0,1/ 2 . f x x x
Rešenje:
In[23]:= f[x_] = Log[1 - x ^ 2]
fx = D[f[x], x]
s1 = Simplify[Sqrt[1 + fx ^ 2]]
NIntegrate[s1, {x, 0, 1/2}]
Out[23]= 0.598612
15.6. Površinski integral
15.6.1. Površinski integral I reda
Površinski integral funkcije f duž nad površi S je
( , ) .S f x y dS
Razlikujemo sledeća dva osnovna slučaja:
1) Neka je površ S data u eksplicitnom obliku kao ( , ),z g x y pri čemu funkcija g ima
neprekidne parcijalne izvode. Neka je Sxy projekcija površi S na xy-ravan. Tada
22
( , , ) ( , , ( , )) 1 .
xyS S
g gf x y z dS f x y g x y dxdy
x y
2) Neka je površ S data parametarski sa ( , ), ( , ) x x t u y y t u i ( , )z z t u za
( , ) ,t u D pri čemu je D oblast u 2. Tada
2( , , ) ( ( , ), ( , ), ( , )) , S Df x y z dS f x t u y t u z t u ab c dtdu
gde je
2 2 2 2 2 2
,
x y z x y za b
t t t u u ui
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
182
.
x x y y z zc
t u t u t u
Primer 15.14. Izračunati površinski integral funkcije2 2( , ) 4 f x y x y nad
regionom definisanim sa2 2 1 x y .
Rešenje:
Primetimo da S možemo predstaviti kao uniju dve eksplicitno zadate površi S1 i S2, gde je
S1 dato sa 21 x y , a S2 sa
21 x y . Domen funkcije f(x, y) je
2 2, | 4 4 , 2 2 , | 0 2,0 2 , x y y x y y r r
a region
2 2, | 1 1 , 1 1 , | 0 1,0 2 . R x y y x y y r r
In[24]:= f[x_, y_] = Sqrt[4 - x ^ 2 - y ^ 2]
p1 = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,2}, {t,0,2Pi}]
p2 = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,1}, {t,0,2Pi}]
Show[p1, p2]
Out[24]=
In[25]:= fx = D[f[x, y], x]
fy = D[f[x, y], y]
s1 = Simplify[Sqrt[1 + fx ^ 2 + fy ^ 2]]
Out[25]= 2 2
12
4 x y
XV vežba – Mathematica za više kurseve matematike
183
Površina oblasti se izračunava kao
2
2
2 12 1
2 21 1
21 .
4
y
S
y
f fdxdy dxdy
x y x y
Uvođenjem polarnih koordinata cosx r i siny r , pri čemu je
0,1 , 0,2 , r dvostruki integral postaje
2 1
20 0
2.
4
rdrdr
In[26]:= s2 = Simplify[s1/.{x -> r Cos[t],y -> r Sin[t]}]
NIntegrate[r s2,{t, 0, 2 Pi}, {r, 0, 1}]
Out[26]= 3.36715
15.6.2. Površina i zapremina rotacionog tela
Površina i zapremina tela nastalog rotacijom dela luka krive f(x) oko koordinatnih osa
izračunavaju se:
2
2
( ) ,
2 ( ) 1 ( ) .
b
x
a
b
x
a
V f x dx
P f x f x dx
2
2
2 ( ) ( ) ,
2 ( ) 1 ( ) .
b d
y
a c
d
y
c
V xf x dx x y dy
P x y x y dy
Primer 15.15. Odrediti površinu figure ograničene lukom krive
2
1( ) , 2,4
2
f x x
x x
i x-osom, a zatim izračunati zapreminu tela nastalog rotacijom tog luka oko x-ose.
Rešenje:
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
184
4
22
4
2
2
2
2
x
dxS
x x
dxV
x x
In[27]:= NIntegrate[1 / (Sqrt[x x + x - 2]), {x, 2, 4}]
Out[27]= 0.664135
In[28]:= Pi NIntegrate[1 / (x x + x - 2), {x, 2, 4}]
Out[28]= 0.725862
15.7. Redovi
15.7.1. Ispitivanje konvergencije redova
Beskonačni red je red oblika 1
,
k
k
a gde je na sekvenca. N-ta parcijalna suma je
1 2
1
... .
n
n k n
k
s a a a a Beskonačni red konvergira ka L ako sekvenca parcijalnih
suma ns konvergira ka L i piše se 1
.
k
k
a L
Za dati beskonačni niz
Sum[a[k], {k, 1, n}]
izračunava n-tu parcijalnu sumu. Za beskonačan red kaže se da konvergira ako se može
izračunati njegova vrednost, tj.
Sum[a[k], {k, 1, Infinity}]
Primer 15.16. Ispitati da li sledeći redovi konvergiraju ili divergiraju: a) 1
1
( 1) ,
k
k
b) 2
2
2.
1
k k
Rešenje:
In[29]:= sn = Sum[(-1) ^ (k + 1), {k, 1, n}]
Out[29]= 111 ( 1)
2
n
In[30]:= sn = Sum[(-1) ^ (k + 1), {k, 1, Infinity}]
XV vežba – Mathematica za više kurseve matematike
185
Out[30]= 1
1
( 1)k
k
b) Dati red se može predstavit kao 2
2 2
2 1 1.
1 1 1
k kk k k
In[31]:= sn = Sum[1/(k - 1) - 1/(k + 1), {k, 2, n}]
Out[31]=
22 3
2 (1 )
n n
n n
In[32]:= Apart[sn]
Out[32]= 3 1 1
2 1n n
In[33]:= Limit[sn, n -> Infinity]
Out[33]= 3
2
15.7.2. Stepeni red
Neka je x0 broj. Stepeni red za x - x0 je red oblika 0
0
( ) .
k
k
k
a x x
Primer 15.17. Ispitati da li sledeći stepeni red konvergira 2 1
0
( 1).
(2 1)!
kk
k
xk
Rešenje:
In[34]:= a[x_, k_] = (-1) ^ k / (2 k + 1)! x ^ (2 k + 1)
s1 = FullSimplify[a[x, k + 1] / a[x, k]]
Out[34]=
2
26 10 4
x
k k
In[35]:= Limit[s1, k -> Infinity]
Out[35]= 0
15.7.3. Razvoj funkcije u red
Neka funkcija f(x) ima u tački x = a konačan n-ti izvod f(n)
(x) za svaki prirodan broj n.
Beskonačan red
( )
0
( )( )
!
k
k
k
f ax a
k
zove se Tejlorov red.
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
186
Za razvoj funkcije u red oko date tačke a do određenog stepena n koristi se naredba
Series[f[x], {x, a, n}]
Primer 15.18. Dati prva dva člana Tejlorovog reda funkcije ( ) xf x e oko tačke a = 0.
Rešenje:
In[36]:= Series[ Exp[x], {x, 0, 2} ]//N
Out[36]= 1 + x + 1/2 x2
15.7.4. Furijeov red
Neka je funkcija y = f(x) definisana na -p < x < p. Tada Furijeov red za f(x) je
0
1
1cos sin
2
n n
n
n x n xa a b
p p
gde je
0
1( )
p
p
a f x dxp
1
( )cos , 1,2,...
p
n
p
n xa f x dx n
p p
1
( )sin , 1,2,...
p
n
p
n xb f x dx n
p p
Primer 15.19. Neka je funkcija f(x) definisana sa
, 1 0
( ) 1,0 1 .
( 2), 1
x x
f x x
f x x
Izračunati
prvih pet koeficijenata i prve tri parcijalne sume Furijeovog reda funkcije f(x).
Rešenje:
In[37] := f[x_] := 1/; 0 <= x < 1
f[x_] := -x/; -1 <= x < 0
f[x_] := f[x - 2]/; x >= 1
Plot[f[x], {x, -1, 5}]
XV vežba – Mathematica za više kurseve matematike
187
Out[37]= 1 1 2 3 4 5
0.2
0.4
0.6
0.8
1.0
In[38] := L = 1;
a[0] = NIntegrate[f[x], {x, -L, L}] / 2 L
Out[38]= 0.75
In[39] := a[n_] := NIntegrate[f[x] Cos[n Pi x / L], {x, -L, L}] / L
b[n_] := NIntegrate[f[x] Sin[n Pi x / L], {x, -L, L}] / L
coeffs = Table[{a[i], b[i]}, {i, 1, 5}];
TableForm[coeffs]
Out[39]= -0.202642 0.31831
-2.77556x10^-17 0.159155
-0.0225158 0.106103
-1.59595x10^-16 0.0795775
-0.00810569 0.063662
In[40] := fs[k_, x_] := coeffs[[k, 1]] Cos[k Pi x] + coeffs[[k, 2]] Sin[k Pi x]
fourier[n_, x_] := a[0] + Sum[fs[k, x], {k, 1, n}]
fourier[2, x]
Out[40]= 0.75 -0.202642 Cos[Pi x]-2.77556x10^-17 Cos[2 Pi
x]+0.31831 Sin[Pi x]+0.159155 Sin[2 Pi x]
In[41] := fourier[3, x]
Out[41]= 0.75 -0.202642 Cos[Pi x]-2.77556x10^-17 Cos[2 \[Pi]
x]-0.0225158 Cos[3 Pi x]+0.31831 Sin[Pi x]+0.159155 Sin[2 Pi
x]+0.106103 Sin[3 Pi x]
Primer 15.20. Neka je funkcija f(x) definisana sa 2( ) .f x x Izračunati prvih pet
koeficijenata Furijeovog reda funkcije f(x).
Rešenje:
In[42] := f[x_] := x ^ 2
Plot[f[x], {x, -Pi, Pi}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
188
Out[42]= 3 2 1 1 2 3
2
4
6
8
10
In[43] := a[0] = 2 Integrate[f[x], {x, 0, Pi}] / Pi
Out[43]=
22
3
In[44] := a[k_] := 2 NIntegrate[f[x] Cos[k x], {x, 0, Pi}] / Pi
b[k_] := 0
coeffs = Table[{a[i], b[i]}, {i, 1, 5}];
TableForm[coeffs]
Out[44]= -4. 0
1. 0
-0.444444 0
0.25 0
-0.16 0
Primer 15.21. Funkciju ( ) (2 ) f x x x definisanu za 0,2 razviti u Furijeov red.
Rešenje:
In[45] := f[x_] := x(2 Pi - x); a = 0; b = 2 Pi;
g[x_] := Which[
0 < x < 2 Pi, f[x],
-2 Pi< x < 0, f[x + 2 Pi],
2 Pi < x < 4 Pi, f[x - 2 Pi]];
ggraf = Plot[g[x], {x, -2 Pi,4 Pi}]
Out[45]= 5 5 10
2
4
6
8
10
XV vežba – Mathematica za više kurseve matematike
189
In[46] := fs = FourierSeries[g[x], x, 6];
Print["FourierSeries[g[x], x, 6] = ", fs];
Out[46]=
ix ix 2ix 2ix
3ix 3ix 4ix 4ix 5ix 5ix 6ix
26ix
1 1FourierSeries g x ,x,6 2e 2e e e
2 2
2 2 1 1 2 2 1e e e e e e e
9 9 8 8 25 25 18
1 2e
18 3
In[47] := fsgraf = Plot[{fs}, {x, -2 Pi, 4 Pi}, PlotStyle -> {Dashed, Thick, Red}];
Show[ggraf, fsgraf]
Out[47]= 5 5 10
2
4
6
8
10
In[48] := compexpfs = ComplexExpand[FourierSeries[fs, x, 6]];
Print["FourierSeries[g[x], x, 6] = ", compexpfs];
coef = FourierCoefficient[g[x], x, n];
Print["coef = ", coef];
Out[48]=
2
2 44Cos[ ] Cos[2 ] Cos[3 ]
3 9
1 4 1Cos[4 ] Co
FourierSeri
s[5 ] Cos[6 ]4
es g x x,6
9
,
25
πx x x
x x x
coef = 2
2
n
Primer 15.22. Funkciju
1, 0
( ) 0, 0
1, 0
x
f x signx x
x
razviti u Furijeov red.
Rešenje:
In[49] := a = 1;
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
190
gg[x_] := Sign[x];
g[x_] := Which[
0< x < a, gg[x],
a < x < 2 a, -gg[x],
2 a < x < 3 a, gg[x],
-a < x < 0, gg[x],
-2 a < x < -a, -gg[x],
-3 a < x < -2 a, gg[x]];
Plot[g[x], {x, -3 a, 3 a}]
Out[49]=
3 2 1 1 2 3
1.0
0.5
0.5
1.0
In[50] := fs = FourierSeries[gg[x], x, 6];
Print["FourierSeries[g[x], x, 6] = ", fs];
Out[50]=
i i 3i
3i 5i 5i
2ie 2ie 2ieFourier
3
2ie 2ie 2ie
3 5 5
Series g x ,x,6
x x x
x x x
In[51] := Plot[{g[x], fs}, {x, -3 a, 3 a}]
Out[51]=
3 2 1 1 2 3
1.0
0.5
0.5
1.0
In[52] := compexpfs = ComplexExpand[FourierSeries[fs, x, 6]];
Print["FourierSeries[g[x], x, 6] = ", compexpfs];
coef = FourierCoefficient[g[x], x, n];
XV vežba – Mathematica za više kurseve matematike
191
Print["coef = ",coef];
Out[52]= 4Sin[ ] 4Sin[3 ] 4Sin[
FourierSeries g x ,x,65 ]
3 5
x x x
coef =
3i i 2 2i 4iie ( 1 e )(1 e e )
2
n n n n
n
15.8. Crtanje polja i tokova
Za crtanje polja i tokova koristi se strelica koja se crta naredbom
Arrow[{{x1, y1},{x2, y2}}]
Primer 15.23. Nacrtati polje određeno strelicama koje počinju u tačkama (u, v) a
završavaju u tačkama (u + v/4 - 1, v + u/4 - 1).
Rešenje:
In[53]:= Graphics[Table[Arrow[{{u,v},{u+v/4-1,v+u/4-1}}],{u,0,5, 0.5},{v,0,5,0.5}]]]
Out[53]=
15.9. Laplasova transformacija
Neka je ( )y f t funkcija definisana na intervalu 0, . Laplasova transformacija je
funkcija
-st
0
F(s) f(t) = e f(t)dt
= .L
Funkcija ( )f t je inverzna Laplasova transformacija ( )F s u značenju L ( ) ( )f t F s , a
zapisana kao L -1 ( ) ( ).F s f t
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
192
U paketu Mathematica korsite se sledeće naredbe za rad sa Laplasovim transformacijama:
LaplaceTransform[f[t], t, s] izračunava L ( ) ( )f t F s ,
InverseLaplaceTransform[F[s], s, t] izračunava L -1 ( ) ( ),F s f t
UnitStep[t] vraća 0, 0
( )1, 0.
tu t
t
Borelova teorema: Ako je ( ) ( )f t F sL i ( ) ( ),g t G sL tada je
( * )( ) ( ) ( ).f g t F s G sL
Primer 15.24. Odrediti konvoluciju funkcija ( ) sinf t t i ( ) cosg t t .
Rešenje:
Primenom Borelove teoreme direktno dobijamo
2 2 2 2
1(sin *cos ) (sin ) (cos ) .
1 1 ( 1)
s st t t t
s s sL L L
In[54] := LaplaceTransform[Sin[t], t, s] LaplaceTransform[Cos[t], t, s]
Out[54]= 2 2
s
(s 1)
Primer 15.25. Odrediti ( )f t ako je 2
2( ) .
2 5
sF s
s s
Rešenje:
Slika ( )F s se može prikazati u obliku
2 2 2 2 2 2
1 1 1 1 2( ) ,
( 1) 2 ( 1) 2 2 ( 1) 2
s sF s
s s s
odnosno
1 1 1
2 2 2 2
1 1 2 1( ) ( ) cos2 sin 2 .
( 1) 2 2 ( 1) 2 2
t tsf t F s e t e t
s sL L L
In[55] := i1=InverseLaplaceTransform[-(s + 2) / (s ^ 2 + 2 s + 5), s, t]
ComplexExpand[i1]//Simplify
Out[55]= Cos Sint1e 2 2t 2t
2
XV vežba – Mathematica za više kurseve matematike
193
Primer 15.26. Rešiti diferencijalnu jednačinu
( ) 4 ( ) 3 ( ) 1, y t y t y t
pod uslovom (0) 0, (0) 1. y y
Rešenje:
Neka je ( ( )) ( ),y t Y sL tada je ( ( )) ( ) (0) ( ) y t sY s y sY sL i
2 2( ( )) ( ) (0) (0) ( ) 1. y t s Y s sy y s Y sL Primenom Laplasove transformacije na
levu i desnu stranu date diferencijalne jednačine, dobijamo
2 1( ) 1 4 ( ) 3 ( ) , s Y s sY s Y s
s
odakle je
2
1 1 1 1 2( ) .
( 4 3) ( 1)( 3) 3 1 3( 1)
s sY s
s s s s s s s s s
Primenom inverzne Laplasove transformacije, nalazimo
1 31 2( ) ( ( )) .
3 3
t ty t Y s e eL
In[56] := ODE = y''[t] - 4 y'[t] + 3 y[t] == 1
IC = {y[0] -> 0, y'[0] -> 1}
ltODE = LaplaceTransform[ODE, t, s] /.IC
Out[56]= -1+3 LaplaceTransform[y[t],t,s]
-4 s LaplaceTransform[y[t],t,s]
+s^2 LaplaceTransform[y[t],t,s]==1/s
In[57] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]]
Out[57]= 2
1 sLaplaceTransform y t ,t,s
s 3 4s s
In[58] := InverseLaplaceTransform[YSoln[s], s, t]
Out[58]= 3t
t1 2ey t e
3 3
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
194
Primer 15.27. Rešiti diferencijalnu jednačinu
2( ) ( ) 3(2 ), y t y t t
pod uslovom (0) (0) (0) 1. y y y
Rešenje:
Primenom Laplasove transformacije na levu i desnu stranu date diferencijalne jednačine,
dobijamo
3 2
3
6 2( ) ( ) 3 , s s Y s s s
s s
odakle je
5 4 2 4
4 2 4 4
6 6 6 6 6 1( ) .
( 1) ( 1) 1
s s s s sY s
s s s s s s
Primenom inverzne Laplasove transformacije, nalazimo
1 3( ) ( ( )) . ty t Y s e tL
In[59] := ODE = y'''[t] - y'[t] == 3 (2 - t ^ 2)
IC = {y[0] -> 1, y'[0] -> 1, y''[0] -> 1}
ltODE = LaplaceTransform[ODE, t, s] /.IC
Out[59]= -s-s^2-s LaplaceTransform[y[t],t,s]
+s^3 LaplaceTransform[y[t],t,s]==3(-(2/s^3)+2/s)
In[60] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]]
Out[60]= 4
4
6 6s sLaplaceTransform y t ,t,s
( 1 s)s
In[61] := InverseLaplaceTransform[YSoln[s], s, t]
Out[61]= t 3y t e t
XV vežba – Mathematica za više kurseve matematike
195
15.10. Parcijalne diferencijalne jednačine
Parcijalna diferencijalna jednačina je jednačina oblika
2
1 2 2
1 1
, ,..., , , ,..., , ,..., 0
m
n m
n n
u u u uF x x x u
x x x x
gde je F data funkcija od n nezavisno promenljivih x1, x2, ..., xn (n > 1), zatim od nepoznate
funkcije u = u(x1, x2, ..., xn) i konačnog broja parcijalnih izvoda funkcije u.
Za rešavanje parcijalne diferencijalne jednačine za ,u x y u paketu Mathematica koristi
se naredba oblika
DSolve[jednačina, u[x, y], {x, y}]
15.10.1. Parcijalne diferencijalne jednačine I reda
15.10.1.1. Linearna homogena parcijalna diferencijalna jednačina
Primer 15.28. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
2 2 ( ) 0.
u ux y x y u
x y
Rešenje:
In[62] := eqn = x ^ 2 D[u[x, y], x] + y ^ 2 D[u[x, y], y] - (x + y) u[x, y];
sol = DSolve[eqn == 0, u, {x, y}]
Out[62]= x y
u Function x,y ,xyC 1xy
In[63] := fn = u[x, y] /.sol[[1]] /.{C[1][t_] -> Sin[t ^ 2] + (t / 10)}
Out[63]=
2
2 2
x yx yxy Sin
10xy x y
In[64] := Plot3D[fn,{x,-5,5},{y,-5,5}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
196
Out[64]=
Primer 15.29. Ako je u(x, y, z) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
( ) 0.
u u ux x y z
x y z
Rešenje:
In[65] := DSolve[x D[u[x, y, z],x]+(x-y) D[u[x, y, z],y]+ z D[u[x, y, z],z]==0,u,{x, y, z}]
Out[65]= 1
{ , , }, [1][ ( 2 ),u Func2
tion ]z
x y z C x x yx
Primer 15.30. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
3 4 0.
u uu
x y
Rešenje:
In[66] := eqn = 3 D[u[x, y], x] + 4 D[u[x, y], y] + u[x, y];
sol = DSolve[eqn == 0, u, {x,y}]
Out[66]= /3 1e [1][ ( 4 3u Function x,y , )]
3
xC x y
In[67] := fn = u[x, y] /. sol[[1]] /. {C[1][t_] -> Sin[t]}
Out[67]= /3 1e Sin[ ( 4 3 )]
3
xx y
In[68] := Plot3D[fn,{x,-5,5},{y,-5,5}]
XV vežba – Mathematica za više kurseve matematike
197
Out[68]=
15.10.1.2. Kvazilinearna parcijalna diferencijalna jednačina
Primer 15.31. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
( ) .
u ux x y u
x y
Rešenje:
In[69] := DSolve[-x D[u[x, y], x] + (x + y) D[u[x, y], y] == u[x, y], u, {x, y}]
Out[69]=
1[1][ ( 2 )
u Function x,
]2y ,
C x x y
x
Primer 15.32. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
2 3.
u ux u
x y
Rešenje:
In[70] := DSolve[D[u[x, y], x] + x D[u[x, y], y] == u[x, y] ^ 2 + 3, u, {x, y}]
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
198
Out[70]= 213Tan[ 3 3 [1][ ( 2 )]]
2u Function x,y , x C x y
15.10.1.3. Nelinearna parcijalna diferencijalna jednačina
Primer 15.33. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
1.
u u
x y
Rešenje:
In[71] := DSolve[D[u[x, y], x] D[u[x, y], y] == 1, u, {x, y}]
Out[71]= u Function x,y [1] [2C ]]
,[2
xyC
C
Primer 15.34. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne
diferencijalne jednačine
22
4 4.
u uu
x y
Rešenje:
In[72] := DSolve[4 u[x, y] + D[u[x, y], x] ^ 2 + D[u[x, y], y] ^ 2 == 4, u, {x, y}]
Out[72]=
2 2 2 2 2
2
{{ [
1 2 [1] [1] [1] 2 [2] 2 [1][2] [2]]}}
u Functio
1 [
n x,y
1
,
]
y xyC C x C yC xC C C
C
XV vežba – Mathematica za više kurseve matematike
199
Zadaci za vežbu
I grupa
Odrediti kompozicije f g i g f za
a) 2( ) 2 1, ( ) 1, f x x g x x
b) 2( ) 9 , ( ) 9. f x x x g x x
II grupa
Izračunati dvostruki integral funkcije 2( , ) 2 3 f x y x y na oblasti datoj sa
2 2, | 1 1, 1 3 . A x y y y x y
III grupa
Izračunati trostruki integral funkcije ( , , ) f x y z zy na oblasti datoj sa
, , | 0 2,0 2 ,0 2 . A x y z z y z x z
IV grupa
Odrediti zapreminu ograničenu površima 2 2 z x y i 5.z
V grupa
Izračunati površinski integral funkcije2 2( , ) f x y x y nad centralnom sferom
2 2 2 9. x y z
VI grupa
Ispitati konvergenciju reda
0
1.
1 2
n
n n n
Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe
200
VII grupa
Ispitati konvergenciju i naći sumu reda
0
1.
3 1 3 4
n n n
VIII grupa
Razviti u Furijeov red funkciju
, 03
( ) .
,03
xx
f xx
x
IX grupa
Razviti u Furijeov red funkciju ( ) 2 , , . f x x x
X grupa
Neka je ( )y f t definisana sa 1,0 1
( )1,1 2
tf t
ti ( ) ( 2), 2. f t f t t Naći rešenja
diferencijalne jednačine 4 20 ( ). y y y f t
Literatura
1. Abell, M.L., Braselton, J.P., Mathematica by example, fourth edition, Elsevier Inc.,
2009.
2. Arnold, K., Gosling, J., Holmes, D., The Java Programming Language, fourth edition,
Addison Wesley Professional, 2005.
3. Došenović, T., Takači, A., Rakić, D., Zbirka zadataka iz Matematike I, Tehnološki
fakultet, Novi Sad, 2008.
4. Eckel, B., Thinking in Java, Second edition, Prentice Hall, New Jersey, 2000.
5. Flanagan, D., Java Examples in a Nutshell, third edition, O'Reilly, 2004.
6. Gocić, M., Algoritmsko rešavanje problema i objektno orijentisan pristup u Javi,
Mikro knjiga, Beograd, 2011.
7. Hartmann, D., Đorđević, Đ., Gocić, M., Osnovi inženjerske informatike I,
Građevinsko-arhitektonski fakultet, Niš, 2006.
8. Miličić, P., Ušćumlić, M., Zbirka zadataka iz više matematike I, Naučna knjiga,
Beograd, 1988.
9. Petković, Lj., Tričković, S., Rajković, P., Zbirka zadataka iz numeričke matematike,
Univerzitet u Nišu, Mašinski fakultet, 1997.
10. Poo, D., Kiong, D., Ashok, S., Object-Oriented Programming and Java, second
edition, Springer, 2008.
11. Petković, M., Algoritmi numeričke analize, Univerzitet u Nišu, Prirodno-matematički
fakultet, Niš, 2013.
12. Stanimirović, P. S., Milovanović, G. V., Programski paket Mathematica i primene,
Univerzitet u Nišu, Elektronski fakultet, 2002.
13. Stefanović, L., Matejić, M., Marinković, S., Diferencijalne jednačine: za studente
tehničkih fakulteta, Studentski kulturni centar, Niš, 2006.
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe
202
14. Walnum, C., Java By Example, Que Corporation, Indianopolis, 1996.
15. Weisfeld, M., Objektno orijentisani način razmišljanja, CET Computer Equipment
and Trade, Beograd, 2003.
16. Wellin, P. R., Gaylord, R. J., Kamin, S. N., An Introduction to Programming with
Mathematica, third edition, Cambridge University Press, 2005.
17. Wolfram, S., The Mathematica Book, fifth edition, Wolfram media, 2003.
Autori
Milan Lj. Gocić, doktor tehničkih nauka, docent Građevinsko-
arhitektonskog fakulteta Univerziteta u Nišu, rođen je 9. maja 1977.
godine u Nišu. Predaje grupu predmeta iz naučne oblasti
„Informacione tehnologije u građevinarstvu“. Autor je više od 90
naučnih i stručnih radova, koji su objavljeni u međunarodnim i
domaćim časopisima i zbornicima radova skupova međunarodnog i
nacionalnog značaja. Oblasti interesovanja su mu informacioni sistemi,
objektno orijentisano programiranje i modelovanje softvera.
Predrag M. Rajković, doktor matematičkih nauka, redovni profesor
Mašinskog fakulteta Univerziteta u Nišu, rođen je 9. juna 1959.
godine u Velikoj Plani kod Prokuplja. Godine 1983. diplomirao je na
Filozofskom fakultetu u Nišu, na Grupi za matematiku. Na istom
fakultetu, 1991. godine odbranio je magistarsku tezu, a 1998.
doktorsku disertaciju. U svojim naučnim radovima se bavi specijalnim
funkcijama, numeričkom analizom i programiranjem i njihovim
primenama u drugim naukama. Predavao je matematiku, optimizaciju,
programiranje i kompjutersku grafiku. Ima objavljenu monografiju
Diferencijalno-integralni račun bazičnih hipergeometrijskih funkcija
2008. godine, 25 naučnih radova na SCI listi i oko 90 naučnih radova
ukupno do sada.