Univerzitet u Nišu Građevinsko-arhitektonski fakultet Milan Gocić Predrag Rajković Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Niš, 015.
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/47 od 8.01.015. 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.4(075.8)(076) 004.4MATHEMATICA ГОЦИЋ, Милан, 1977- Uvod u programiranje i softverski paketi : praktikum za laboratorijske vežbe / Milan Gocić, Predrag Rajković. - Niš : Građevinsko-arhitektonski fakultet, 015 (Niš : Grafika Galeb). - III, 00 str. : ilustr. ; 5 cm Na vrhu nasl. str.: Univerzitet u Nišu. - Slike autora. - Tiraž 100. - Autori: str. [03]. - Bibliografija: str. 01-0. ISBN 978-86-88601-17-7 1. Рајковић, Предраг, 1959- [аутор] a) Програмирање - Вежбе b) Апликативни програм "Mathematica" COBISS.SR-ID 193148 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 014. godine Autori
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 0 1.. Izraz i kodiranje izraza 1 II vežba Linijska struktura 7.1. Algoritam 8.. Linijska struktura 9 III vežba Razgranata struktura 35 IV vežba Ciklična struktura 45 4.1. Iterativni ciklus 46 4.. 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 9 9.. 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.. Matrice 105 I
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 11 11.. 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.. Homogena diferencijalna jednačina 119 11.6.1.3. Linearna diferencijalna jednačina 10 11.6.1.4. Bernoullieva diferencijalna jednačina 10 11.6.1.5. Riccatieva diferencijalna jednačina 11 11.6.. Linearne diferencijalne jednačine II reda 11 11.6..1. Homogena linearna diferencijalna jednačina II reda sa konstantnim koeficijentima 11 11.6... Nehomogena linearna diferencijalna jednačina II reda sa konstantnim koeficijentima 1 11.6..3. Homogena linearna diferencijalna jednačina II reda sa funkcionalnim koeficijentima 1 11.6..4. Eulerova diferencijalna jednačina 13 11.6..5. Legendreova diferencijalna jednačina 13 11.6..6. Nehomogena linearna diferencijalna jednačina II reda sa funkcionalnim koeficijentima 13 11.6.3. Linearne diferencijalne jednačine višeg reda 14 11.6.3.1. Homogena linearna diferencijalna jednačina višeg reda sa konstantnim koeficijentima 14 11.6.3.. Nehomogena linearna diferencijalna jednačina višeg reda sa konstantnim koeficijentima 14 11.6.3.3. Homogena linearna diferencijalna jednačina višeg reda sa funkcionalnim koeficijentima 15 11.6.3.4. Nehomogena linearna diferencijalna jednačina višeg reda sa funkcionalnim koeficijentima 15 11.7. Integracija 15 XII vežba Grafika 135 1.1. Dvodimenzionalna grafika 136 1.. Opcije pri radu sa dvodimenzionalnom grafikom 137 1.3. Stilovi i boje 138 1.4. Iscrtavanje grafičkih primitive 139 1.5. Parametarski zadate krive 140 1.6. Crtanje oblasti u ravni 141 1.7. Trodimenzionalna grafika 14 II
1.8. Crtanje oblasti u prostoru 145 1.9. Prikazivanje skupova podataka i njihova analiza 146 XIII vežba Upravljačke strukture 151 13.1. Uslovni izrazi 15 13.. Ciklusi 155 13..1. Do ciklusi 155 13... While i For ciklus 155 XIV vežba Potprogrami 161 14.1. Funkcijski potprogram 16 14.. Opšti potprogram 16 14.3. Rekurzivna izračunavanja 164 XV vežba Mathematica za više kurseve matematike 169 15.1. Brojni sistemi 170 15.. Inverzne funkcije 171 15.3. Dvostruki integral 17 15.3.1. Dvostruki integral nad pravougaonikom 17 15.3.. Dvostruki integral nad proizvoljnom oblasti u 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.. Određivanje zapremine trostrukim integralom 178 15.5. Krivolinijski integral 180 15.5.1. Krivolinijski integral I reda 180 15.5.. Dužina luka krive 181 15.6. Površinski integral 181 15.6.1. Površinski integral I reda 181 15.6.. Površina i zapremina rotacionog tela 183 15.7. Redovi 184 15.7.1. Ispitivanje konvergencije redova 184 15.7.. 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.. Kvazilinearna parcijalna diferencijalna jednačina 197 15.10.1.3. Nelinearna parcijalna diferencijalna jednačina 198 Literatura 01 III
Cilj Upoznavanje sa okruženjem za izradu laboratorijskih vežbi u Javi
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe 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). Postoje tri načina za kreiranje Java projekta: 1. Selektovanje File -> New -> Project, Kreiranje konzolne aplikacije. 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. 10
Uvod u Javu 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. 11
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe 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.. 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"); } 1
Uvod u Javu 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. 13
Cilj Upoznavanje sa načinom prikaza laboratorijske vežbe
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Univerzitet u Nišu Građevinsko-arhitektonski fakultet Uvod u programiranje i softverski paketi Student: Pera Perić Broj indeksa: 1/FG Grupa: I Datum izrade vežbe: 15.04.014. 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: 16
Program: Primer ispravno urađene laboratorijske vežbe 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); 17
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Izlazni rezultati: Unesite realan broj a: 34.5 Unesite realan broj b: 1. Vrednost dobijenog zbira je 35.7 18
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 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. prikazani su relacioni operatori. Izlazni rezultat relacionih operatora je tipa boolean. Tabela 1.. 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 0
promenljiva = izraz; I vežba Kodiranje izraza 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. a) p = (x + y > z) && (x + z > y) && (y + z > x) b) p = ((a < c) && (b < d)) ((a < d) && (b < c)) 1.. 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 1
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe 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 gde su: Math.funkcija(a); 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 =.7188188459045 PI = 3.14159653589793 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 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 3 sin( x ) Math.sin( Math. pow( x,3)). Predstavljanje stepena funkcije: Na primer, ukoliko je funkcija sinus trećeg stepena, imaće izraz sledeći oblik 3 sin ( x) Math. pow( Math.sin( x),3) 3. Predstavljanje korena funkcije koji nije kvadratni: Na primer, ukoliko je potrebno predstaviti peti koren kvadrata promenljive x, imaće izraz sledeći oblik 5 x x 5 Math. pow ( x,.0 / 5.0) Primer 1.. Kodirati sledeće izraze: x x a) ln sin a e cos b arctg, b) cos y ln tg x 0,, xy e c) sin x x ln (sin x ) 3. a) Math.log(Math.sqrt(Math.abs(Math.sin(a + Math.exp(x / ) + Math.cos(b Math.atan(x / ))))) b) Math.log(Math.sqrt(Math.pow(Math.tan(x), ) + 0. + 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)), ) 3
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe Primer 1.3. Kodirati sledeće aritmetičke izraze: x 3 a) y sin x e, b) a z x b. y a) y = Math.sin(x + Math.exp( * x + 3)) b) z = x * Math.pow( * a / b, y) Zadaci za vežbu I grupa Kodirati sledeće aritmetičke naredbe: x y z sin( x y), x y y x e sin x x 3,8cos x e. II grupa Kodirati sledeće aritmetičke naredbe: 3 y x 5sin ( x ), x y x 1 3 x 3 5 x 4. 4
III grupa I vežba Kodiranje izraza Kodirati sledeće aritmetičke naredbe: x 3a y x z x x a, a b z 3x a. b y IV grupa Kodirati sledeće aritmetičke naredbe: a b y, a c b y a b a b 3 ( sin )cos sin a a bcos b. V grupa Kodirati sledeće aritmetičke naredbe: y x1 x x3 x4 4 8 16, 4 sin x x ycos x. x VI grupa Kodirati sledeće aritmetičke naredbe: 3 x 0,36x1 y 4 x x,3 y x x e x 4, 1. 3 3, x, VII grupa Kodirati sledeće logičke naredbe: z ( x y) ( x y), 5
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe 3 xx y x x x x 0 sin 1 3 0. VIII grupa Kodirati sledeće aritmetičke naredbe: y x e x x 3 x sin cos, x x e e y x x 3 3 cos sin. IX grupa Kodirati sledeću aritmetičku i logičku naredbu: x y, x 1 3 x 1 15 x z ( x y) x y. X grupa Kodirati sledeće aritmetičke naredbe: e y y x e ln(cos x ), x sin x 3 3 x sin 3 3x x. 1 5 3 6
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 Teorijske osnove za izradu vežbe.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.1). Tekst koji opisuje obradu se zapisuje unutar grafičkih simbola. Tok izvršenja algoritma se opisuje linijama koje povezuju grafičke simbole. Tabela.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: 8
1. linijska,. razgranata i 3. ciklična. II vežba Linijska struktura.. 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.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.1. Linijska struktura Primer.1. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije x y x f x x y na osnovu unetih vrednosti za x i y. Na izlazu štampati vrednost funkcije f. 4 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. 9
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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) / ( * x), 4) - x / (x - y); } } // Štampanje izlaznog rezultata System.out.println("Vrednost funkcije f je " + df.format(f)); Izlazni rezultati: Unesite vrednost za x:.5 Unesite vrednost za y: 3.6 Vrednost funkcije f je 4.49 3 Primer.. Tačka se kreće pravolinijski po zakonu s t 4t 8t 3, 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. Kinematičke jednačine kretanja su: s t t t 3 4 8 3 ( ) 6 8 8 v s t t t a v( t) 1t 8. U trenutku t 5sbiće s m v m s a m s 193, 118 /, 5 /. 30
II vežba Linijska struktura 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 LinijskaStruktura { 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 = * t * t * t - 4 * t * t + 8 * t + 3; v = 6 * t * t - 8 * t + 8; a = 1 * t - 8; // Štampanje izlaznih rezultata System.out.println("Vrednost pređenog puta je s = " + df.format(s) + " m."); 31
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe } } Izlazni rezultati: 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/s."); 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 = 5 m/s. 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 III grupa d ab a 3 5 4 c Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za izračunavanje dužine simetrale stranice a b. 1 ( ) ma b c a. IV grupa Sastaviti algoritam i napisati program za prevođenje ugla zadatog u radijanima u stepene, rad 180 ako važi step. 3
V grupa II vežba Linijska struktura 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 VI grupa 1 LA b c b c a b c (( ) ). Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a i b izračunava vrednost izraza VII grupa a b c a 1 b 3 b Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a, b, c i x izračunava vrednost izraza y cos x bsin x. a b c 3 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 r l, 360 površine isečka r P. 360 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 + 3. 33
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe X grupa Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za izračunavanje poluprečnika opisanog kruga abc R, 4 P abc pri čemu je P s ( s a) ( s b) ( s c), s. 34
Cilj vežbe Upoznavanje sa razgranatom programskom strukturom Implementacija razgranate programske strukture
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 { B } 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 B koji se piše iza rezervisane reči else (slika 3.1). U slučaju da ne postoji blok B, tada ne treba pisati rezervisanu reč else. Sintaksa ove strukture ima oblik if (uslov) { B1 } Slika 3.. 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.). 36
III vežba Razgranata struktura 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. Sintaksa if-else-if strukture ima oblik if (uslov1) { B1 } else if (uslov) { B } else { B3 } Slika 3.3. If-else-if struktura Primer 3.1. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost promenljive x izračunava vrednost funkcije x5, x0, y x, x 0. Na izlazu štampati rezultat oblika Za uneto X = xxx.xxx dobija se Y = xxx.xxx. 37
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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); 38
Izlazni rezultati: III vežba Razgranata struktura Unesite vrednost za x: -6.3 Za uneto X = -6.3 dobija se Y = 6.3 Primer 3.. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije x, x, y, x 3, x 1, x 3. Za unetu vrednost promenljive x, štampati vrednost argumenta i vrednost funkcije. package programiranje; import java.io.*; /* */ U zadatku se na osnovu unetog realnog broja x korišćenjem razgranate strukture izračunava vrednost funkcije y. 39
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 < ) y = x; else if (x < 3) y =.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:.5 Za uneto X =.5 dobija se Y =.0 Primer 3.3. Sastaviti algoritam i napisati program tako da se na osnovu dužine svetlog otvora stambene prostorije (k 0 ) u pravcu nosećih greda formira pokretno opterećenje u stambenim zgradama prema sledećoj tabeli: Dužina svetlog otvora Pokretno opterećenje k 0 < 4,5 m p = 1,5 kn/m 4,5 k 0 < 5,5 m p = 1,5 kn/m k 0 5,5 p =,0 kn/m 40
III vežba Razgranata struktura 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.5; else if (k0 < 5.5) p = 1.5; 41
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe else p =.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:.6 Za uneto k0 =.6 dobija se p = 1.5 Zadaci za vežbu I grupa Sastaviti algoritam i napisati program koji za unete realne vrednosti a i b izračunava y po formuli Rezultat prikazati u obliku II grupa a b, a b, y a b, a b, a / b, a b. Za unete vrednosti a = x.xx i b = x.xx dobija se y = x.xx. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava vrednost funkcije 3 x+1, x, y e x, x. III grupa Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje vrednost izraza p max( x,min( y, z)). 4
IV grupa III vežba Razgranata struktura Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije f(x) za zadatu vrednost x po formuli V grupa 3 x, x 0, x 3, 0 x1, f( x) x 3, 1 x 3, 10 x1, x3. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava vrednost funkcije VI grupa ( x), x4, y x 1, 4 x 8, 3 x 1, x8. Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje vrednost izraza VII grupa p min( x,max( y, z)). 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 max( x, y) min( x, y) f ( x, y). Na izlazu štampati vrednost funkcije. 1 max ( xy, ) 43
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe IX grupa Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava vrednost funkcije X grupa x - 1, x1, y x, x 1. Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije za unete realne vrednosti a, b i x 1,7 x 3, x, x 0, y a bcos x, x 0. a x b x sin x 44
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 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.) 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 dowhile petlje ima oblik do { B } while (uslov); Slika 4.. Do-while struktura Primer 4.1. Sastaviti algoritam i napisati program za iterativno rešavanje sistema jednačina 4x 3xy x 1 0 x y 3 0 46
1 xn 3 koristeći sledeće formule: xn 1 xn (3yn 1) 1, yn 1. IV vežba Ciklična struktura Iterativni proces prekinuti kada se ispune uslovi x n 1 x n i y n 1 y n. Na ulazu je data vrednost za i početne vrednosti za x 0 i y 0. Na izlazu štampati rešenja sistema jednačina. Zadatak rešiti koristeći: a) while petlju, b) do-while petlju. a) 47
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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) / ); 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) / ); } } } // Š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. Unesite vrednost za y0: 3.4 Rešenja sistema jednačina su x = 1.05 i y = 1.4 48
b) IV vežba Ciklična struktura 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)); 49
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe // 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) / ); do { x0 = x1; x1 = 0.5 * Math.sqrt(x0 * (3 * y0-1) + 1); y0 = y1; y1 = Math.sqrt((x0 + 3) / ); } 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. Unesite vrednost za y0: 3.4 Rešenja sistema jednačina su x = 1.05 i y = 1.4 4.. 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 m 1 početak, m kraj, a m 3 korak brojanja. 50
IV vežba Ciklična struktura Primer 4.. Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije f ( x) 1 3 x za x = 1,00(0,),00. Izlazna lista neka izgleda X x.xx F(X) xxx.xx 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 <=.0; x += 0.) { // 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)); 51
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Izlazni rezultati: X F(X) 1.00 1.41 1.0 1.65 1.40 1.93 1.60.6 1.80.61.00 3.00 Primer 4.3. Sastaviti algoritam i napisati program za izračunavanje vrednosti sume S n i1 i3 i 3 i 3 za unetu vrednost n. 5
package programiranje; IV vežba Ciklična struktura 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 q0 1 kn / m i dužine L 6 m. Za poprečne preseke na rasponu grede,5m z 3,5m 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 53
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Napomena: Transverzalna sila se određuje na osnovu formule F napadni moment M() z ql 0 z z 6 3. L L q L z 3 L 0 T ( z), a 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; 54
} } DecimalFormat df = new DecimalFormat("#,##0.00"); IV vežba Ciklična struktura // 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 =.5; z < 3.5; z += 0.1) { ft = q0 * (L / 3.0 - z * z / L) /.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.50 0.48.07.60 0.44.11.70 0.39.15.80 0.35.19.90 0.30. 3.00 0.5.5 3.10 0.0.7 3.0 0.15.9 3.30 0.09.30 3.40 0.04.31 Primer 4.5. Sastaviti algoritam i napisati program za određivanje zapremine i položaja težišta prave kupe poluprečnika R 0, (0,1) 0, 4 i visine H 1,0(0,5),0. Na izlazu štampati rezultate oblika: R.BR. R H V ZT xxx xx.xx xx.xx xx.xx xx.xx 55
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Omotač prave kupe nastaje obrtanjem prave y k z oko ose simetrije (z-ose): b H ; [ ( )] R R R R H k tg y z f z dz z dz H H H 3 b a 1 Zapremina je V [ f ( z)] dz R H 3 a 0 Koordinate statičkog momenta su b a H R 1 z[ f ( z)] dz z z dz R H H 4 0 Koordinate težišta prave kupe su ZT 3 4 H 56
package programiranje; IV vežba Ciklična struktura 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.; r <= 0.4; r += 0.1) for (double h = 1.0; h <=.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.0 1.00 0.04 0.75 0.0 1.50 0.06 1.1 3 0.0.00 0.08 1.50 4 0.30 1.00 0.09 0.75 5 0.30 1.50 0.14 1.1 6 0.30.00 0.19 1.50 7 0.40 1.00 0.17 0.75 8 0.40 1.50 0.5 1.1 9 0.40.00 0.34 1.50 57
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Zadaci za vežbu I grupa Sastaviti algoritam i napisati program kojim se štampaju elementi niza i i n,( i 1,..., n ) deljivi sa 5 na osnovu unete vrednosti za n. II grupa Sastaviti algoritam i napisati program za tabeliranje funkcije x z x 3a y, ako je x1(1), a0,1(0,1)0,5 i y 0,1(0,3)1,. III grupa Sastaviti algoritam i napisati program kojim se za date prirodne brojeve m i n, izračunava vrednost sume IV grupa 1 1 1 1 S n m n m n 3m n mm m1... ( 1). Sastaviti algoritam i napisati program za izračunavanje vrednosti izraza 3x y z x y ako je x 1(0,5) i y 0(0,)1. V grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti sume za unetu vrednost parametra n 1 n S.... 1 3 (n 1) 58
VI grupa IV vežba Ciklična struktura Sastaviti algoritam i napisati program kojim se štampaju svi trocifreni brojevi ABC koji imaju svojstvo ( ABC) ( AB) C, gde su nepoznate cifre 0 A 9, 0 B 9, 0 C 9. Primer: 147 = 14 7. VII grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti x a, po formuli 1 a x0 a 1, xn xn1 ( n 1,, ). xn 1 Proces prekinuti kada je x n x 5 n1 10. VIII grupa Sastaviti algoritam i napisati program za nalaženje najvećeg pozitivnog korena funkcije 3 f ( x) x 7x 4x 014 koristeći iterativnu formulu x0 7., 014 4 x i 1 7, i 0, 1, x x. i i Izračunavanje prekinuti kada bude zadovoljen uslov 6 x i 1 x i 10. IX grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti proizvoda P n i1 i4 i,5 i 4 za unetu vrednost n. 59
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe X grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti sume S 50 k1 k ( 1). ( k1)( k) 60
Cilj vežbe Upoznavanje sa jednodimenzionalnim poljem Implementacija jednodimenzionalnog polja
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 a 1, a,, a n 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 a i. Pošto se polja implementiraju kao objekti, kreiranje polja sastoji se iz dva koraka: 1. Deklariše se polje kao referencna promenljiva.. 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 0 elemenata i povezuje sa referencnom promenljivom polja mojepolje, izraz za kreiranje polja biće oblika int mojepolje[ ] = new int[0]; Polja se mogu inicijalizovati pri njihovom kreiranju. Opšti oblik inicijalizacije jednodimenzionalnog polja je tip ime_polja[ ] = { vrednost 1, vrednost, vrednost 3,..., vrednost n }; Inicijalne vrednosti su specificirane sa vrednost 1 do vrednost n. Dodeljivanje vrednosti elementima polja vrši se sekvencijalno s leva udesno prema redosledu indeksa. 6
V vežba Jednodimenzionalno polje Sortiranje predstavlja postupak uređenja objekata nekog skupa u određenom poretku. Na primer, ako je dato polje brojeva a[1], a[],..., a[ n] sortiranje je njihovo uređenje u neopadajućem a[1] a[]... a[ n] ili nerastućem poretku a[1] 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. 63
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 = ; 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); 64
Izlazni rezultati: V vežba Jednodimenzionalno polje Unesite broj elemenata n polja x: 4 Unesite elemente polja x: x[1] = 5 x[] = -16 x[3] = 65 x[4] = 3 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 F 3F F F F pri čemu je F0 0 i F1 1. niza n n1 n n1 n II grupa Sastaviti algoritam i napisati program kojim se određuju k-ti elementi nizova koji se formiraju na sledeći način: 0 b 0 su zadate vrednosti nizova, a važi III grupa a i bi a i 1 1 ai, bi ai 1 bi 1 za i 1,,3,... Sastaviti algoritam i napisati program kojim se na osnovu niza A od n elemenata formira niz B od n elemenata po formuli IV grupa bi 1 a i a n i Sastaviti algoritam i napisati program za izračunavanje vrednosti. a k 3 k, ako je k neparno, 3 k, ako je k parno, k 5,...,15. 65
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe V grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti P n x.... 1 x x n Na ulazu učitati vrednosti n, x ( i 1,,..., n). Na izlazu štampati P. VI grupa i Sastaviti algoritam i napisati program kojim se na osnovu niza A od n elemenata formira niz B od n elemenata po formuli VII grupa bi 1 a i a n i Sastaviti algoritam i napisati program za tabeliranje funkcije. ( xi 1) yx ( i ) 7,5 1,5 u tačkama xi ( i 1,,...,10), 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 n n 1 1 i i n i1 n i1 S x x. Na ulazu učitati vrednosti n, x ( i 1,,..., n), a na izlazu štampati S. i 66
X grupa V vežba Jednodimenzionalno polje Sastaviti algoritam i napisati program za izračunavanje sume n S xi, i1 gde je a b c a b c xi ai bi ci, ai bi ci, ai bi 3 ci, ai bi ci. i i i, i i i, Dimenzija nizova n i trojke podataka a, b, c ( i 1,,..., n), date su na ulazu. i i i 67
Cilj vežbe Upoznavanje sa dvodimenzionalnim poljem Implementacija dvodimenzionalnog polja
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 ili int matrica[ ][ ] = new int[5][5]; 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[ ] [ ] = { { vrednost 1, vrednost,..., vrednost n }, { vrednost 1, vrednost,..., vrednost n } }; 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 A T na osnovu zadate matrice A package programiranje; 3 5 A 1 4 5. 1 3 4 /* 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 = {{, -3, -5}, {-1, 4, 5}, {1, -3, -4}}; 3x3 70
} } // Deklarisanje dvodimenionalnog polja b int[][] b = new int[5][5]; // Nalaženje transponovane matrice for (int i = 0; i <= ; i++) for (int j = 0; j <= ; j++) b[i][j] = a[j][i]; VI vežba Dvodimenzionalno polje // Štampanje izlaznog rezultata System.out.println("Dobijena transponovana matrica je "); for (int i = 0; i <= ; i++) { for (int j = 0; j <= ; j++) System.out.print(b[i][j] + " "); System.out.println(); } Izlazni rezultati: Dobijena transponovana matrica je -1 1-3 4-3 -5 5-4 71
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 II grupa 1 5 5 A 10 1 5. 10 10 13 x 3 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 III grupa 1 0 1 A 0 1 0. 1 0 13 x 3 Sastaviti algoritam i napisati program kojim se pomoću nizova X [ x ]( i 1,..., n), Y [ y j ]( j 1,..., m), generiše matrica Z [ z ij ] n xm gde je i z ij x x y i j i yj. IV grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti determinante D 0 6 8 5 4 5. 5 8 6 7
V grupa VI vežba Dvodimenzionalno polje Za matricu A reda n x m ( n 10,m 10), 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: VII grupa a) suma svih elemenata, b) suma negativnih elemenata matrice. Sastaviti algoritam i napisati program za nalaženje C = A + B na osnovu zadatih matrica A i B: 3 5 A 1 4 15, 11 1 43 x 3 10 8 5 B 1 4 5. 1 3 43 x 3 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 ( a1 a33 ) a3 a11 a1, ako je matrica 3 5 A 1 4 5. 1 3 43 x 3 73
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe X grupa Sastaviti algoritam i napisati program za nalaženje matrice zadate matrice A: T B A 3A na osnovu 3 A 1 4 8. 1 3 3 3 x3 74
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 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> arg 1,, <tip> arg n ) 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. 76
VII vežba Metoda Primer 7.1. Sastaviti algoritam i napisati program za tabeliranje vrednosti funkcije za x = 0,1(0,1)0,9 ako je y f ( g( f ( x))), x f ( x) x 3, g( x). Izlaznu listu štampati u obliku X Y 0.1 xx.xx 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; } 77
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe static double g(double x) { return x /.; } 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.0 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.. Za trougaono opterećenje poznati su sledeći podaci: opterećenje q 0 1 kn / m i dužina L 6 m. Odrediti: L ukupno opterećenje Fq q, 0 L L otpore oslonaca FA q i F 0 B q, 6 0 3 78
VII vežba Metoda zmax iz uslova da je transverzalna sila najveći napadni moment M() z F q L z 3 L 0 T ( z) 0, ql 0 z z 6 3 za vrednost zmax. L L Napomena: Za određivanje nule funkcije koristiti Njutnovu metodu za koju važe sledeća pravila: početni uslov:, 0 f xk ) iterativna zakonitost x k 1 x k '(, f ( x ) k 0,1,, uslov kraja x k 1 x k. k 79
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe package programiranje; import java.io.*; import java.text.decimalformat; public class Primer { // Funkcija transverzalne sile public static double f(double q0, double L, double z) { return q0 * (L / 3.0 - z * z / L) /.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; 80
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; VII vežba Metoda } } 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 /.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"); 81
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 = kn Maksimalni napadni moment je Mmax =.31kNm za zmax = 3.46 m Zadaci za vežbu I grupa Napisati metodu za izračunavanje vrednosti funckije y 3, y 1, f ( y) y, 1 y, 6y1, y, gde je y x x 1. 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 p min( x,max( 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 P n i 8 18. i-3 i1 i3 U glavnom programu uneti vrednost za n i izračunati proizvod. 8
IV grupa VII vežba Metoda Napisati metodu za izračunavanje funkcije f(x) zadate u obliku f x sin x 3 ( ) 1 x. 10 3x U glavnom programu za x = 0,3(0,5),8 štampati vrednosti x i f(x) u tabeli sa odgovarajućim zaglavljem. V grupa 5 3 Napisati metodu za rešavanje jednačine x - x +10 0 Njutnovim iterativnim postupkom. Početno rešenje x 0 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 f xk ) iterativna zakonitost x k 1 x k '(, k 0,1, f ( x ), uslov kraja x k 1 x k. VI grupa k Napisati metodu kojom se izračunava vrednost x a, po formuli 1 a x0 a 1, xn xn1 ( n 1,, ). xn 1 Proces prekinuti kada je x x 1. U glavnom programu uneti vrednost za a i ε i naći vrednost korena. VII grupa n n Napisati metodu za izračunavanje norme matrice A [ ] date izrazom a ij m x n A m n i1 j1 a ij. U glavnom programu učitati matricu A i štampati normu matrice. 83
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe VIII grupa Napisati metodu kojom se izračunava vrednost funkcije log(1+x) po sledećem algoritmu 1 log(1 x), x 8 f( x) 10 k k ( 1) x 1, x k 8 k 1 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 X x, x,..., x Y y, y,..., y po formuli i i 1 n i 1 n r n n n n xi yi xi yi i1 i1 i1. n n n n n xi xi n yi yi i1 i1 i1 i1 U glavnom programu izračunati vrednost r na osnovu podataka iz sledeće tabele X grupa x 0,1 0, 0,3 0,4 0,5 y 0,5 0,3 0, 0,0-0,6 Napisati metodu za izračunavanje vrednosti funkcije r x 1 ln 1 u x, x 0 1, x 0 u x wu x, x 0 u a w a a 1 a. U glavnom programu za x x x x, štampati vrednosti funkcije r. p k 84
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 Zadaci za vežbu I grupa Sastaviti algoritam i napisati program za izračunavanje vrednosti varijanse 1 V x x n 1 n i sr i 1 gde je x sr srednja vrednost i izračunava se na osnovu sledeće formule, x sr 1 n n i1 x, n 50, i a x niz podataka. Na izlazu štampati vrednost varijanse V. Napomena: Program testirati na osnovu skupa izmerenih mesečnih padavina u Nišu tokom 010. godine datih sledećom tabelom mesec 1 3 4 5 6 7 8 9 10 11 1 padavine 54 88,3 48,8 79,5 68,8 67,4 35,8 9,5 14,4 73,7 44,9 7,6 (mm) II grupa Sastaviti algoritam i napisati program za tabelarni prikaz koeficijenta izvijanja za neelastično ponašanje materijala prema obrascu 1 1 0,8 100 za vrednosti 10 75, gde je λ vitkost štapova. III grupa Sastaviti algoritam i napisati program za određivanje dometa mlaza na osnovu izraza, H R 1,55 H 1 1000, 4,9 D H 86
VIII vežba Primena u građevinarstvu 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 W g ET Pe, (1 LR) gde je ET evapotranspiracija, LR zahtevano ispiranje, P e 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: ECw LR 5EC EC gde je EC w zasoljenost vode za navodnjavanje, EC e zasoljenost zemljišta. Vrednosti za EC w i EC e uneti na ulazu na osnovu sledeće tabele: e w, Kultura EC e EC w Ječam 1,3 8,7 Pšenica 9,5 6,4 Kupus 4,4,9 Krompir 3,8,5 Izlazna lista neka izgleda V grupa ECe ECw LR Wg x.xx x.xx x.xx x.xx Sastaviti algoritam i napisati program za izračunavanje neto potrebne količine vode za navodnjavanje ako važi ET W, 1 LR 87
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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: EC LR EC gde je EC emax maksimalna zasoljenost zemljišta. w emax Vrednosti za EC w, EC e i EC emax uneti na ulazu na osnovu sledeće tabele:, Kultura EC e EC w EC emax Ječam 1,3 8,7 8 Pšenica 9,5 6,4 0 Kupus 4,4,9 1 Krompir 3,8,5 10 Izlazna lista neka izgleda VI grupa ECe ECw ECemax LR W x.xx x.xx x.xx x.xx x.xx Sastaviti algoritam i napisati program za tabelarni prikaz vrednosti maksimalne vlažnosti drveta na osnovu formule 1,5 0 max ww H 100[%], 1,5 0 3 gde je [ t/ m ] zapreminska masa, a 0 w H granica zasićenosti vlakana. Zapreminska masa i granica zasićenosti vlakana za četiri vrste drveta date su u sledećoj tabeli: Granica zasićenosti Vrsta drveta Zapreminska masa ( 3 vlakana w (%) 0 H Jela 0,43 3 Bor 0,49 5 Bukva 0,68 33,5 Hrast 0,65 4 88
VII grupa VIII vežba Primena u građevinarstvu 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 z m z z0 z tg Na ulazu su zadate vrednosti VIII grupa 0 m, z,, z z z z. Izlazna lista neka izgleda: z z xx.xx xx.xx max xxx.xxx (za z = xxx.xx) Poroznost drveta se definiše izrazom 1 0 100[%], 3 p 3 gde je [ t/ m ] 0 zapreminska masa. Sastaviti algoritam i napisati program za izračunavanje vrednosti α za vrste drveta prikazane sledećom tabelom k Vrsta drveta Jela 0,43 Bor 0,49 Bukva 0,68 Hrast 0,65 Zapreminska masa ( t/ m 3 ) 0 IX grupa Sastaviti algoritam i napisati program za tabeliranje vrednosti stvarnog pritiska vodene pare u funkciji od minimalne temperature (T min ) 17,7T min Tmin 37,3 VP( T ) 0,611e. min Za n unetih vrednosti T min izračunati vrednosti stvarnog pritiska vodene pare. 89
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe X grupa Minimalni poluprečnik R min se određuje iz uslova stabilnosti vozila u krivini sa R min Vr [ m], 17( f i ) r pk,max gde je V r [km/ h] - računska brzina, ipk, max[%] - maksimalni poprečni ugib kolovoza u krivini, ipk, max 7%, f r - koeficijent radijalnog otpora klizanja. Sastaviti algoritam i napisati program za izračunavanje vrednosti R min za vrednosti Vr i f r prikazane sledećom tabelom V r (km/h) 30 40 50 60 70 f 0,45 0,18 0,193 0,171 0,151 r 90
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 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 9
IX vežba Softverski paket Mathematica 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,. 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.. 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. prikazane su aritmetičke operacije u paketu Mathematica. Tabela 9.. Aritmetičke operacije Aritmetička Mathematica Primer operacija sabiranje + x + y oduzimanje - x - y množenje praznina ili * x y ili x * y deljenje / x / y stepenovanje ^ x ^ y 93
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 9.1. a) Sabrati dva cela broja 10 i 8. In[1]:= 10 + 8 Out[1]= 18 Primer 9.. Naći treći stepen broja. In[]:= ^ 3 Out[]= 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 ^ 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 + /7 Out[5]= 13/1 In[6]:= 1/3 + /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 + /7, 4] Out[7]= 0.6190 In[8]:= N[Pi, 50] Out[8]= 3.14159653589793384664338379508841971693993751 94
9.3. Konstante IX vežba Softverski paket Mathematica 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 3. 14159 E e. 7188 Degree / 180- faktor konverzije stepena u radijane I i 1 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 Dodela vrednosti promenljivoj x Dodela vrednosti promenljivama x i y Odbacuje se vrednost dodeljena promenljivoj x Trenutna dodela Odložena dodela Mathematica x = vrednost x = y = vrednost x =. ili Clear[x] x /. a 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 = ; y = 80; z = y - x Out[10]= 78 95
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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[1]:= x//print; x:=5; x//print; x + //Print Out[1]= x 5 7 Vrednosti promenljivih se prenose i u sledeće ćelije. In[13]:= x = 5 Out[13]= 5 In[14]:= (x + y) ^ Out[14]= (5+y) 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! p q p && q p q p q pq Xor[p, q] 96
Primer 9.4. Naći vrednost izraza 1 34 13. IX vežba Softverski paket Mathematica In[15]:= 1 > 34 &&!= 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 x Mathematica Abs[x] x Sqrt[x] x e Exp[x] ln x Log[x] log b x Log[b, x] Trigonometrijske funkcije (argumenti su u radijanima) Inverzne trigonometrijske funkcije Hiperboličke funkcije Inverzne hiperboličke funkcije Sin[x], Cos[x], Tan[x], Cot[x] ArcSin[x], ArcCos[x], ArcTan[x], ArcCot[x] Sinh[x], Cosh[x], Tanh[x], Coth[x] ArcSinh[x], ArcCosh[x], ArcTanh[x], ArcCoth[x] Round[x] Zaokruživanje na ceo deo broja 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 a n 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. In[16]:= Cos[Pi/6] 97
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Out[16]= 3 In[17]:= Cos[Pi/6]//N Out[17]= 0.86605 Primer 9.6. Naći numeričku vrednost za sin 0. In[18]:= Sin[0 Degree] //N Out[18]= 0.340 Primer 9.7. Naći numeričku vrednost za 3 16 15. In[19]:= N[(16/15) ^ (1/3)] Out[19]= 1. 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 f ( x) x 5za x = 3,. In[0]:= f[x_] := x+5 In[1]:= f[3.] Out[1]= 11.4 Funkcije mogu imati proizvoljan broj argumenata. Primer 9.9. Napisati funkciju za sabiranje dva broja. Testirati funkciju za argumente 10 i 3. 98
IX vežba Softverski paket Mathematica In[]:= f[x_, y_] := x + y In[3]:= f[10, 3] Out[3]= 13 Primer 9.10. Za proizvoljno unete vrednosti x i y napisati funkciju oblika f x, y 3x y Funkciju testirati za vrednosti x 0,5 i y 0,5. 3 x In[3]:= f[x_, y_] := 3 x + y ^ + (x ^ 3 - y) / (x + y) In[4]:= f[0.5, 0.5] Out[4]= -0.315 Primer 9.11. Neka je data funkcija oblika Odrediti vrednosti funkcije za x = 10 i x = -3. In[5]:= f[x_]:= x + /; x > 0 f[x_]:= x - 3 /; x < 0 In[6]:= f[10] Out[6]= 1 In[7]:= f[-3] Out[7]= -6 x, x0 f( x). x 3, x 0 y x y. Napomena: Oznaka /; ukazuje na uslove pod kojima se funkcija izračunava po navedenoj formuli. 99
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Zadaci za vežbu I grupa Za proizvoljno unetu vrednost x napisati funkciju oblika cos 3 f x x Funkciju testirati za vrednost x 0,5. II grupa Neka je data funkcija oblika Odrediti vrednosti funkcije za x = π/3 i x = -. III grupa Neka je data funkcija oblika x x. sin x cos x sin xx, 0 f( x). 3 xx, 0 x,0 x1 f ( x) 1,1 x. 3 x, x 3 Odrediti vrednosti funkcije za x = 0,3 i x = 1,5. IV grupa Neka je data funkcija oblika x 3, x 0 f ( x) x,0 x 1. sin xx, 1 Odrediti vrednosti funkcije za x = -1, x = 1 i x = π/. 100
V grupa IX vežba Softverski paket Mathematica Naći 0. element Fibonačijevog niza ako važi: f (0) 1, f (1) 1, f ( n) f ( n 1) f ( n ). VI grupa Neka je data funkcija oblika f a b c a e b e c c (,, ) ln sin cos. Odrediti vrednost funkcije za a = π/, b = π/3 i c = 1. VII grupa Neka je data funkcija oblika Odrediti vrednost funkcije za x = 1 i y = 0,5. VIII grupa Neka je data funkcija oblika Odrediti vrednosti funkcije za x = 0,5. IX grupa a) Naći prvih 0 značajnih cifara izraza 11. 7 b) Izračunati 3. 16 cos y f ( x, y) ln tg x 0,. xy e 3 sin x x f( x). ln sin x 101
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe X grupa Neka je data funkcija oblika Odrediti vrednosti funkcije za x = 3 i x = 15. x 5, 0 x10 f x x x x 15 x, 0 x 30 ( ) 3 0,10 0. 10
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 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 ( abc,, ) {a, b, c} a b {{a, b}, {c, d}} Matrica 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[]:= Norm[{x, y, z}] Out[]= Abs[ x] Abs[ y] Abs[ z ] 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/,0,1/ },{0,1,0}} Projekcija jednog na drugi vektor In[5]:= Projection[{5, 6, 7}, {1, 1, 1}] Out[5]= {6,6,6} 104
10.. Matrice X vežba Linearna algebra Primer 10.1. Prikazati matricu oblika 3 4 A 3 4 5. 4 5 6 3x3 In[6]:= A = {{, 3, 4}, {3, 4, 5}, {4, 5, 6}} Out[6]= {{,3,4},{3,4,5},{4,5,6}} In[7]:= MatrixForm[A] Out[7]=//MatrixForm= 3 4 3 4 5 4 5 6 Vektori i matrice proizvoljnog reda definišu se naredbom Table[ ]. Primer 10.. Uvesti matricu oblika 1... n 3 1 n A. n n 1 n 1 In[8]:= A[n_] := Table[i + j - 1, {i, 1, n}, {j, 1, n}] Operatori za rad sa matricama su prikazani u tabeli 10.. Tabela 10.. 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 1 3 1 4 A 4 6 i B 1 4. 3 6 7 1 4 3 x 3 3 x 3 105
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe In[9]:= A = {{1,, 3}, {, 4, 6}, {3, 6, 7}} Out[9]= {{1,, 3},{, 4, 6},{3, 6, 7}} In[10]:= B = {{-1, -, -4}, {-1, -, -4}, {1,, 4}} Out[10]= {{-1, -, -4},{-1, -, -4},{1,, 4}} In[11]:= A.B Out[11]= {{0, 0, 0},{0, 0, 0},{0, 0, 0}} Primer 10.4. Odrediti proizvod matrica 1 3 x A i 1 x 3 3 1 B 1 3. In[1]:= A = {{}, {1}, {3}} Out[1]= {{},{1},{3}} In[13]:= B = {{1,, 3}} Out[13]= {{1,, 3}} In[14]:= A.B Out[14]= {{, 4, 6},{1,, 3},{3, 6, 9}} Primer 10.5. Naći inverznu matricu matrice 6 3 1 A 1 1 1. 3 1 3 x 3 In[15]:= A = {{6, 3, 1}, {1, 1, 1}, {3,, 1}} Out[15]= {{6, 3, 1},{1, 1, 1},{3,, 1}} In[16]:= Inverse[A] Out[16]= {{1, 1, -},{-, -3, 5},{1, 3, -3}} Primer 10.6. Naći peti stepen matrice 1 1 A 0 1 x. In[17]:= A = {{1, 1}, {0, 1}} Out[17]= {{1, 1},{0, 1}} In[18]:= MatrixPower[A, 5] Out[18]= {{1, 5},{0, 1}} 106
Primer 10.7. Naći determinantu matrice 1 1 3 4 0 0 8 A 3 0 0 4 4 7 5 4 x 4. X vežba Linearna algebra In[19]:= A = {{1, 1, 3, 4}, {, 0, 0, 8}, {3, 0, 0, }, {4, 4, 7, 5}} Out[19]= {{1, 1, 3, 4},{, 0, 0, 8},{3, 0, 0, },{4, 4, 7, 5}} In[0]:= Det[A] Out[0]= 100 Primer 10.8. Naći transponovanu matricu matrice 6 3 1 A 1 1 1. 3 1 3 x 3 In[1]:= A = {{6, 3, 1}, {1, 1, 1}, {3,, 1}} Out[1]= {{6, 3, 1},{1, 1, 1},{3,, 1}} In[]:= Transpose[A] Out[]= {{6, 1, 3},{3, 1, },{1, 1, 1}} Primer 10.9. Generisati jediničnu matricu reda 3. In[3]:= IdentityMatrix[3] Out[3]= {{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. 107
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 10.10. Naći rešenje sistema jednačina zadatog u matričnom obliku In[4]:= A = {{1, }, {4, 6}} B = {5.4, } X = LinearSolve[A, B] Out[4]= {{1, }, {4, 6}} Out[5]= {5.4, } Out[6]= {-14., 9.8} 1 5,4 X 4 6 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 1 A 3 x. In[7]:= A = {{1, }, {3, }} Eigenvalues[A] Out[7]= {4, -1} In[8]:= Eigenvectors[A] Out[8]= {{, 3}, {-1, 1}} In[9]:= Eigensystem[A] Out[9]= {{4, -1}, {, 3}, {-1, 1}} 108
Zadaci za vežbu X vežba Linearna algebra I grupa Naći sopstvene vrednosti i sopstvene vektore matrice 3 1 1 A 1 3 1. 1 1 1 3x3 II grupa Koristeći matričnu jednačinu rešiti sistem jednačina: x y z 3 x z x y z 1 III grupa Koristeći matričnu jednačinu rešiti sistem jednačina: x y z 5 3x 4y z 9 8x 3y z 18 IV grupa Neka je V grupa 4 5 A 3 7 5 i 8 1 8 3x3 6 1 3 B 6 8. Izračunati: a) A + B, b) B - A. 3 1 6 3x3 5 4 5 Neka je A 3 7 3 i 4 1 6 3x3 c) det B. 4 3 B 6 5. Izračunati: a) A -1, b) (A + B) T, 3 3 4 3x3 109
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe VI grupa Neka su dati vektori u ( 1 4 9 1) i v (0 4 3). Naći: a) v u, b) v + u, c) v u. VII grupa Prelaskom na matrični oblik, rešiti sistem jednačina: VIII grupa x y 3z 9 3x 5y z 4 4x 7y z 5 Koristeći matričnu jednačinu rešiti sistem jednačina: IX grupa 3x y z 1 x y 3z 1 4x 5y z Neka je 3 8 A 13 7 5 i 18 11 18 3x3 16 11 3 B 6 18 1. Izračunati: a) A + B, 3 11 6 3x3 b) B - A, c) det B, d) (A + B) T. X grupa 1 1 3 Naći sopstvene vrednosti i sopstvene vektore matrice A 3 1. 4 1 3x3 110
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 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.. Tabela 11.. Funkcije za algebarske operacije sa polinomima Opis funkcije Mathematica Količnik deljenja polinoma p 1 po x polinomom p, pri PolynomialQuotient[p 1, p, x] čemu se odbacuje ostatak Ostatak deljenja polinoma p 1 po x polinomom p PolynomialRemainder[p 1, p, x] NZD dva polinoma PolynomialGCD[p 1, p ] NZS dva polinoma PolynomialLCM[p 1, p ] Redukcija polinoma p po modulu m PolynomialMod[p, m] Primer 11.1. a) Odrediti faktore polinoma 3 polinoma ( x y) i (3 x y). 1x 7xy 84 y, b) izračunati proizvod a) In[1]:= Factor[1 x^+ 7 x y - 84 y ^ ] Out[1]= 3 (4 x-7 y) (x+4 y) b) In[]:= Expand[(x+y)^ (3 x - y) ^ 3] Out[]= 7x 7x y 18x y 7xy y 5 4 3 4 5 Primer 11.. Odrediti količnik i ostatak pri deljenju polinoma polinomom x 1. 4 3 15x 10x x 1 In[3]:= PolynomialQuotient[15 x^4-10 x^3+ x +1, x + 1, x] Out[3]= 3 5x 5x 15x 3 In[4]:= PolynomialRemainder[15 x^4-10 x^3+ x +1, x + 1, x] Out[4]= 4 11
11.. Sume i proizvodi XI vežba Simbolička izračunavanja 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 i max f i ii min Suma po i sa korakom d fa fad fa d fand ( a nd b a ( n 1) d ) i max Ponovljene sume n f i im j max ii min j j min i max Ponovljeni proizvodi f ij j max ii min j j min f ij Mathematica Sum[ f, {i, imin, imax}] Sum[ f, {i, a, b, d}] Sum[ f, {i, imin, imax}, {j, jmin, jmax}] Product[ f, {i, m, n} Product[ f, {i, imin, imax}, {j, jmin, jmax}] Primer 11.3. Odrediti sumu oblika 4 i1 i x. In[5]:= Sum[x^i, {i, 1, 4}] Out[5]= x x x x 3 4 Primer 11.4. Odrediti sumu oblika i i1 j1 In[6]:= Sum[x^i y^j, {i, 1, }, {j, 1, i}] Out[6]= x y x y x y i j xy 1 Primer 11.5. Odrediti tačnu i približnu sumu reda. i In[7]:= Sum[1/ i^, {i, 1, Infinity}] Out[7]= 6. i1 113
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe In[8]:= NSum[1/ i^, {i, 1, Infinity}] Out[8]= 1.64493 Primer 11.6. Odrediti proizvod oblika 5 i1 i. i In[9]:= NProduct[i / ^ i, {i, 1, 5}] Out[9]= 0.0036611 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 x x8 0. In[10]:= Solve[x ^ + x - 8 == 0, x] Out[10]= {{x -4},{x }} Primer 11.8. Naći rešenja kvadratne jednačine x 3x 1 0. Rešenja ove jednačine sadrže u sebi iracionalne brojeve In[11]:= Solve[x ^ + 3 x + 1 == 0, x] 1 1 Out[11]= {{ x ( 3 5)},{ x ( 3 5)}} Primer 11.9. Naći rešenja kvadratne jednačine x x 0. Ova jednačina ima kompleksna rešenja In[1]:= Solve[x ^ + x + == 0, x] Out[1]= {{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 114
XI vežba Simbolička izračunavanja 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 x 3x 1 0. Ova jednačina ima kompleksna rešenja In[13]:= NSolve[x ^ 5-3 x + 1 == 0, x] Out[13]= {{x-1.38879},{x-0.080951-1.3836}, {x-0.080951+1.3836 },{x0.334734},{x1.1465}} Funkcijom Solve[{izraz 1 == izraz, izraz 3 == izraz 4,...}, {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 x y 10 x y 5 In[14]:= Solve[{ 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[{izraz 1 == izraz, izraz 3 == izraz 4,...}, {x, y,...}] Takođe, ako sistem ima više rešenja, mogu se dobiti funkcijom Reduce. Funkcijom Eliminate[{izraz 1 == izraz, izraz 3 == izraz 4,...}, {x, y,...}] može se sistem jednačina pojednostaviti koristeći eliminaciju navedenih promenljivih. 115
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 Granična vrednost funkcije f kada x x 0, lim f (x) xx 0 Granična vrednost funkcije f kada x x 0 sa leve strane Granična vrednost funkcije f kada x x 0 sa desne strane Mathematica Limit[f, x x 0 ] Limit[f, x x 0, Direction 1] Limit[f, x x 0, Direction -1] Primer 11.1. Odrediti graničnu vrednost sin 3x lim. x0 x In[15]:= Limit[Sin[3 x] / x, x -> 0] Out[15]= 3 Primer 11.13. Odrediti graničnu vrednost 1 x 3x lim e. x0 In[16]:= Limit[Exp[3 x] 1 / x, x -> 0] Out[16]= - Primer 11.14. Odrediti graničnu vrednost x lim e x. x In[17]:= Limit[Exp[- x] Sqrt[x], x-> Infinity] Out[17]= 0 Primer 11.15. Odrediti graničnu vrednost x lim. x x0 In[18]:= Limit[Abs[x] / x, x -> 0, Direction -> -1] Out[18]= 1 116
XI vežba Simbolička izračunavanja Primer 11.16. Odrediti graničnu vrednost x0 1 x lim e. 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 Prvi, drugi i treći izvod funkcije f jedne promenljive n-ti izvod funkcije jedne promenljive Parcijalni izvod f f i x y f Mešoviti parcijalni izvod m x y mn n Mathematica f'[x], f''[x], f'''[x] D[f,{x, n}] D[f, x] D[f, y] D[f, {x, m},{y, n}] 1 Primer 11.17. Odrediti izvod funkcije f ( x) x. x In[0]:= D[x + 1 / x, x] 1 Out[0]= 1 x Primer 11.18. Odrediti treći izvod funkcije f ( x) cos x. In[1]:= D[Cos[x], {x, 3}] Out[1]= Sin[x] Primer 11.19. Odrediti prvi i drugi izvod funkcije f ( x) e x cos x. In[]:= f[x_]:= Exp[x] + Cos[x] In[]:= f'[x] 117
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe x e Out[]= Sin x In[3]:= f''[x] x Out[3]= e Cos x Primer 11.0. Odrediti parcijalni mešoviti izvod In[4]:= f[x_, y_]:= Log[x + y ^ ] In[5]:= D[f[x, y],{x, 1},{y, }] 8y Out[5]= 3 ( x y ) ( x y ) 3 f xy funkcije f ln ( 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 DSolve[jednačina, y[x], x] za y[x], smatrajući x za nezavisnu promenljivu Rešavanje sistema diferencijalnih DSolve[{jednačina 1, jednačina, }, {y 1, y, }, x] jednačina 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.1. Naći opšte rešenje diferencijalne jednačine y xy 3 x. In[6]:= DSolve[y'[x] == (x ^ y[x] ^) / Sqrt[3 - x ^ ], y[x], x] 118
Out[6]= y[x] XI vežba Simbolička izračunavanja x x 3 x 3ArcSin C[1] 3 Primer 11.. Naći opšte rešenje diferencijalne jednačine y x sin x 1 x. In[7]:= DSolve[y'[x] == x ^ Sin[x] + Sqrt[1 + x ^ ], y[x], x] Out[7]= 1 ArcSinh[ x] y[x] x 1 x C[1] ( x )Cos[ x] xsin[ x] 11.6.1.. Homogena diferencijalna jednačina Primer 11.3. Naći opšte rešenje diferencijalne jednačine y x x y y 3 x x y 3 3. In[8]:= DSolve[y'[x] == (x ^ 3 + x ^ y[x] - y[x] ^ 3) / (x ^ 3 + x ^ y[x]), y[x], x] C[1] x( e x ) Out[8]= y[x] C[1] e x Primer 11.4. Naći opšte rešenje diferencijalne jednačine 3 y x y xy. In[9]:= DSolve[y'[x] == -(x ^ - 3 y[x] ^ ) / (x y[x]), y[x], x] 6 6 x x C[1] x x C[1] Out[9]= y[x], y[x] 119
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 11.6.1.3. Linearna diferencijalna jednačina Primer 11.5. Naći opšte rešenje diferencijalne jednačine 1 y y x. x In[30]:= DSolve[y'[x] - y[x] / x == x ^, y[x], x] 3 x Out[30]= y[x] xc[1] Primer 11.6. Naći opšte rešenje diferencijalne jednačine 3 ( x 1) y xy x x 0. In[31]:= DSolve[(x ^ - 1) y'[x] - x y[x] + x - x ^ 3 == 0, y[x], x] Out[31]= y[x] ( 1 x )[1] C ( 1 x )Log[ 1 x ] 11.6.1.4. Bernoullieva diferencijalna jednačina Primer 11.7. Naći opšte rešenje diferencijalne jednačine xy y x y 4 0. In[3]:= DSolve[x y'[x] - 4 y[x] - x ^ Sqrt[y[x]] == 0, y[x], x] 1 4 4 4 Out[3]= y[x] (4 [1] 4 [1]Log[ ] Log[ ]) 4 x C x C x x x Primer 11.8. Naći opšte rešenje diferencijalne jednačine y xy x y 3 3 11. In[33]:= DSolve[y'[x] + 11 x y[x] == x ^ 3 y[x] ^ 3, y[x], x] 10
XI vežba Simbolička izračunavanja Out[33]= 11 11 y[x], y[x] 11 11 1 11 11e x x x C[1] 1 11x 11e C[1] 11.6.1.5. Riccatieva diferencijalna jednačina Primer 11.9. Naći opšte rešenje diferencijalne jednačine y x 3y 0. In[34]:= DSolve[y'[x] + ( / x ^ ) - 3 y[x] ^ == 0, y[x], x]//simplify 5 3x C[1] Out[34]= y[x] 6 3x 3 xc[1] 11.6.. Linearne diferencijalne jednačine II reda 11.6..1. Homogena linearna diferencijalna jednačina II reda sa konstantnim koeficijentima Primer 11.30. Naći opšte rešenje linearne diferencijalne jednačine y 5y 6y 0. In[35]:= DSolve[y''[x] + 5 y'[x] - 6 y[x] == 0, y[x], x] 6 Out[35]= y[x] e x x C[1] e C[] Primer 11.31. Naći opšte rešenje linearne diferencijalne jednačine y 4y 4y 0. In[36]:= DSolve[y''[x] - 4 y'[x] + 4 y[x] == 0, y[x], x] Out[36]= y[x] e x x C[1] e xc[] 11
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 11.6... Nehomogena linearna diferencijalna jednačina II reda sa konstantnim koeficijentima Primer 11.3. Naći opšte rešenje linearne diferencijalne jednačine y y e x 4 4. In[37]:= DSolve[y''[x] - 4 y[x] == 4 Exp[- x], y[x], x] 1 x x x Out[37]= y[x] e (1 4 x) e C[1] e C[] 4 Primer 11.33. Naći opšte rešenje linearne diferencijalne jednačine y 4y (8x 1)sin x. In[38]:= DSolve[y''[x] + 4 y[x] == + (8 x - 1) Sin[ x], y[x], x] {{y[x] C[1]Cos[ x] C[]Sin[ x] 1 (4 x Cos[ x ] 16 x Cos[ x ] 8Cos[ x ] Cos[ x ]Cos[4 x ] Out[38]= 16 Cos[ x] Sin[ x] 8x Cos[4 x]sin[ x] 8Sin[ x] Cos[ x]sin[4 x] 8xCos[ x]sin[4 x] Sin[ x]sin[4 x])}} 11.6..3. Homogena linearna diferencijalna jednačina II reda sa funkcionalnim koeficijentima Primer 11.34. Naći opšte rešenje linearne diferencijalne jednačine xy ( x) y y 0. In[39]:= DSolve[x y''[x] + ( + x) y'[x] + y[x] == 0, y[x], x] e x C[1] C[] Out[39]= y[x] x x 1
11.6..4. Eulerova diferencijalna jednačina XI vežba Simbolička izračunavanja Primer 11.35. Naći opšte rešenje diferencijalne jednačine 3 4 0. x y xy y In[40]:= DSolve[x ^ y''[x] - 3 x y'[x] + 4 y[x] == 0, y[x], x] Out[40]= y[x] x C[1] x C[]Log[ x] Primer 11.36. Naći opšte rešenje diferencijalne jednačine 5 6 0. x y xy y In[41]:= DSolve[x ^ y''[x] + 5 x y'[x] + 6 y[x] == 0, y[x], x] C[]Cos[ Log[ x]] C[1]Sin[ Log[ x]] Out[41]= y[x] x x 11.6..5. Legendreova diferencijalna jednačina Primer 11.37. Naći opšte rešenje diferencijalne jednačine (3x 1) y 5(3x 1) y 6y 0. In[4]:= DSolve[(3 x + 1) ^ y''[x] + 5 (3 x + 1) y'[x] + 6 y[x] == 0, y[x], x] 1 1 C[]Cos[ 5Log[1 3 x]] C[1]Sin[ 5Log[1 3 x]] Out[4]= {{y[x] 3 3 }} 1/3 1/3 (1 3 x) (1 3 x) 11.6..6. Nehomogena linearna diferencijalna jednačina II reda sa funkcionalnim koeficijentima Primer 11.38. Naći opšte rešenje linearne diferencijalne jednačine xy ( x) y y e x. 13
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe In[43]:= DSolve[x y''[x] + (x + ) y'[x] + y[x] == Exp[x], y[x], x] x e e x C[1] C[] Out[43]= y[x] 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 y 4y 5y 8y 0. In[44]:= DSolve[y'''[x] - 4 y''[x] - 5 y'[x] + 8 y[x] == 0, y[x], x] 4x x 7x Out[44]= y[x] e C[1] e C[] e C[3] Primer 11.40. Naći opšte rešenje linearne diferencijalne jednačine 16 94 40 5 0. (4) y y y y y In[45]:= DSolve[y''''[x] - 16 y'''[x] + 94 y''[x] - 40 y'[x] + 5 y[x] == 0, y[x], x] 3 3 5 5 Out[45]= y[x] e x C[1] e x xc[] e x C[3] e x xc[4] 11.6.3.. Nehomogena linearna diferencijalna jednačina višeg reda sa konstantnim koeficijentima Primer 11.41. Naći opšte rešenje linearne diferencijalne jednačine y 3y 4y y e x. In[46]:= DSolve[y'''[x] - 3 y''[x] + 4 y'[x] - y[x] == Exp[x], y[x], x] Out[46]= y[x] e x x e x C [3] e x C []Cos[ x ] e x C [1]Sin[ x ] 14
XI vežba Simbolička izračunavanja 11.6.3.3. Homogena linearna diferencijalna jednačina višeg reda sa funkcionalnim koeficijentima Primer 11.4. Naći opšte rešenje linearne diferencijalne jednačine 0. 3 x y x y xy y In[47]:= DSolve[x ^ 3 y'''[x] + x ^ y''[x] - x y'[x] + y[x] == 0, y[x], x] [1] Out[47]= y[x] C xc[] xc[3]log[ 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 x y x y xy y x. In[48]:= DSolve[x ^ 3 y'''[x] + x ^ y''[x] - x y'[x] + y[x] == x ^, y[x], x] x C[1] Out[48]= y[x] xc[] xc[3]log[ x] 3 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 dx Integrate[f, x] Višestruki integral x max Određen integral f dx x min Višestruki određen integral f ( x, y) dxdy Integrate[f, x, y] xmax ymax xmin y min f dxdy Integrate[f, {x, xmin, xmax}] Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] 15
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 11.44. Odrediti vrednost integrala In[49]:= Integrate[(x + 7) / Sqrt[x + ], x] Out[49]= x (17 x ) 3 I x 7 dx. x Primer 11.45. Za n 1, odrediti vrednost integrala I x n dx. In[50]:= Integrate[x ^ n, x] 1 n x Out[50]= 1 n Primer 11.46. Odrediti vrednost integrala In[51]:= Integrate[x ^ / (x ^ + 1), x] Out[51]= x-arctan[x] I x x 1 dx. Primer 11.47. Odrediti vrednost integrala x I e dx. 0 In[5]:= Integrate[Exp[-x ^ ], {x, 0, Infinity}] Out[5]= Primer 11.48. Odrediti vrednost integrala I 1 ln x dx. x 0 In[53]:= Integrate[Log[x] / Sqrt[x], {x, 0, 1}] Out[53]= -4 16
XI vežba Simbolička izračunavanja Za određivanje približne vrednosti integrala koristi se funkcija NIntegrate[f, x]. Primer 11.49. Odrediti vrednost integrala I 1 sin(cos x) dx. 0 In[54]:= N[Integrate[Sin[Cos[x]], {x, 0, 1}]] Out[54]= 0.738643 Primer 11.50. Odrediti približnu vrednost integrala I 1 0 x 5 dx. x In[55]:= NIntegrate[Sqrt[ Sqrt[x] + 5] / Sqrt[x],{x, 0, 1}] Out[55]= 4.8938 Primer 11.51. Odrediti približnu vrednost integrala I 0 x 6 x dx. x In[56]:= NIntegrate[( x ^ - 6) / Sqrt[x ^ + x + ],{x, 0, π}] Out[56]= -1.38969 Primer 11.5. Odrediti približnu vrednost integrala 1 I x x dx 0 ln. In[57]:= NIntegrate[Sqrt[x] Log[x] ^, {x, 0, 1}] Out[57]= 0.59593 Primer 11.53. Odrediti vrednost višestrukog integrala 1 x 0 0 I dx x y dy ( ). In[58]:= Integrate[ x ^ + y ^, {x, 0, 1}, {y, 0, x} ] Out[58]= 1 3 17
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 11.54. Odrediti vrednost višestrukog integrala 1 ( ). I dy x y dx 0 0 In[59]:= Integrate[ x ^ + y, {y, 0, }, {x, 0, 1} ] Out[59]= 14 3 Primer 11.55. Odrediti vrednost višestrukog integrala 3 5 I dy ( x y) dx. 3 y 4 In[60]:= Integrate[ x + y, {y, -3, 3}, {x, y ^ - 4, 5} ] Out[60]= 5 5 Primer 11.56. Odrediti vrednost višestrukog integrala 1 1x 1 I dx x dy. 0 x In[61]:= Integrate[ x, {x, 0, 1}, {y, -x +, Sqrt[1 - x ^ ] + 1} ] Out[61]= 1 6 Primer 11.57. Odrediti vrednost višestrukog integrala 8 x 4 I dx dy. x 4 In[6]:= Integrate[ 1, {x, -, }, {y, x ^ / 4, 8 / (x ^ + 4)} ] 4 Out[6]= 3 18
Zadaci za vežbu XI vežba Simbolička izračunavanja I grupa 6 3 a) Odrediti količnik i ostatak pri deljenju polinoma 3x x 1polinomom 4 i 3 b) Odrediti sumu oblika.,5 i1 3 c) Naći rešenja jednačine x x1 0. 1 1 d) Odrediti graničnu vrednost lim. x1 ln x x1 5 3 e) Odrediti prvi i drugi izvod funkcije f ( x) x 4x x 3. x f) Rešiti diferencijalnu jednačinu y y e. 1 g) Odrediti vrednost integrala I dx. x x6 x 3 x. II grupa a) Odrediti količnik i ostatak pri deljenju polinoma x 3. b) Odrediti sumu oblika 30 ( x ) i. i1 3 c) Naći rešenja jednačine x 3x x 3 0. 1 1 d) Odrediti graničnu vrednost lim. x0 x x e 1 x x e) Odrediti izvod funkcije f ( x) e e. f) Rešiti diferencijalnu jednačinu 5xy x y 0. g) Odrediti vrednost integrala III grupa 1 1 x 1 4. I x y dydx 4 0 0 5 4 3 x x 3x x 1 polinomom a) Odrediti NZD polinoma b) Odrediti sumu oblika 3 x 5x 6x i i1 j1 c) Naći rešenja sistema jednačina i ( i j). 3 6x 3x x 1. 19
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe x 3y z 8 3x y z 5 x y z 1 d) Odrediti granične vrednosti lim tg x i x lim tg x. x 3 e) Odrediti drugi parcijalni izvod funkcije f ( x) x 10x 8x 4. f) Rešiti diferencijalnu jednačinu y 4xyy x 0. g) Odrediti vrednost integrala I IV grupa 4 0 (1 tan x) dx. a) Odrediti NZD polinoma b) Odrediti proizvod oblika 4 x 3 x x x 5 i1 c) Naći rešenja sistema jednačina 3 4 3 i 3 i. 3 3x 10x x 3. x y z x y 3z 4 x y z 3 x e x x d) Odrediti graničnu vrednost lim. x0 x 1 e) Odrediti prvi izvod funkcije f( x) x. xln x 1 f) Rešiti diferencijalnu jednačinu y y x. x g) Odrediti vrednost integrala V grupa a) Izračunati proizvod polinoma b) Odrediti proizvod oblika c) Naći rešenja jednačine 5 I i1 j1 0 1 1 x x i i 3 j 4 x 4x 3 0. dx. 4 x 6x. 130
XI vežba Simbolička izračunavanja x x 5 d) Odrediti graničnu vrednost lim. x0 x e) Odrediti prvi izvod funkcije f ( x) x x 1. x f) Rešiti diferencijalnu jednačinu y y y e ln x. g) Odrediti vrednost integrala VI grupa x I e x dx 0 sin. a) Odrediti količnik i ostatak pri deljenju polinoma b) Odrediti sumu oblika 5 i i1 j1 c) Naći rešenja sistema jednačina ( i j). 3 x 3x 1 polinomom x 1. 5x1 3y1 3 6 10 11x 11 y 3 6 4 d) Odrediti graničnu vrednost lim x x 1. x e) Odrediti prvi i drugi izvod funkcije f ( x) e x x. f) Rešiti diferencijalnu jednačinu ( x yx ) y y xy 0. g) Odrediti vrednost integrala VII grupa x I e dx. 0 a) Odrediti količnik i ostatak pri deljenju polinoma b) Odrediti sumu oblika 0 i1 ( x 3) i. c) Naći rešenja sistema jednačina 4 3 x x x 1 polinomom x 1. x y 5z 6 x y z 5 3x 3y 4z 8 d) Odrediti graničnu vrednost 1 lim1. x x x 131
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 1 x e) Odrediti prvi izvod funkcije f( x). 1 x f) Rešiti diferencijalnu jednačinu xy y cos x. 1 sin x g) Odrediti vrednost integrala I dx. sin x(1 cos x) VIII grupa a) Odrediti NZS polinoma 5 i b) Odrediti sumu oblika. i1 i 5 c) Naći rešenja sistema jednačina x y z 1 x y z 1 x y z 1 3 x x x 3 4 i ( x 1). x e d) Odrediti graničnu vrednost lim. x x 3 y e) Odrediti prvi i drugi parcijalni izvod funkcije z xcos y y tgx x e y ln x. 3 f) Rešiti diferencijalnu jednačinu x y x y xy y 0. g) Odrediti vrednost integrala IX grupa I 3 a) Odrediti faktore polinoma x 7x 6. 1 b) Odrediti sumu oblika. i1 (1 i) c) Naći rešenja sistema jednačina 3x x x x 6 1 3 4 5x x 3x 4x 1 1 3 4 x x x 1 1 3 4 4 3 3x 5x 10x 5x 1 5 4 3 x x 3x x x x1 5x 3x3 3x4 3 ln(1 x) d) Odrediti graničnu vrednost lim. x0 x e) Odrediti parcijalni izvod funkcije z xy ln( x y) x 3. dx. 13
3 f) Rešiti diferencijalnu jednačinu 3y y 16x xy. 1 sin x g) Odrediti vrednost integrala I dx. sin x(1 cos x) XI vežba Simbolička izračunavanja X grupa a) Odrediti NZD polinoma x b) Odrediti proizvod oblika 3 5 7x6 i i i1 j1 i j. 3 x x x 5 6. c) Odrediti rešenja jednačine ( x x) ( x x) 3. x d) Odrediti graničnu vrednost lim. x x x x e) Odrediti parcijalni izvod funkcije z x x y ln. 3 f) Rešiti diferencijalnu jednačinu ( x 1) y xy x x 0. g) Odrediti vrednost integrala 5 x 1 I ( e ) dx. x 0 133
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 Teorijske osnove za izradu vežbe 1.1. Dvodimenzionalna grafika Osnovna funkcija za iscrtavanje grafika funkcija u paketu Mathematica je Plot, koja iscrtava proizvoljnu funkciju jedne promenljive u zadatom intervalu (tabela 1.1). Tabela 1.1. Iscrtavanje grafika funkcije Funkcija u paketu Mathematica Plot[ f, {x, xmin, xmax}] Plot[{f 1, f,... }, {x, xmin, xmax}] Opis Grafik funkcije f u zavisnosti od x u intervalu [xmin, xmax] Crtanje više funkcija zajedno Primer 1.1. Nacrtati grafik funkcije sin(x) za x [0, ]. In[1]:= Plot[Sin[x], {x, 0, Pi}] Out[1]= Primer 1.. Nacrtati grafik funkcija sin(x), cos(x) za x [0, ]. In[]:= Plot[{Sin[x], Cos[x] }, {x, 0, Pi}] Out[]= 136
1.. Opcije pri radu sa dvodimenzionalnom grafikom XII vežba Grafika Da bi korisnik sam podesio opcije pri iscrtavanju dvodimenzionalnih grafika koristi se funkcija oblika Plot[ f, {x, xmin, xmax}, opcija -> vrednost] U tabeli 1. navedene su opcije koje se mogu podešavati u dvodimenzionalnom grafiku. Tabela 1.. Opcije pri crtanju dvodimenzionalnog grafika Opcija Podrazumevana Opis vrednost 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 5 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 1.3. Nacrtati grafik funkcije sin x za x [0, 3]. In[3]:= Plot[Sin[x ^ ], {x, 0, 3}, AxesLabel -> {"x", Sin[x ^ ]}, PlotLabel -> "Grafik funkcije"] Out[3]= 137
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe In[4]:= Plot[Sin[x ^ ], {x, 0, 3}, Frame -> True, GridLines -> Automatic] Out[4]= 1.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 1.3). Stil je lista grafičkih kontrolnih funkcija koje određuju izgled krive ili niza tačaka. Tabela 1.3. Opcija PlotStyle Primena stila u paketu Mathematica PlotStyle -> stil PlotStyle -> {{stil 1 }, {stil },... }} Opis Stil koji se primenjuje na sve krive na grafiku 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 1.4). Tabela 1.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[{r 1, r,...}] Dužine segmenta za crtanje neprekidnih linija zadate u odnosu na širinu grafika AbsoluteDashing[{d 1, d,...}] Dužine segmenata u apsolutnim jedinicama Opacity Neprovidnost 138
Primer 1.4. Nacrtati grafik funkcija sin(x), cos(x), tan(x) za x [0, ]. XII vežba Grafika In[5]:= Plot[{Sin[x], Cos[x], Tan[x]},{x, 0, Pi}, PlotStyle -> {Red, Dashed, Thick}, PlotLegends -> "Expressions"] Out[5]= Opcije koje utiču na boje celog grafika prikazane su u tabeli 1.5. Tabela 1.5. Opcije za boju celog grafika Opcije za boju celog grafika Background -> boja DefaultColor -> boja ColorOutput -> GrayLevel Opis Boja za pozadinu grafika Boja kojom se iscrtava grafik Generisanje crno-bele slike na monitoru u boji 1.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 1.6). Tabela 1.6. Iscrtavanje grafičkih primitiva Funkcija u paketu Mathematica Opis Point[{x, y}] Tačka na poziciji (x, y) Line[{x 1, y 1 }, {x, y },...] Linija kroz tačke {x 1, y 1 }, {x, y },... Rectangle[{x min, y min }, {x max, y max }] Crtanje pravougaonika Polygon[{x 1, y 1 }, {x, y },...] 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 139
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 1.5. Nacrtati krug sa centrom u (3, 4) i poluprečnikom r = i elipsu sa centrom u tački (0, 1) i poluosama a = i b = 3. In[6]:= Show[Graphics[Circle[{3, 4}, 5]]] In[7]:= Show[Graphics[Circle[{0, 1},{, 3}]]] Out[6]= Out[7]= 1.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 1.6. Nacrtati cikloidu i spiralu x t sint y 1 cost ( t ), x u cosu y usinu (0 u 4 ). In[8]:= ParametricPlot[{t + Sin[t], 1+Cos[t]}, {t, -Pi, Pi}, AspectRatio-> Automatic] 140
XII vežba Grafika In[9]:= ParametricPlot[{u*Cos[u], u*sin[u]}, {u, 0, 4Pi}, AspectRatio-> Automatic] 5 5 5 10 5 10 Out[9]= - Graphics - 1.6. Crtanje oblasti u ravni Naredba za crtanje oblasti u ravni koja je određena datim uslovima RegionPlot[uslovi, {x, x min, x max }, {y, y min, y max }]. Primer 1.7. Nacrtati oblast unutar centralnog kruga poluprečnika r = ispod prave 1 x,, y,. x y. Uzeti oblast crtanja In[10]:= RegionPlot[x^ + y^ < 4 && x + y < 1,{x, -, },{y, -, }] Out[10]= 141
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 1.8. Nacrtati oblast unutar centralnog kruga poluprečnika r = i izvan elipse 4 6 4 x,, y,. x y za In[11]:= RegionPlot[4 x^ + 6 y^ > 4 && x^ + y^ < 4,{x, -, },{y, -, }] Out[11]= 1.7. Trodimenzionalna grafika Umesto jedne promenljive u dvodimenzionalnom slučaju, ovde postoje dve promenljive: Plot3D[f, {x, xmin, xmax}, {y, ymin, ymax}]. U tabeli 1.7 navedeni su parametri koji se mogu podešavati u trodimenzionalnom grafiku. Tabela 1.7 Opcije pri crtanju trodimenzionalnog grafika Opcija Podrazumevana Opis vrednost 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 14
Primer 1.9. Prikazati sliku paraboloida datog funkcijom funkcijom g x 3y za x[ 5,5], y [ 5,5]. XII vežba Grafika f x y i površi zadate In[1]:= Plot3D[{x ^ + y ^, x + 3 y}, {x, -5, 5}, {y, -5, 5}, PlotStyle -> Directive[Blue, Opacity[0.6]], PlotPoints -> 5] Out[1]= U tabeli 1.8 navedene su trodimenzionalne grafičke primitive. Tabela 1.8. Trodimenzionalne grafičke primitive Funkcija u paketu Mathematica Opis Point[{x, y, z}] Tačka sa koordinatama (x, y, z) Line[{x 1, y 1, z 1 }, {x, y, z },...] Linija kroz tačke {x 1, y 1, z 1 }, {x, y, z },... Polygon[{x 1, y 1, z 1 }, {x, y, z },...] Crtanje poligona sa zadatom listom temena Cuboid[{x min, y min, z min }, Crtanje paralelopipeda {x max, y max, z max }] 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[{{x a, y a, z a },{x b, y b, z b }},r] Valjak sa centrima bazisa i radijusom osnove Cone[{{x a, y a, z a },{x b, y b, z b }}, r] Kupa sa centrom bazisa, vrhom i radijusom osnove Primer 1.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). In[13]:= sph = Graphics3D[{Red, Sphere[{0, 0, 0}, 1]}]; 143
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe cub = Graphics3D[{Blue, Cuboid[{0, 0, 0},{1.5, 1.5, 1.5}]}]; Show[sph, cub] Primer 1.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, ) i poluprečnika r = 1, kupu sa centrom osnove u tački A(,, 0), vrhom B(-1, -1, ) i poluprečnikom osnove r = 1. In[14]:= a = Graphics3D[{Blue, Cylinder[{{0, 0, 0},{1, 1, }}, 1]}] b = Graphics3D[{Red, Cone[{{,, 0},{-1, -1, }}, 1]}] Show[a, b] 144
XII vežba Grafika 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). 1.8. Crtanje oblasti u prostoru Za crtanje oblasti u prostoru koristi se naredba RegionPlot3D[uslovi,{x, x min, x max },{y, y min, y max },{z, z min, z max }]. Primer 1.1. Nacrtati oblast u prostoru zadatu nejednakostima x y z za 1,1, 1,1, 1,1 x y z. x y z 1 i In[15]:= RegionPlot3D[x ^ + y ^ + z ^ < 1 && x ^ + y ^ < z ^, {x, -1, 1},{y, -1, 1}, {z, -1, 1}, PlotRangeAll] Primer 1.13. Nacrtati oblast u prostoru zadatu nejednakostima x 1, y 1 i z 1za 1,1, 1,1, 1,1 x y z. In[16]:= RegionPlot3D[Abs[x] < 1 && Abs[y] < 1 && Abs[z] < 1 && x ^ + y ^ > z ^, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, PlotRangeAll] 145
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 1.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 1.14. Formirati tabelu podataka za funkciju f ( x) e za vrednosti argumenta x 1,,...,10 i ucrtati podatke, kao i približan grafik funkcije. In[17]:= t = Table[{n,Exp[-n/]}, {n, 1, 10}] g1 = ListPlot[t] g = ListPlot[t, Joined {True}, PlotRange All] Show[g1, g] x / 146
XII vežba Grafika Primer 1.15. Formirati tabelu podataka za funkciju f ( x, y) sin( x y ) za vrednosti argumenata xy, 0,0(0,1)3,0 i ucrtati podatke, kao i približan grafik funkcije. In[18]:= tab = Table[{x, y, Sin[x + y ^ ]},{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 ^ ],{x, 0, 3},{y, 0, 3}, AxesLabel {x, y, z}] 147
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Zadaci za vežbu I grupa Nacrtati grafik funkcije f( x) 9 x x 4 za x[ 3,3]. II grupa Nacrtati grafik funkcije y 4 x za x[,]. III grupa Nacrtati grafike funkcija y3x 8 i y x 5 za x[ 5,5]. IV grupa Nacrtati grafike funkcija V grupa y sin x i x y za x [0, ]. 10 Nacrtati krive zadate parametarskim jednačinama x t sin t, y t tan t, t. VI grupa Nacrtati grafik funkcije 3 y x x 3 za x[ 5,5]. VII grupa Nacrtati grafik funkcije x 4 y za x[ 5,5]. 1 x VIII grupa Nacrtati grafik funkcije y x x 5 3 3 10 7 za x[ 5,5]. 148
IX grupa XII vežba Grafika Nacrtati grafik funkcija X grupa f ( x) 3 x, g x 1 za x[ 10,10]. ( ) x 1 Nacrtati krive zadate parametarskim jednačinama x t sin t, y t sin 3 t, t. 149
Cilj vežbe Upoznavanje sa upravljačkim strukturama Implementacija upravljačkih struktura
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 If[test, direktiva] If[test, direktiva, alternativa] Opis Izvršava se direktiva ako test ima vrednost True Izvršava se direktiva ako test ima vrednost True, inače se izvršava alternativa Primer 13.1. Neka je definisana funkcija 1, x 0 f( x). 1, x 0 Naći f(10). In[1]:= f[x_] := If[x > 0, 1, -1]; Out[3]= 1 f[10] Za testiranje većeg broja uslova koriste se funkcije Which i Switch (tabela 13.). Tabela 13.. Funkcije za testiranje više uslova Funkcija u paketu Mathematica Which[test 1, vrednost 1, test, vrednost,...] Switch[izraz, form 1, vrednost 1, form, vrednost,...] Switch[izraz, form 1, vrednost 1, form, vrednost,..., def] Opis Evaluira se redom test 1,test,... Pri čemu je rezultat vrednost asocirana sa prvim test i koji je True Upoređuje se izraz sa svakim od izraza form 1,,..., a rezultat je vrednost izraza vrednost i, koji je asociran sa prvim izrazom form i koji se slaže sa izraz Koristi se def kao vrednost koja se vraća ako se nijedan od izraza form i ne slaže sa izrazom Svaki od izraza vrednost 1,vrednost,... predstavlja jedan izraz ili sekvencu izraza koji su razdvojeni znakom ;. 15
XIII vežba Upravljačke strukture Primer 13.. Neka je definisana funkcija sin x, x 0, x f ( x) 1, x 0, x e 1, x 0. x Naći f(-1) i f(1). In[]:= 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 x x a 1x 1x i 1 a 1x 1x. In[4]:= f[a_] := Switch[a, _Plus, Together, _Times,Apart]; a = (1 + x) / (1 - x) + x / (1 + x); f[a] f[a][a] b = / ((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) 153
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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, /3, 1., 7+i. In[6]:= switchfun[x_] := Switch[x, _Integer,FactorInteger[x], _Rational,N[x], _Real,Rationalize[x], _Complex,Re[x]]; switchfun[18] switchfun[/3] switchfun[1.] switchfun[7 + i] Out[6]= {{,1},{3,}} Out[7]= 0.666667 Out[8]= 6/5 Out[9]= 7 Primer 13.5. Neka je definisana funkcija 1, f ( x, y) x y, r( x, y) 0, f ( x, y) x* y, y 1, f ( x, y) x. Isprobati za a * b. In[10]:= r = Switch[a * b, x_ + y_, -1, x_ * y_, 0, x_ ^ y_, 1] Out[10]= 0 154
13.. Ciklusi XIII vežba Upravljačke strukture 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..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 Do[izraz, {i, imax}] Do[izraz,{i, imin, imax, di}] Do[izraz, {n}] Opis Evaluirati izraz za svako i, pri čemu i uzima vrednosti iz skupa {1,..., imax} Evaluirati izraz sa vrednostima i od imin do imax sa korakom di Evaluacija izraza izraz n puta Primer 13.6. Odrediti sumu prvih 100 prirodnih brojeva. In[11]:= sum = 0; Do[sum += i, {i, 100}]; sum Out[11]= 5050 13... 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 gde se telo izvršava sve dok je test =True. Opšti oblik For ciklusa je While[test, telo] For[start, test, inkr, telo] gde se izvršava start, zatim respektivno evaluira telo i inkr sve dok test ne postane False. 155
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 13.7. Odrediti vrednost sume 1 10 S.... 1 3 10 11 In[1]:= For[i = 1; sum = 0, i < 11, i++, sum += i / (i + i + 1)]; sum Out[1]= 64157087/14549535 5 3 Primer 13.8. Napisati program za rešavanje jednačine x - x +10 0 Njutnovim iterativnim postupkom. Početno rešenje x 0 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 f xk ) iterativna zakonitost x k 1 x k '(, k 0,1, f ( x ), uslov kraja x k 1 x k. In[13]:= f[x_] := x ^ 5 - x ^ 3 + 10 eps =.00001; xi = 50; While[Abs[f[xi]] > eps, xi = N[xi - f[xi] / f'[xi]]] xi Out[13]= -1.8753 k 156
Zadaci za vežbu XIII vežba Upravljačke strukture I grupa Neka je definisana funkcija y, y 1, f ( y) y 1, 1 y, y1, y, gde je y x x 1. Za x = 10 izračunati vrednost funkcije f. II grupa Iterativno rešiti sistem jednačina x xy 5x 1 0 x y 1,6 0, 4 sa tačnošću 10, koristeći formule xn yn 5 1 xn 1, yn 1 xn 1,6. Iterativni proces završiti kada budu istovremeno ispunjeni uslovi x x y y i. n1 n n1 n Na izlazu štampati vrednosti rešenja sistema. Na ulazu su date početne vrednosti x0 i y 0. III grupa x Napisati program za rešavanje jednačine f e 10x 0 metodom sečice. Početna rešenja x 0 i x 1 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: x0, x 1, 157
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe iterativna zakonitost uslov kraja x k 1 x k. x x x x f x, k 1,, k k1 k1 k k f xk f xk1, IV grupa Za x = 1(0,5)5 izračunati vrednost funkcije f(x) zadate u obliku 4 1 x f( x). 3 5 6x V grupa Izračunati i štampati vrednosti prvih 10 Lagerovih polinoma korišćenjem rekurentnih formula: L 0 1 x 1, 1, L x x L x n 1 x L x n L x, za učitanu vrednost promenjive x. VI grupa n1 n n1 Napisati metodu kojom se izračunava vrednost x a, po formuli 1 a x0 a 1, xn xn1 ( n 1,, ). xn 1 Proces prekinuti kada je x x 1. U glavnom programu uneti vrednost za a i ε i naći n vrednost korena. VII grupa Neka je definisana funkcija sin(1/ t), t 0 f() t tt, 0 Za t = 10 izračunati vrednost funkcije f. n 158
VIII grupa XIII vežba Upravljačke strukture Neka je definisana funkcija x, 0 x1, f ( x) 1, 1 x, 3 x, x 3. Za x = 10 izračunati vrednost funkcije f. IX grupa Neka je definisana funkcija Za x = 3,5 izračunati vrednost funkcije f. X grupa Tabelirati funkciju x x 1, 0 1 x,0 x 3 f( x) 15 xx, 5 x 15x 5,3 x 5 x x y( a, b, x) ln sin a e cos 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. 159
Cilj vežbe Upoznavanje sa pojmom potprograma Implementacija potprograma
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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.. 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[{x 1, x, }, telo potprograma]. In[1]:= Function[x, x ^ ][z] Out[1]= z^ In[]:= Function[{x, y},sqrt[x + y ]][3, 4] Out[]= 5 14.. 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 ili Module[{promenljiva 1, promenljiva,...}, program] Module[{promenljiva = vrednost,...}, program] 16
Izlazak iz funkcije sa vraćanjem vrednosti se zadaje naredbom XIV vežba Potprogrami 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 = x 0, y = y 0,...}, procedura] Postavljanje početnih vrednosti za x, y,... Primer 14.1. Napisati modul za nalaženje faktorijela broja. 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.. 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,-) i (3,). In[]:= g[{m_, n_}] := Module[ {k}, k = m + n; If[k <= 0, Return["Zbir brojeva nije pozitivan"]]; Table[1, {i, 1, k}]]; g[{-1, -}] g[{3, }] Out[]= Zbir brojeva nije pozitivan {1,1,1,1,1} 163
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 5x 4cos( x) 1 0 za početnu vrednost x = -1. 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[ 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 F F 1, F F F ( n,3,...). 0 1 n n1 n1 In[]:= F[0] = F[1] = 1; F[n_] := F[n] = F[n - 1] + F[n - ]; Table[F[i], {i, 0, 9}] Out[]= {1,1,,3,5,8,13,1,34,55} 164
Zadaci za vežbu XIV vežba Potprogrami I grupa Napisati potprogram kojim se izračunava i štampa vrednost primenom iterativnog postupka x n a (pri čemu je a > 0), an1 x0, n a ( n-1) xi n1 xi xi 1, i 0,1,,... n Izračunavanje prekinuti kada je xi 1 xi, gde je zadata tačnost. II grupa Napisati potprogram za izračunavanje funkcije f(x) zadate u obliku 1 x f( x). 3 1 5x U glavnom programu za x = 1(0,5)5 štampati vrednosti x i f(x). III grupa Napisati potprogram za tabeliranje funkcije: x 3a y x z x x 3a y, pri čemu je: x 1(1)4, a 0,1(0,001)0,15, y 0,5(0,05)0,8. 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 d ( x y ) ( x y ). 1 1 165
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 S q q q q q q qs n 1 1... n n 1 (1... ) 1 n1. VI grupa Napisati potprogram za izračunavanje binomnog koeficijenta. Napomena: Binomni koeficijent se izračunava na osnovu sledeće formule: n n( n 1)... ( n k 1) n!. k k! k!( n k)! VII grupa Napisati potprogram kojim se za dato x i n izračunava e x po formuli VIII grupa Napisati potprogram za izračunavanje vrednosti S x k0 sin x cos x k 1 e x n k x. k! k 1 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 17 1/4 primenom iterativne formule 1 17 x x ( x ), i 0,1, i 1 i 3 i 4 xi ako je x0. Tačnost proračuna je 0,00005. 166
X grupa XIV vežba Potprogrami Napisati potprogram kojim se određuje najmanji pozitivni koren transcedentne jednačine sin x A x za zadatu vrednost parametra A. Za izračunavanje korena primeniti iterativni postupak A x i1, i 0,1,,... sin x i gde je x0. Iterativni postupak prekinuti kada bude ispunjen uslov x x, i1 i gde je zadata tačnost. 167
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 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[134135634] kao rezultat daje {1,, 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. In[1]:= BaseForm[37, ] Out[1]//BaseForm= (100101) Obrnuto, broj iz osnove b se vraća u dekadni oblik naredbom b^^y Primer 15.. Zapisati broj 100101 iz brojnog sistema sa osnovom u dekadni sistem. In[]:= ^^100101 Out[]= 37 Cifre u osnovama većim od 10, se označavaju po alfabetu {0, 1,, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e,...} Primer 15.3. Zapisati broj 134135634 iz dekadnog brojnog sistema u heksadekadni sistem. In[3]:=BaseForm[134135634,16] Out[3]= 498f6a5 16 170
Cifre celog broja n u osnovi b možemo zapisati kao niz IntegerDigits[n, b] Primer 15.4. Zapisati cifre celog broja 134135634 u osnovi 16. In[4]:=IntegerDigits[134135634,16] Out[4]= {4, 9, 8, 15, 6, 10, 5, } XV vežba Mathematica za više kurseve matematike 15.. 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[f 1, f,..., f n, x] izračunava se kompozicija oblika ( f f f )( x) f ( f ( ( f ( x )))). 1 n n Primer 15.5. Pokazati da su funkcije 1x f( x) 4 x i 4x 1 gx ( ) x inverzne fukcije. In[5]:= f[x_] = ( 1 x) / ( 4 + x) ; g[x_] = (4 x 1) / (x + ); f[g[x]] ( 1 4 x) 1 Out[5]= x 1 4x 4 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}] 171
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 0 10 10 5 5 10 10 Out[8]= 0 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 f ( x, y) dxdy f ( x, y) dxdy f ( x, y) dxdy. d b P a c c a 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 P 1, 1,0. xy f ( x, y) ye nad pravougaonikom Za rešavanje zadatog dvostrukog integrala naredbu P 0 xy xy ye dxdy ye dxdy koristimo 1 1 In[9]:= Integrate[y Exp[ x y], {y, 1, }, {x, -1, 0}] 17
1 1 1 Out[9]= 4 4 e e In[10]:= NIntegrate[y Exp[ x y], {y, 1, }, {x, -1, 0}] Out[10]= 0.470745 XV vežba Mathematica za više kurseve matematike 15.3.. Dvostruki integral nad proizvoljnom oblasti u Razlikujemo sledeća dva osnovna slučaja: 1) Neka je oblast integraljenja data sa A x, y a x b, h ( x) y h ( x ), 1 gde su h 1 i h realne funkcije definisane nad intervalom ab, za koje važi c h ( x) h ( x) d. Tada je dvostruki integral nad A 1 A b h ( x) f ( x, y) dxdy f ( x, y) dydx. a h ( x) 1 ) Neka je oblast integraljenja data sa A x, y c x d, h ( y) x h ( y ), 1 gde su h 1 i h realne funkcije definisane nad intervalom cd, za koje važi a h ( y) h ( y) b. Tada je dvostruki integral nad A 1 A d h ( y) f ( x, y) dxdy f ( x, y) dxdy. c h ( y) 1 Primer 15.7. Izračunati dvostruki integral funkcije f ( x, y) x 3y nad oblasti ograničenoj parabolama y 3 x i y x. In[11]:= Solve[3x ^ == + x ^ ] Out[11]= In[1]:= Plot[{3x ^, + x ^ }, {x, 1, 1}] 173
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 3.0.5.0 1.5 1.0 0.5 Out[1]= 1.0 0.5 0.5 1.0 Date parabole se seku u tačkama (-1, 3) i (1, 3), pa je oblast integraljenja A x, y 1 x 1,3x y x i sledi A 1 x (x 3 y) dxdy ( 3 ). x y dy dx 1 3x In[13]:= NIntegrate[ x - 3 y, {x, -1, 1}, {y, 3x ^, + x ^ }] Out[13]= -11. 15.3.3. Polarni koordinatni sistem Veza između pravouglog i polarnog koordinatnog sistema je data sa x rcos i y r sin, gde je r x y, 0,. Neka je funkcija f neprekidna nad oblasti A iz koja je u polarnim koordinatama data sa * A r h1 r h tada za dvostruki integral funkcije f nad A važi,, ( ) ( ), A h ( ) f ( x, y) dxdy f ( r cos, r sin ) rdrd. h ( ) 1 174
XV vežba Mathematica za više kurseve matematike Primer 15.8. Izračunati dvostruki integral funkcije ograničenoj kružnicom x y y. f ( x, y) x y nad oblasti In[14]:= RegionPlot[{x ^ + y ^ == y}, {x, 1, 1}, {y, 0, }] Out[14]= Koordinatu r dobijamo uvođenjem smene x r cos i y r sin, tj. iz sledi ( sin ) 0 ( r cos ) ( r sin ) r sin rr i dobijamo r Oblast integraljenja je * A r r 0,sin, 0,., 0 sin,0 i sledi A sin x y dxdy ( r cos ) ( r sin ) rdrd. 0 0 In[15]:= NIntegrate[Sqrt[(r Cos[t]) ^ + (r Sin[t]) ^ ] r, {t, 0, Pi}, {r, 0, Sin[t]}] Out[15]= 3.55556 175
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 15.4. Trostruki integral Neka je f neprekidna funkcija definisana nad paralelopipedom P a bc du v Trostruki integral funkcije f nad paralelopipedom P je,,,. P b d v a 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 P 1,1,30,1. f ( x, y, z) xy z nad paralelopipedom Za rešavanje zadatog trostrukog integrala naredbu P 1 3 1 xy zdxdydz 1 0 xy zdxdydz koristimo In[16]:= NIntegrate[x y ^ z, {x, -1, 1}, {y,, 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 A x, y, z ( x, y) O, ( x, y) z ( x, y ), 1 gde je O xy oblast u xy-ravni, a ϕ 1 i ϕ su realne funkcije definisane nad O xy. Tada je trostruki integral nad A xy 176
XV vežba Mathematica za više kurseve matematike ( xy, ) f ( x, y, z) dxdydz f ( x, y, z) dz dxdy. Oxy 1 ( xy, ) A ) Neka je oblast integraljenja data sa A x, y, z ( x, z) O, ( x, z) y ( x, z ), xz 1 gde je O xz oblast u xz-ravni, a φ 1 i φ su realne funkcije definisane nad O xz. Tada je trostruki integral nad A ( xz, ) f ( x, y, z) dxdydz (,, ). f x y z dy dxdz A Oxz 1 ( xz, ) 3) Neka je oblast integraljenja data sa A x, y, z ( y, z) O, ( y, z) x ( y, z ), yz 1 gde je O yz oblast u yz-ravni, a ψ 1 i ψ su realne funkcije definisane nad O yz. Tada je trostruki integral nad A ( yz, ) f ( x, y, z) dxdydz f ( x, y, z) dx dydz. Oyz 1( yz, ) A Primer 15.10. Izračunati trostruki integral funkcije A 3 koja je ograničena cilindrom Oblast integraljenja je oblika x y 1, konusom A x y z x y O z x y,, (, ) xy,0 1, f ( x, y, z) x y 1 nad oblasti z 1 x y i xy-ravni. gde je O xy projekcija cele oblasti na xy-ravan i sledi 1 x y ( 1) ( 1) x y dxdydz. x y dz dxdy A Oxy 0 Uvođenjem polarnih koordinata x r cos i y r sin, pri čemu je r 0,1, 0,, dvostruki integral postaje 177
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe O xy 1 x y 1 1 x y dxdy ( r 1)(1 r) rdr d. 0 0 In[17]:= NIntegrate[(r ^ + 1) (1 + r) r, {t, 0, Pi}, {r, 0, 1}] Out[17]= 8.0634 15.4.. 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 V ( A) dxdydz. A Primer 15.11. Izračunati zapreminu regiona nad oblasti funkcijama z 4 x y i z x. A 3 koja je ograničena In[18]:= p1 = Plot3D[{4 - x^ - y^, - x}, {x, -, }, {y, -, }] p = ContourPlot[4 - x^ - y^ - ( - x) == 0, {x, -, }, {y, -, }] Show[GraphicsRow[{p1, p}]] Out[18]= 178
XV vežba Mathematica za više kurseve matematike 1 0 1 Out[19]= 1 0 1 In[0]:= RegionPlot3D[-x<=z<=4-x^-y^,{x,-,},{y,-,}, {z,-4,4}] Out[0]= Zapremina tela je 3 1 1 9 4 y 3 1 1 9 4 y V ( A) dxdydz 4 x y x dxdy A O xy V ( A) 4 x y x dxdy In[1]:= NIntegrate[(4 - x^-y^) - ( - x), {y, -3/, 3/}, {x, 1/ - 1/ Sqrt[9-4 y^], 1/ + 1/ Sqrt[9-4 y^]}] Out[1]= 7.9516 179
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 15.5. Krivolinijski integral 15.5.1. Krivolinijski integral I reda Krivolinijski integral funkcije f duž krive c je f ( x, y) ds. c Krivolinijski integral realne funkcije dve promenljive f duž krive c parametarski date kao ( ) ( ( ), ( )) t,, izračunavamo na sledeći način c t x t y t, kada c f ( x, y) ds f ( x( t), y( t)) x ( t) y ( t) dt, gde je ( ) ( ) ds x t y t dt element dužine luka krive, a integral sa desne strane Rimanov određeni integral. Primer 15.1. Izračunati krivolinijski integral funkcije f ( x, y) parametarski zapisane kao x() t t i c( t) ( t, t 1), pri čemu t 1, y( t) t 1za t 1,. Traženi krivolinijski integral je oblika 3x 4y 3 nad krivom c, tj. parametrizovana je sa c (, ) (, 1) 1 4. f x y ds f t t t dt 1 In[]:= f[x_, y_] = 3 x / Sqrt[4 y - 3] x[t_] = t y[t_] = t ^ + 1 fx = D[x[t], t] fy = D[y[t], t] s1 = Simplify[Sqrt[fx ^ + fy ^ ]] NIntegrate[f[t, t ^ + 1] s1,{t, -1, }] Out[]= 4.5 180
15.5.. Dužina luka krive XV vežba Mathematica za više kurseve matematike Dužina luka krive f(x) od tačke na grafiku sa apscisom a do tačke na grafiku sa apscisom b, iznosi b a l 1 f ( x) dx. Primer 15.13. Izračunati dužinu luka krive L date sa f x x x In[3]:= f[x_] = Log[1 - x ^ ] fx = D[f[x], x] s1 = Simplify[Sqrt[1 + fx ^ ]] NIntegrate[s1, {x, 0, 1/}] Out[3]= 0.59861 ( ) log 1, 0,1/. 15.6. Površinski integral 15.6.1. Površinski integral I reda Površinski integral funkcije f duž nad površi S je Razlikujemo sledeća dva osnovna slučaja: f ( x, y) ds. S 1) Neka je površ S data u eksplicitnom obliku kao z g( x, y), pri čemu funkcija g ima neprekidne parcijalne izvode. Neka je S xy projekcija površi S na xy-ravan. Tada S g g f ( x, y, z) ds f ( x, y, g( x, y)) 1 dxdy. S xy x y ) 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. Tada gde je S f x y z ds f x t u y t u z t u ab c dtdu (,, ) ( (, ), (, ), (, )), D x y z x y z a, b i t t t u u u 181
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe x x y y z z c. t u t u t u Primer 15.14. Izračunati površinski integral funkcije regionom definisanim sa x y 1. f ( x, y) 4 x y nad Primetimo da S možemo predstaviti kao uniju dve eksplicitno zadate površi S 1 i S, gde je S 1 dato sa x 1 y, a S sa x 1 y. Domen funkcije f(x, y) je a region x, y 4 y x 4 y, y r, 0 r,0, R x, y 1 y x 1 y, 1 y 1 r, 0 r 1,0. In[4]:= f[x_, y_] = Sqrt[4 - x ^ - y ^ ] p1 = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,}, {t,0,pi}] p = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,1}, {t,0,pi}] Show[p1, p] Out[4]= In[5]:= fx = D[f[x, y], x] fy = D[f[x, y], y] s1 = Simplify[Sqrt[1 + fx ^ + fy ^ ]] 1 Out[5]= 4 x y 18
Površina oblasti se izračunava kao XV vežba Mathematica za više kurseve matematike S 1 1 y f f 1 dxdy. dxdy x y 4 x y 1 1 y Uvođenjem polarnih koordinata x r cos i y r sin, pri čemu je r 0,1, 0,, dvostruki integral postaje 1 0 0 4 r rdrd. In[6]:= s = Simplify[s1/.{x -> r Cos[t],y -> r Sin[t]}] NIntegrate[r s,{t, 0, Pi}, {r, 0, 1}] Out[6]= 3.36715 15.6.. Površina i zapremina rotacionog tela Površina i zapremina tela nastalog rotacijom dela luka krive f(x) oko koordinatnih osa izračunavaju se: b V f x dx x a b ( ), P f ( x) 1 f ( x) dx. x a b d ( ) ( ), V xf x dx x y dy y a d P x( y) 1 x( y) dy. y c c Primer 15.15. Odrediti površinu figure ograničene lukom krive 1 f ( x), x,4 x x i x-osom, a zatim izračunati zapreminu tela nastalog rotacijom tog luka oko x-ose. 183
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe S V x 4 4 x x x dx dx x In[7]:= NIntegrate[1 / (Sqrt[x x + x - ]), {x,, 4}] Out[7]= 0.664135 In[8]:= Pi NIntegrate[1 / (x x + x - ), {x,, 4}] Out[8]= 0.7586 15.7. Redovi 15.7.1. Ispitivanje konvergencije redova Beskonačni red je red oblika n n k 1 n k1 k k 1 a, gde je a sekvenca. N-ta parcijalna suma je s a a a... a. Beskonačni red konvergira ka L ako sekvenca parcijalnih suma s n konvergira ka L i piše se Za dati beskonačni niz ak k 1 L. 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}] n Primer 15.16. Ispitati da li sledeći redovi konvergiraju ili divergiraju: a) b). k 1 k 1 ( 1) k, k1 In[9]:= sn = Sum[(-1) ^ (k + 1), {k, 1, n}] 1 Out[9]= 1 ( 1) 1n In[30]:= sn = Sum[(-1) ^ (k + 1), {k, 1, Infinity}] 184
XV vežba Mathematica za više kurseve matematike Out[30]= k 1 ( 1) k 1 1 1 b) Dati red se može predstavit kao. kk 1 kk 1 k 1 In[31]:= sn = Sum[1/(k - 1) - 1/(k + 1), {k,, n}] n 3n Out[31]= n(1 n) In[3]:= Apart[sn] Out[3]= 3 1 1 n 1 n In[33]:= Limit[sn, n -> Infinity] Out[33]= 3 15.7.. Stepeni red k Neka je x 0 broj. Stepeni red za x - x 0 je red oblika ak ( x x 0). k0 Primer 15.17. Ispitati da li sledeći stepeni red konvergira In[34]:= a[x_, k_] = (-1) ^ k / ( k + 1)! x ^ ( k + 1) s1 = FullSimplify[a[x, k + 1] / a[x, k]] x Out[34]= 6 10k 4k In[35]:= Limit[s1, k -> Infinity] Out[35]= 0 k 0 k ( 1) x (k 1)!. k 1 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 zove se Tejlorov red. f ( a) ( x a) ( ) k k k0 k! 185
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 f ( x) e x oko tačke a = 0. In[36]:= Series[ Exp[x], {x, 0, } ]//N Out[36]= 1 + x + 1/ x 15.7.4. Furijeov red Neka je funkcija y = f(x) definisana na -p < x < p. Tada Furijeov red za f(x) je 1 nx nx a0 ancos bnsin n1 p p gde je a 0 1 p p p p p f ( x) dx 1 n x an f ( x)cos dx, n 1,,... p p p p 1 n x bn f ( x)sin dx, n 1,,... p p x, 1 x 0 Primer 15.19. Neka je funkcija f(x) definisana sa f ( x) 1,0 x 1. f ( x ), x 1 prvih pet koeficijenata i prve tri parcijalne sume Furijeovog reda funkcije f(x). Izračunati In[37] := f[x_] := 1/; 0 <= x < 1 f[x_] := -x/; -1 <= x < 0 f[x_] := f[x - ]/; x >= 1 Plot[f[x], {x, -1, 5}] 186
XV vežba Mathematica za više kurseve matematike 1.0 0.8 0.6 0.4 0. Out[37]= 1 1 3 4 5 In[38] := L = 1; a[0] = NIntegrate[f[x], {x, -L, L}] / 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.064 0.31831 -.77556x10^-17 0.159155-0.05158 0.106103-1.59595x10^-16 0.0795775-0.00810569 0.06366 In[40] := fs[k_, x_] := coeffs[[k, 1]] Cos[k Pi x] + coeffs[[k, ]] Sin[k Pi x] fourier[n_, x_] := a[0] + Sum[fs[k, x], {k, 1, n}] fourier[, x] Out[40]= 0.75-0.064 Cos[Pi x]-.77556x10^-17 Cos[ Pi x]+0.31831 Sin[Pi x]+0.159155 Sin[ Pi x] In[41] := fourier[3, x] Out[41]= 0.75-0.064 Cos[Pi x]-.77556x10^-17 Cos[ \[Pi] x]-0.05158 Cos[3 Pi x]+0.31831 Sin[Pi x]+0.159155 Sin[ Pi x]+0.106103 Sin[3 Pi x] Primer 15.0. Neka je funkcija f(x) definisana sa koeficijenata Furijeovog reda funkcije f(x). f x ( ). x Izračunati prvih pet In[4] := f[x_] := x ^ Plot[f[x], {x, -Pi, Pi}] 187
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 10 8 6 4 Out[4]= 3 1 1 3 In[43] := a[0] = Integrate[f[x], {x, 0, Pi}] / Pi Out[43]= 3 In[44] := a[k_] := 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.5 0-0.16 0 Primer 15.1. Funkciju ( ) ( ) In[45] := f[x_] := x( Pi - x); a = 0; b = Pi; g[x_] := Which[ 0 < x < Pi, f[x], - Pi< x < 0, f[x + Pi], Pi < x < 4 Pi, f[x - Pi]]; ggraf = Plot[g[x], {x, - Pi,4 Pi}] 10 f x x x definisanu za 0, razviti u Furijeov red. 8 6 4 Out[45]= 5 5 10 188
XV vežba Mathematica za više kurseve matematike In[46] := fs = FourierSeries[g[x], x, 6]; Print["FourierSeries[g[x], x, 6] = ", fs]; Out[46]= ix ix 1 ix 1 ix FourierSeries g x, x,6 e e e e 3ix 3ix 1 4ix 1 4ix 5ix 5ix 1 6ix e e e e e e e 9 9 8 8 5 5 18 1 6ix e 18 3 In[47] := fsgraf = Plot[{fs}, {x, - Pi, 4 Pi}, PlotStyle -> {Dashed, Thick, Red}]; Show[ggraf, fsgraf] 10 8 6 4 Out[47]= 5 5 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]= π 4 FourierSeries g x, x,6 4Cos[ x] Cos[ x] Cos[3 x] 3 9 1 4 1 Cos[4 x] Cos[5 x] Cos[6 x] 4 5 9 coef = n Primer 15.. Funkciju In[49] := a = 1; 1, x 0 f ( x) signx 0, x 0 1, x 0 razviti u Furijeov red. 189
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe gg[x_] := Sign[x]; g[x_] := Which[ 0< x < a, gg[x], a < x < a, -gg[x], a < x < 3 a, gg[x], -a < x < 0, gg[x], - a < x < -a, -gg[x], -3 a < x < - a, gg[x]]; Plot[g[x], {x, -3 a, 3 a}] 1.0 0.5 3 1 1 3 0.5 Out[49]= In[50] := fs = FourierSeries[gg[x], x, 6]; Print["FourierSeries[g[x], x, 6] = ", fs]; FourierSeries g x, x,6 Out[50]= 3ix 5ix 5ix ie ie ie 3 5 5 In[51] := Plot[{g[x], fs}, {x, -3 a, 3 a}] 1.0 ix ix 3ix ie ie ie 3 1.0 0.5 3 1 1 3 0.5 Out[51]= In[5] := compexpfs = ComplexExpand[FourierSeries[fs, x, 6]]; Print["FourierSeries[g[x], x, 6] = ", compexpfs]; coef = FourierCoefficient[g[x], x, n]; 1.0 190
XV vežba Mathematica za više kurseve matematike Print["coef = ",coef]; 4Sin[ x] 4Sin[3 x] 4Sin[ 5] x Out[5]= FourierSeries g x, x,6 3 5 3in in in 4in ie ( 1 e )(1 e e ) coef = n 15.8. Crtanje polja i tokova Za crtanje polja i tokova koristi se strelica koja se crta naredbom Arrow[{{x 1, y 1 },{x, y }}] Primer 15.3. 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). 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 () funkcija y f t funkcija definisana na intervalu -st F(s) L f(t) = e f(t)dt =. 0 0,. Laplasova transformacija je Funkcija f() t je inverzna Laplasova transformacija Fs () u značenju L f ( t) F( s ), a zapisana kao L -1 F( s) f ( t ). 191
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 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 ), 0, t 0 UnitStep[t] vraća ut () 1, t 0. Borelova teorema: Ako je L f ( t) F( s) i Lg( t) G( s), tada je L ( f * g)( t) F( s) G( s). Primer 15.4. Odrediti konvoluciju funkcija f ( t) sin t i g( t) cost. Primenom Borelove teoreme direktno dobijamo 1 s s L(sin t *cos t) L(sin t) L (cos t). s 1 s 1 ( s 1) In[54] := LaplaceTransform[Sin[t], t, s] LaplaceTransform[Cos[t], t, s] s Out[54]= (s 1) s Primer 15.5. Odrediti f() t ako je Fs ( ). s s5 Slika Fs () se može prikazati u obliku s11 s1 1 Fs ( ), ( s 1) ( s 1) ( s 1) odnosno 1 1 s 1 1 1 t 1 t f ( t) L F( s) L cos sin. L e t e t ( s1) ( s1) In[55] := i1=inverselaplacetransform[-(s + ) / (s ^ + s + 5), s, t] ComplexExpand[i1]//Simplify Out[55]= 1 e t Cos t Sin t 19
Primer 15.6. Rešiti diferencijalnu jednačinu pod uslovom y(0) 0, y (0) 1. XV vežba Mathematica za više kurseve matematike y ( t) 4 y( t) 3 y( t ) 1, Neka je L( y( t)) Y( s), tada je L( y( t)) sy( s) y(0) sy( s) i L ( y ( t)) s Y( s) sy(0) y(0) s Y( s) 1. Primenom Laplasove transformacije na levu i desnu stranu date diferencijalne jednačine, dobijamo odakle je s Y( s) 1 4 sy( s) 3 Y( s), s 1 s1 s1 1 1 Ys ( ). s( s 4s 3) s( s 1)( s 3) 3s s 1 3( s 1) Primenom inverzne Laplasove transformacije, nalazimo 1 y t Y s e e 3 3 1 3 ( ) L ( ( )) t t. 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^ LaplaceTransform[y[t],t,s]==1/s In[57] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]] 1 s Out[57]= LaplaceTransform y t,t,s s 3 4s s In[58] := InverseLaplaceTransform[YSoln[s], s, t] 3t 1 t e Out[58]= y t e 3 3 193
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Primer 15.7. Rešiti diferencijalnu jednačinu pod uslovom y(0) y(0) y (0) 1. y t y t t ( ) ( ) 3( ), Primenom Laplasove transformacije na levu i desnu stranu date diferencijalne jednačine, dobijamo odakle je 6 s s 3 ( s s) Y( s) s s 3, 3 5 4 4 s s 6s 6 s 6s 6 6 1 Ys ( ). 4 4 4 s ( s 1) s ( s 1) s s 1 Primenom inverzne Laplasove transformacije, nalazimo y t Y s e t 1 3 ( ) L ( ( )) t. In[59] := ODE = y'''[t] - y'[t] == 3 ( - t ^ ) IC = {y[0] -> 1, y'[0] -> 1, y''[0] -> 1} ltode = LaplaceTransform[ODE, t, s] /.IC Out[59]= -s-s^-s LaplaceTransform[y[t],t,s] +s^3 LaplaceTransform[y[t],t,s]==3(-(/s^3)+/s) In[60] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]] 4 6 6s s Out[60]= LaplaceTransform y t, t,s 4 ( 1 s)s In[61] := InverseLaplaceTransform[YSoln[s], s, t] Out[61]= t 3 y t e t 194
15.10. Parcijalne diferencijalne jednačine Parcijalna diferencijalna jednačina je jednačina oblika XV vežba Mathematica za više kurseve matematike m u u u u F x1, x,..., xn, u,,...,,,..., 0 m x 1 x n x 1 x n gde je F data funkcija od n nezavisno promenljivih x 1, x,..., x n (n > 1), zatim od nepoznate funkcije u = u(x 1, x,..., x n ) i konačnog broja parcijalnih izvoda funkcije u. Za rešavanje parcijalne diferencijalne jednačine za ux, 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.8. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne diferencijalne jednačine u u ( ) 0. x y x y x y u In[6] := eqn = x ^ D[u[x, y], x] + y ^ D[u[x, y], y] - (x + y) u[x, y]; sol = DSolve[eqn == 0, u, {x, y}] x y Out[6]= u Function x, y, xyc 1 xy In[63] := fn = u[x, y] /.sol[[1]] /.{C[1][t_] -> Sin[t ^ ] + (t / 10)} x y x y Out[63]= xy Sin 10xy xy In[64] := Plot3D[fn,{x,-5,5},{y,-5,5}] 195
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Out[64]= Primer 15.9. Ako je u(x, y, z) nepoznata funkcija, naći opšte rešenje parcijalne diferencijalne jednačine u u u x ( x y) z 0. x y z 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}] 1 z Out[65]= u Function { x, y, z}, C[1][ x( x y), ] x Primer 15.30. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne diferencijalne jednačine u u 3 4 u 0. x y 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}] /3 1 Out[66]= u Function x,y, e x C [1][ ( 4 3 )] 3 x y In[67] := fn = u[x, y] /. sol[[1]] /. {C[1][t_] -> Sin[t]} x/3 1 Out[67]= e Sin[ ( 4x 3 y)] 3 In[68] := Plot3D[fn,{x,-5,5},{y,-5,5}] 196
XV vežba Mathematica za više kurseve matematike Out[68]= 15.10.1.. 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 u x ( x y) u. x y In[69] := DSolve[-x D[u[x, y], x] + (x + y) D[u[x, y], y] == u[x, y], u, {x, y}] 1 [1][ ( )] Out[69]= u Function x, y C, x x y x Primer 15.3. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne diferencijalne jednačine u x u y x u In[70] := DSolve[D[u[x, y], x] + x D[u[x, y], y] == u[x, y] ^ + 3, u, {x, y}] 3. 197
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe 1 u Function x, y, 3Tan[ 3x 3 C[1][ ( x y)]] Out[70]= 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 u u 1. x y In[71] := DSolve[D[u[x, y], x] D[u[x, y], y] == 1, u, {x, y}] x Out[71]= u Function x, y, C [1] yc[ ] C[] Primer 15.34. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne diferencijalne jednačine u u 4u 4. x y In[7] := DSolve[4 u[x, y] + D[u[x, y], x] ^ + D[u[x, y], y] ^ == 4, u, {x, y}] {{ u Function[ x,y, Out[7]= 1 y xyc[1] C[1] x C[1] yc[] xc[1][] C C[] ]}} 1 C[ 1] 198
Zadaci za vežbu XV vežba Mathematica za više kurseve matematike I grupa Odrediti kompozicije f g i g f za a) b) f x x g x x ( ) 1, ( ) 1, f x x x g x x ( ) 9, ( ) 9. II grupa Izračunati dvostruki integral funkcije A x y y y x y III grupa, 1 1, 1 3. f ( x, y) x 3y na oblasti datoj sa Izračunati trostruki integral funkcije f ( x, y, z) zy na oblasti datoj sa A x, y, z 0 z,0 y z,0 x z. IV grupa Odrediti zapreminu ograničenu površima z x y i z 5. V grupa Izračunati površinski integral funkcije x y z 9. VI grupa Ispitati konvergenciju reda f ( x, y) x y nad centralnom sferom n 1 1 n0 n n. 199
Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe VII grupa Ispitati konvergenciju i naći sumu reda VIII grupa Razviti u Furijeov red funkciju IX grupa 1 3 13 4 n n n 0 x, x 0 3 f( x). x,0 x 3 Razviti u Furijeov red funkciju f x x x X grupa ( ),,. 1,0 t 1 Neka je y f () t definisana sa f() t 1,1 t diferencijalne jednačine y 4y 0 y f ( t ).. i f ( t) f ( t ), t. Naći rešenja 00
Literatura 1. Abell, M.L., Braselton, J.P., Mathematica by example, fourth edition, Elsevier Inc., 009.. Arnold, K., Gosling, J., Holmes, D., The Java Programming Language, fourth edition, Addison Wesley Professional, 005. 3. Došenović, T., Takači, A., Rakić, D., Zbirka zadataka iz Matematike I, Tehnološki fakultet, Novi Sad, 008. 4. Eckel, B., Thinking in Java, Second edition, Prentice Hall, New Jersey, 000. 5. Flanagan, D., Java Examples in a Nutshell, third edition, O'Reilly, 004. 6. Gocić, M., Algoritmsko rešavanje problema i objektno orijentisan pristup u Javi, Mikro knjiga, Beograd, 011. 7. Hartmann, D., Đorđević, Đ., Gocić, M., Osnovi inženjerske informatike I, Građevinsko-arhitektonski fakultet, Niš, 006. 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, 008. 11. Petković, M., Algoritmi numeričke analize, Univerzitet u Nišu, Prirodno-matematički fakultet, Niš, 013. 1. Stanimirović, P. S., Milovanović, G. V., Programski paket Mathematica i primene, Univerzitet u Nišu, Elektronski fakultet, 00. 13. Stefanović, L., Matejić, M., Marinković, S., Diferencijalne jednačine: za studente tehničkih fakulteta, Studentski kulturni centar, Niš, 006.
Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe 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, 003. 16. Wellin, P. R., Gaylord, R. J., Kamin, S. N., An Introduction to Programming with Mathematica, third edition, Cambridge University Press, 005. 17. Wolfram, S., The Mathematica Book, fifth edition, Wolfram media, 003. 0
Autori Milan Lj. Gocić, doktor tehničkih nauka, docent Građevinskoarhitektonskog 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 008. godine, 5 naučnih radova na SCI listi i oko 90 naučnih radova ukupno do sada.