uvod u programiranje i softverski paketi -...

203
Univerzitet u Nišu Građevinsko-arhitektonski fakultet Milan Gocić Predrag Rajković Uvod u programiranje i softverski paketi Praktikum za laboratorijske vežbe Niš, 2015.

Upload: phamngoc

Post on 06-Feb-2018

256 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Univerzitet u Nišu

Građevinsko-arhitektonski fakultet

Milan Gocić

Predrag Rajković

Uvod u programiranje i

softverski paketi

Praktikum za laboratorijske vežbe

Niš, 2015.

Page 2: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

dr Milan Gocić, dipl. inž. elektrotehnike

dr Predrag Rajković, dipl. matematičar

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

Izdavač: Građevinsko-arhitektonski fakultet, Univerzitet u Nišu

Aleksandra Medvedeva 14, Niš

Recenzenti: Dr Miomir Stanković, redovni profesor Fakulteta zaštite na radu

Univerziteta u Nišu

Dr Marko Petković, vanredni profesor Prirodno-matematičkog fakulteta

Univerziteta u Nišu

Za izdavača: Prof. dr Petar Mitković

Dizajn korica: Vladan Nikolić, dipl. inž. arh.

Odlukom Naučno-nastavnog veća Građevinsko-arhitektonskog fakulteta Univerziteta u

Nišu br. 8/247 od 28.01.2015. godine, rukopis je odobren za štampu kao pomoćni

udžbenik za predmet „Uvod u programiranje i softverski paketi“.

ISBN 978-86-88601-17-7

CIP - Каталогизација у публикацији

Народна библиотека Србије, Београд

004.42(075.8)(076)

004.42MATHEMATICA

ГОЦИЋ, Милан, 1977-

Uvod u programiranje i softverski paketi : praktikum za laboratorijske vežbe / Milan

Gocić, Predrag Rajković. - Niš : Građevinsko-arhitektonski fakultet, 2015 (Niš : Grafika

Galeb). - III, 200 str. : ilustr. ; 25 cm

Na vrhu nasl. str.: Univerzitet u Nišu. - Slike autora. - Tiraž 100. -

Autori: str. [203]. - Bibliografija: str. 201-202.

ISBN 978-86-88601-17-7

1. Рајковић, Предраг, 1959- [аутор]

a) Програмирање - Вежбе b) Апликативни програм "Mathematica"

COBISS.SR-ID 212923148

Tiraž: 100 primeraka

Štampa: Grafika Galeb, Niš

Page 3: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

PREDGOVOR

Praktikum je namenjen studentima iz oblasti tehničko-tehnoloških nauka, a

kao pomoćni udžbenik koristiće se iz predmeta Uvod u programiranje i softverski

paketi na Građevinsko-arhitektonskom fakultetu u Nišu. Praktikumom je

obuhvaćen veliki broj primera koji se odnose na programski jezik Java i softverski

paket Mathematica.

Praktikumom je obuhvaćeno petnaest laboratorijskih vežbi, primer jedne

urađene vežbe, opisi integrisanog razvojnog okruženja Eclipse i softverskog paketa

Mathematica.

Recenzentima, dr Miomiru Stankoviću i dr Marku Petkoviću, dugujemo

posebnu zahvalnost za korisne savete i sugestije.

U Nišu, decembra 2014. godine

Autori

Page 4: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 5: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

I

Sadržaj

Java

Integrisano razvojno okruženje Eclipse 9

Primer ispravno urađene laboratorijske vežbe 15

I vežba – Kodiranje izraza 19

1.1. Operator 20

1.2. Izraz i kodiranje izraza 21

II vežba – Linijska struktura 27

2.1. Algoritam 28

2.2. Linijska struktura 29

III vežba – Razgranata struktura 35

IV vežba – Ciklična struktura 45

4.1. Iterativni ciklus 46

4.2. Brojački ciklus 50

V vežba – Jednodimenzionalno polje 61

VI vežba – Dvodimenzionalno polje 69

VII vežba – Metoda 75

VIII vežba – Primena u građevinarstvu 85

Mathematica

IX vežba – Softverski paket Mathematica 91

9.1. Grafički korisnički interfejs paketa Mathematica 92

9.2. Tipovi podataka i aritmetičke operacije 93

9.3. Konstante 95

9.4. Promeljive 95

9.5. Relacioni i logički operatori 96

9.6. Matematičke funkcije 97

9.7. Korisnički definisane funkcije 98

X vežba – Linearna algebra 103

10.1. Vektori 104

10.2. Matrice 105

Page 6: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

II

10.3. Sistem jednačina u matričnom obliku 107

10.4. Sopstvene vrednosti i sopstveni vektori 108

XI vežba – Simbolička izračunavanja 111

11.1. Algebarske transformacije 112

11.2. Sume i proizvodi 113

11.3. Rešavanje jednačina 114

11.4. Granične vrednosti 116

11.5. Diferenciranje 117

11.6. Diferencijalne jednačine 118

11.6.1. Diferencijalne jednačine I reda 118

11.6.1.1. Diferencijalne jednačine sa

razdvojenim promenljivama 118

11.6.1.2. Homogena diferencijalna jednačina 119

11.6.1.3. Linearna diferencijalna jednačina 120

11.6.1.4. Bernoullieva diferencijalna jednačina 120

11.6.1.5. Riccatieva diferencijalna jednačina 121

11.6.2. Linearne diferencijalne jednačine II reda 121

11.6.2.1. Homogena linearna diferencijalna

jednačina II reda sa konstantnim koeficijentima 121

11.6.2.2. Nehomogena linearna diferencijalna

jednačina II reda sa konstantnim koeficijentima 122

11.6.2.3. Homogena linearna diferencijalna

jednačina II reda sa funkcionalnim koeficijentima 122

11.6.2.4. Eulerova diferencijalna jednačina 123

11.6.2.5. Legendreova diferencijalna jednačina 123

11.6.2.6. Nehomogena linearna diferencijalna

jednačina II reda sa funkcionalnim koeficijentima 123

11.6.3. Linearne diferencijalne jednačine višeg reda 124

11.6.3.1. Homogena linearna diferencijalna

jednačina višeg reda sa konstantnim koeficijentima 124

11.6.3.2. Nehomogena linearna diferencijalna

jednačina višeg reda sa konstantnim koeficijentima 124

11.6.3.3. Homogena linearna diferencijalna

jednačina višeg reda sa funkcionalnim koeficijentima 125

11.6.3.4. Nehomogena linearna diferencijalna

jednačina višeg reda sa funkcionalnim koeficijentima 125

11.7. Integracija 125

XII vežba – Grafika 135

12.1. Dvodimenzionalna grafika 136

12.2. Opcije pri radu sa dvodimenzionalnom grafikom 137

12.3. Stilovi i boje 138

12.4. Iscrtavanje grafičkih primitive 139

12.5. Parametarski zadate krive 140

12.6. Crtanje oblasti u ravni 141

12.7. Trodimenzionalna grafika 142

Page 7: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

III

12.8. Crtanje oblasti u prostoru 145

12.9. Prikazivanje skupova podataka i njihova analiza 146

XIII vežba – Upravljačke strukture 151

13.1. Uslovni izrazi 152

13.2. Ciklusi 155

13.2.1. Do ciklusi 155

13.2.2. While i For ciklus 155

XIV vežba – Potprogrami 161

14.1. Funkcijski potprogram 162

14.2. Opšti potprogram 162

14.3. Rekurzivna izračunavanja 164

XV vežba – Mathematica za više kurseve matematike 169

15.1. Brojni sistemi 170

15.2. Inverzne funkcije 171

15.3. Dvostruki integral 172

15.3.1. Dvostruki integral nad pravougaonikom 172

15.3.2. Dvostruki integral nad proizvoljnom oblasti u 2

173

15.3.3. Polarni koordinatni system 174

15.4. Trostruki integral 176

15.4.1. Trostruki integral nad proizvoljnom oblasti u 3 176

15.4.2. Određivanje zapremine trostrukim integralom 178

15.5. Krivolinijski integral 180

15.5.1. Krivolinijski integral I reda 180

15.5.2. Dužina luka krive 181

15.6. Površinski integral 181

15.6.1. Površinski integral I reda 181

15.6.2. Površina i zapremina rotacionog tela 183

15.7. Redovi 184

15.7.1. Ispitivanje konvergencije redova 184

15.7.2. Stepeni red 185

15.7.3. Razvoj funkcije u red 185

15.7.4. Furijeov red 186

15.8. Crtanje polja i tokova 191

15.9. Laplasova transformacija 191

15.10. Parcijalne diferencijalne jednačine 195

15.10.1. Parcijalne diferencijalne jednačine I reda 195

15.10.1.1. Linearna homogena parcijalna

diferencijalna jednačina 195

15.10.1.2. Kvazilinearna parcijalna

diferencijalna jednačina 197

15.10.1.3. Nelinearna parcijalna

diferencijalna jednačina 198

Literatura 201

Page 8: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 9: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj

Upoznavanje sa okruženjem za izradu laboratorijskih vežbi u Javi

Page 10: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

10

Eclipse

Za pisanje konzolnih aplikacija na programskom jeziku Java koristiće se Eclipse,

integrisano razvojno okruženje (Integrated Development Environment, IDE) otvorenog

kôda. Zamišljen je da se koristi kao razvojno okruženje Java programskog jezika i sastoji

se od java razvojnih alata (Java Development Tools, JDT). Može se proširiti instaliranjem

dodatnih aplikacija (engl. plugins).

Kreiranje konzolne aplikacije

Postoje tri načina za kreiranje Java projekta:

1. Selektovanje File -> New -> Project,

2. Selektovanje strelice sa dugmeta , a nakon toga Project,

3. Desnim tasterom miša pritisnite na Package Explorer u Java Perspective pogledu i

izaberite Project.

Izaberite Java Project i pritisnite Next.

Page 11: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u Javu

11

Imenujte projekat npr. Primer. Ako želite da kreirate src i bin direktorijume za java i class

fajlove izaberite Create separate source and output folders radio dugme iz Project

layout dela New Java Project dijaloga. Podrazumevani direktorijum izvornog koda je src/

a za izlazne rezultate bin/. Možete promeniti ove podrazumevane direktorijume izborom

Configure default.... Pritisnite Next dugme.

Sledeći prozor sadrži četiri jezička: Source, Projects, Libraries i Order and Export.

Jezičak Source postavlja izvorni i izlazni direktorijum Java fajlova i klasa. Jezičak Project

dozvoljava povezivanje novog Java projekta sa bilo kojim ranije kreiranim java projektom.

Jezičak Libraries omogućava umetanje jar fajlova i Java biblioteka. Jezičak Order and

Export određuje redosled povezivanja fajlova i kako se projekat može izvoziti za druge

aplikacije. Nakon unetih promena pritisnuti dugme Finish. Projekat se prikazuje u

Package Explorer pogledu.

Page 12: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

12

Kreiranje programa u Javi

Koraci za kreiranje izvorne datoteke (programa) su:

1. Da bi se kreirao Java fajl iz glavnog menija treba izabrati File -> New -> Class.

2. Uneti ime klase, na primer Prvi.

3. Izabrati public static void main(String[] args)

4. Pritisnite dugme Finish.

5. Uneti program, na primer:

public class Prvi {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("Java");

}

}

Page 13: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u Javu

13

6. Da bi se izvršio program iz glavnog menija izabrati Run -> Run As -> Java

Application

7. U prozoru Console videćete rezultate. Ukoliko nemate ovaj prozor izaberite iz glavnog

menija Windows -> Show View -> Console.

Page 14: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 15: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj

Upoznavanje sa načinom prikaza laboratorijske vežbe

Page 16: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

16

Univerzitet u Nišu

Građevinsko-arhitektonski fakultet

Uvod u programiranje i softverski paketi

Student: Pera Perić Broj indeksa: 12/FG

Grupa: I Datum izrade vežbe: 15.04.2014.

Overa: Datum overe vežbe:

Vežba broj 1

I grupa

Sastaviti algoritam i napisati program za izračunavanje zbira dva realna broja a i b

(c = a + b). Na izlazu štampati rezultat c.

Algoritam:

Page 17: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Primer ispravno urađene laboratorijske vežbe

17

Program:

package programiranje;

/*

* U zadatku se na osnovu uneta dva realna broja a i b

* nalazi njihov zbir c = a + b.

*/

import java.io.*;

public class Zadatak {

public static void main(String[] args) throws Exception{

// Deklarisanje promenljivih a, b, c

double a, b, c;

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Unos vrednosti promenljivih a i b

System.out.println("Unesite realan broj a:");

a = Double.parseDouble(ulaz.readLine());

System.out.println("Unesite realan broj b:");

b = Double.parseDouble(ulaz.readLine());

// Izračunavanje zbira dva realna broja a i b

c = a + b;

// Štampanje izlaznog rezultata

System.out.println("Vrednost dobijenog zbira je " + c);

}

}

Page 18: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

18

Izlazni rezultati:

Unesite realan broj a:

34.5

Unesite realan broj b:

1.2

Vrednost dobijenog zbira je 35.7

Page 19: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa operatorima u Javi

Upoznavanje sa elementarnim matematičkim funkcijama

Kodiranje izraza

Page 20: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

20

Teorijske osnove za izradu vežbe

1.1. Operator

Operator je simbol kojim se ukazuje kompajleru koju vrstu matematičke operacije treba

da izvede.

U tabeli 1.1 dat je pregled aritmetičkih operatora koji se koriste u programskom jeziku

Java.

Tabela 1.1. Aritmetički operatori

Operator Značenje Primer zapisa

+ Sabiranje x + y

– Oduzimanje x – y

* Množenje x * y

/ Deljenje x / y

% Moduo x % y

++ Inkrement x++ ili ++x

– – Dekrement x– – ili – –x

U tabeli 1.2 prikazani su relacioni operatori. Izlazni rezultat relacionih operatora je tipa

boolean.

Tabela 1.2. Relacioni operatori

Operator Značenje Primer zapisa

= = Jednako x = = y

!= Nejednako x != y

> Veće od x > y

< Manje od x < y

>= Veće od ili jednako x >= y

<= Manje od ili jednako x <= y

Logički operatori (tabela 1.3) se odnose na poređenje logičkih tipova podataka i kao

rezultat dobijaju se podaci tipa boolean.

Tabela 1.3. Logički operatori

Operator Značenje Primer zapisa

& Logičko I (AND) x & y

| Logičko ILI (OR) x | y

^ Isključivo ILI (XOR) x ^ y

! Logičko NE (NOT) !x

Operator dodele predstavlja se jednostrukim znakom jednakosti (=). Opšti oblik primene

operatora dodele izgleda

Page 21: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

I vežba – Kodiranje izraza

21

promenljiva = izraz;

pri čemu tip promenljive mora biti kompatibilan tipu izraza.

Primer 1.1. Napisati naredbe dodele kojima se realizuje sledeće:

a) Logičkoj promenljivoj p dodeliti vrednost true, ako se od odsečaka sa dužinama x, y, z

može konstruisati trougao.

b) Logičkoj promenljivoj p dodeliti vrednost true, ako se pravougaonik sa stranicama a i

b može ceo smestiti u pravougaonik sa stranicama c i d.

Rešenje:

a) p = (x + y > z) && (x + z > y) && (y + z > x)

b) p = ((a < c) && (b < d)) || ((a < d) && (b < c))

1.2. Izraz i kodiranje izraza

Zapis postupka kojim se definiše dobijanje (izračunavanje) jednog rezultujućeg podatka na

osnovu jednog ili više podataka zove se izraz. Prema vrsti podataka nad kojima se vrši

izračunavanje izraz može biti:

aritmetički,

znakovni,

logički i

relacijski.

Aritmetički izraz se piše na sličan način kao što je to uobičajeno u matematici i sastoji se

od argumenata i aritmetičkih operacija. Argument može biti konstanta i/ili promenljiva.

Znakovni izrazi dobijaju se povezivanjem znakovnih veličina.

Logički izraz je zapis postupka kojim se na osnovu jednog ili više argumenata izračunava

jedna logička vrednost (true ili false). Argument logičkog izraza može biti: logička

konstanta, logička promenljiva, element logičkog niza, relacijski izraz i logički izraz

zapisan između zagrada. Logički izraz može biti zapisan u najprostijem obliku kao jedan

argument, a složeniji zapisi se dobijaju primenom logičkih operacija.

Relacijski izraz je sastavljen od dva aritmetička izraza između kojih se piše relacijski znak.

Vrednost relacijskog izraza je logička konstanta. Relacijski izraz ima vrednost true ako su

aritmetički izrazi u zadatoj relaciji, u suprotnom vrednost relacijskog izraza je false.

U mnogim matematičkim i inženjerskim zadacima zahteva se izračunavanje elementarnih

funkcija za zadate vrednosti argumenta. U matematici je ovaj problem rešavan

pronalaženjem formula po kojima se mogu izračunavati tablice za elementarne

Page 22: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

22

matematičke funkcije. To se najčešće vršilo razvijanjem funkcije u stepene redove ili

primenom iteracionih formula. Razvojem računarstva pojavili su se algoritmi kojima se

može izračunati vrednost elementarne matematičke funkcije sa zadatom tačnošću.

Algoritmi za izračunavanje elementarnih matematičkih funkcija nalaze se u obliku funkcija

u okviru paketa java.lang i po pozivu programa u Javi uključuju se u program korisnika.

Tako su ove funkcije uvek na raspolaganju za korišćenje od strane programa korisnika, pa

se kaže da su to unutrašnje ili ugrađene funkcije. Poziv metode za izračunavanje

elementarne matematičke funkcije u Javi vrši se sa

Math.funkcija(a);

gde su:

Math – klasa paketa java.lang,

funkcija – ime elementarne matematičke funkcije,

a – aritmetički izraz, čija se vrednost uzima kao argument funkcije.

U klasi Math paketa java.lang deklarisane su dve konstante tipa double:

E = 2.718281828459045

PI = 3.141592653589793

i matematičke funkcije prikazane u tabeli 1.4.

Tabela 1.4. Matematičke funkcije

Povratni tip Ime funkcije Formalni argumenti Opis funkcije

double abs() double x apsolutna vrednost

double acos() double x arkus kosinus

double asin() double x arkus sinus

double atan() double x arkus tangens

double cos() double x kosinus

double cosh() double x hiperbolički kosinus

double exp() double x eksponencijalna vrednost

double log() double x prirodni logaritam

double log10() double x logaritam sa osnovom 10

double pow() double x, double y x na stepen y

double sin() double x sinus

double sinh() double x sinus hiperbolički

double sqrt() double x kvadratni koren

double tan() double x tangens

double tanh() double x tangens hiperbolički

double toRadians() double x prevodi stepene u radijane

double toDegrees() double x prevodi radijane u stepene

Page 23: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

I vežba – Kodiranje izraza

23

Pod kodiranjem izraza podrazumeva se proces prevođenja matematičkog izraza na jezik

koji prepoznaje računar. U Javi za prevođenje izraza koriste se operatori i matematičke

funkcije.

Pri kodiranju matematičkih izraza postoje tri specijalna slučaja:

1. Predstavljanje stepena argumenta funkcije: Na primer, ukoliko je argument

funkcije sinus trećeg stepena, imaće izraz sledeći oblik

3sin( ) .sin( . ( ,3))x Math Math pow x

2. Predstavljanje stepena funkcije: Na primer, ukoliko je funkcija sinus trećeg

stepena, imaće izraz sledeći oblik

3sin ( ) . ( .sin( ),3)x Math pow Math x

3. Predstavljanje korena funkcije koji nije kvadratni: Na primer, ukoliko je

potrebno predstaviti peti koren kvadrata promenljive x, imaće izraz sledeći oblik

2

5 2 5 . ( ,2.0 / 5.0)x x Math pow x

Primer 1.2. Kodirati sledeće izraze:

a) 2ln sin cos2

xx

a e b arctg

,

b) 2 cos

ln 0,2 ,xy

ytg x

e

c)

3

2 2

sin

ln (sin )

x x

x

.

Rešenje:

a) Math.log(Math.sqrt(Math.abs(Math.sin(a + Math.exp(x / 2)

+ Math.cos(b – Math.atan(x / 2)))))

b) Math.log(Math.sqrt(Math.pow(Math.tan(x), 2) + 0.2

+ Math.cos(y) / Math.exp(x * y)))

c) Math.sqrt(Math.sin(Math.sqrt(x)) + Math.pow(x, 3))

/ Math.pow(Math.log(Math.sin(x * x)), 2)

Page 24: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

24

Primer 1.3. Kodirati sledeće aritmetičke izraze:

a) 2 3sin xy x e ,

b) 2

ya

z xb

.

Rešenje:

a) y = Math.sin(x + Math.exp(2 * x + 3))

b) z = x * Math.pow(2 * a / b, y)

Zadaci za vežbu

I grupa

Kodirati sledeće aritmetičke naredbe:

sin( )2

x yz x y

x y,

2sin

3,8cos

x

x

e xy

x e.

II grupa

Kodirati sledeće aritmetičke naredbe:

3 2 22 5sin ( ) y x x ,

2

3

4

1

35

xy

x

x

x

.

Page 25: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

I vežba – Kodiranje izraza

25

III grupa

Kodirati sledeće aritmetičke naredbe:

23

2

x a y xz

x x a,

2

3

y

baz x a

b.

IV grupa

Kodirati sledeće aritmetičke naredbe:

a b

ya

cb

,

3 2

2 2(2 sin )cos

sin cos

ay a b a b

a b b.

V grupa

Kodirati sledeće aritmetičke naredbe:

1 2 3 42 4 8 16 ,x x x xy

4 2sin

cos .x x

y xx

VI grupa

Kodirati sledeće aritmetičke naredbe:

33

4 2

0,36 13,2 ,

2,3

x xy x

x x

24,2 1 .xy x x e

VII grupa

Kodirati sledeće logičke naredbe:

( ) ( ),z x y x y

Page 26: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

26

3

220 sin 2 1 3 0.

2

x xy x x x

x

VIII grupa

Kodirati sledeće aritmetičke naredbe:

2 23 sin cos ,xy x e x x

3 3cos sin .

2

x xe ey x x

IX grupa

Kodirati sledeću aritmetičku i logičku naredbu:

2

2

2

13

11 5

xy

x

x

x

,

( ) .z x y x y

X grupa

Kodirati sledeće aritmetičke naredbe:

2sin 3

3

ln(cos )

2 sin

xe xy

x x,

5 3

3 3

2

1

x

xy

x e.

Page 27: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa pojmom algoritam

Predstavljanje algoritma blok šemom

Upoznavanje sa linijskom programskom strukturom

Implementacija linijske programske strukture

Page 28: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

28

Teorijske osnove za izradu vežbe

2.1. Algoritam

Algoritam je potpuno i precizno definisana procedura koja uzima jednu ili više ulaznih

vrednosti i daje jednu ili više izlaznih vrednosti. Te vrednosti se zovu ulazni i izlazni

podaci algoritma. Algoritam je konačni niz logičnih koraka potrebnih da se reši neki

problem, dok je program algoritam zapisan na nekom programskom jeziku.

Za opis algoritma blok šemom koriste se grafički simboli koji su povezani orijentisanim

dužima (tabela 2.1). Tekst koji opisuje obradu se zapisuje unutar grafičkih simbola. Tok

izvršenja algoritma se opisuje linijama koje povezuju grafičke simbole.

Tabela 2.1. Grafički prikaz simbola za označavanje dijagrama toka programa

Grafički simbol Opis

Granično mesto (početak, kraj, prekid). Upotrebljava se za

predstavljanje početka i kraja postupka, procedure, procesa,

kao i prekida ili odlaganja procesa.

Konektor (veznik). Ulazna ili izlazna priključna tačka

između prekinutih linija toka programa.

Ulaz. Unos podataka preko ulazne jedinice (instrukcije

ulaza).

Izlaz. Izlaz podataka preko izlazne jedinice (instrukcije

izlaza).

Obrada (operacija, proces, radnja). Izvršenje operacije ili

grupe operacija (instrukcije obrade).

Odluka (uslovno grananje). Izbor pravca izvršenja

algoritma zavisi od uslova (instrukcije provere uslova).

Modifikacija programa. Izvršenje operacija kojima se

menjaju naredbe programa.

Poziv potprograma. Izvršavanje potprograma prethodno

zapisanog izvan glavnog programa (instrukcija poziva

potprograma).

Linija toka (vezna linija). Prikazivanje redosleda veza

između blokova.

Spajanje. Mesto spajanja dve linije.

Grananje. Jedna dolazna i više odlaznih grana.

Komentar (napomena). Objašnjenje, odnosno dodatni

komentar ili kratko tumačenje operacije.

Pod algoritamskom (programskom) strukturom podrazumevamo više koraka (naredbi

programskog jezika) koji čine jednu celinu. Postoje tri elementarne algoritamske strukture:

Page 29: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

II vežba – Linijska struktura

29

1. linijska,

2. razgranata i

3. ciklična.

2.2. Linijska struktura

Naredbe koje se pri izvršavanju programa uvek izvršavaju u navedenom

redosledu čine linijsku strukturu. Nakon izvršenja jedne naredbe

prelazi se na izvršenje naredbe koja neposredno sledi u programu (slika

2.1).

Linijski programi su programi u kojima se javljaju naredbe ulaza,

obrade i izlaza. Ovi programi imaju smisla u slučajevima kada za

različite vrednosti ulaznih veličina treba izvršiti složena izračunavanja.

Slika 2.1. Linijska struktura

Primer 2.1. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije

4

2

x y xf

x x y

na osnovu unetih vrednosti za x i y. Na izlazu štampati vrednost funkcije f.

Rešenje:

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

/*

U zadatku se na osnovu uneta dva realna broja x i y

izračunava vrednost funkcije f.

*/

Page 30: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

30

public class LinijskaStruktura1 {

public static void main(String[] args) throws Exception {

DecimalFormat df = new DecimalFormat("###,##0.00");

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Deklarisanje promenljivih x, y, f

double x, y, f;

// Unos vrednosti promenljivih x i y

System.out.print("Unesite vrednost za x: ");

x = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za y: ");

y = Double.parseDouble(ulaz.readLine());

// Izračunavanje vrednosti funkcije f

f = Math.pow((x + y) / (2 * x), 4) - x / (x - y);

// Štampanje izlaznog rezultata

System.out.println("Vrednost funkcije f je " + df.format(f));

}

}

Izlazni rezultati:

Unesite vrednost za x: 2.5

Unesite vrednost za y: 3.6

Vrednost funkcije f je 4.49

Primer 2.2. Tačka se kreće pravolinijski po zakonu 3 22 4 8 3, s t t t gde je put s

meren u metrima, a vreme t u sekundama. Sastaviti algoritam i napisati program za

izračunavanje kinematičkih veličina u trenutku t = 5 s.

Rešenje:

Kinematičke jednačine kretanja su:

3 22 4 8 3 s t t t 2( ) 6 8 8

v s t t t ( ) 12 8.

a v t t

U trenutku 5t s biće 2193 , 118 / , 52 / .s m v m s a m s

Page 31: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

II vežba – Linijska struktura

31

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

/*

U zadatku se na osnovu kinematičkih jednačina kretanja i

unete vrednosti vremena t izračunavaju vrednosti kinematičkih veličina.

*/

public class LinijskaStruktura2 {

public static void main(String[] args) throws Exception {

DecimalFormat df = new DecimalFormat("#.###");

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Deklarisanje promenljivih s, v, a, t

double s, v, a, t;

// Unos vrednosti za vreme t

System.out.print("Unesite vrednost za vreme t (s): ");

t = Double.parseDouble(ulaz.readLine());

// Izračunavanje pređenog puta, brzine i ubrzanja

s = 2 * t * t * t - 4 * t * t + 8 * t + 3;

v = 6 * t * t - 8 * t + 8;

a = 12 * t - 8;

// Štampanje izlaznih rezultata

System.out.println("Vrednost pređenog puta je s = " + df.format(s)

+ " m.");

Page 32: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

32

System.out.println("Vrednost brzine je v = " + df.format(v) + " m/s.");

System.out.println("Vrednost pređenog puta je a = " + df.format(a)

+ " m/s2.");

}

}

Izlazni rezultati:

Unesite vrednost za vreme t (s): 5

Vrednost pređenog puta je s = 193 m.

Vrednost brzine je v = 118 m/s.

Vrednost pređenog puta je a = 52 m/s2.

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program za izračunavanje obima i površine kvadrata za unetu

vrednost stranice a.

II grupa

Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a, b

i c izračunava vrednost izraza

3 5 4

cd ab a

b.

III grupa

Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za

izračunavanje dužine simetrale stranice a

2 2 21

2( )2

am b c a .

IV grupa

Sastaviti algoritam i napisati program za prevođenje ugla zadatog u radijanima u stepene,

ako važi 180

.radstep

Page 33: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

II vežba – Linijska struktura

33

V grupa

Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za

izračunavanje dužine simetrale ugla iz temena A

2 21

(( ) ).

AL b c b c ab c

VI grupa

Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a i

b izračunava vrednost izraza

1

23

a bc

a

b

b

VII grupa

Sastaviti algoritam i napisati program kojim se za unete vrednosti realnih promenljivih a,

b, c i x izračunava vrednost izraza

3 2

2 2 2

cos sin.

x b xy

a b c

VIII grupa

Krug je zadat poluprečnikom r i centralnim uglom α koji je zadat u stepenima. Sastaviti

algoritam i napisati program za izračunavanje:

dužine luka 2

,360

rl

površine isečka

2

.360

rP

IX grupa

Sastaviti algoritam i napisati program kojim se prevodi temperatura iz skale Celzija u skalu

Farenhajta prema formuli

temperatura_po_Farenhajtu = temperatura_po_Celziju 1,80 + 32.

Page 34: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

34

X grupa

Trougao je zadat dužinama stranica a, b i c. Sastaviti algoritam i napisati program za

izračunavanje poluprečnika opisanog kruga

,4

a b cR

P

pri čemu je ( ) ( ) ( ), .2

a b cP s s a s b s c s

Page 35: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa razgranatom programskom strukturom

Implementacija razgranate programske strukture

Page 36: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

36

Teorijske osnove za izradu vežbe

Razgranata struktura je programska struktura koja omogućuje grananja u programu, tako

da se pri izvršavanju programa prolazi samo kroz jednu od mogućih grana. Broj grana u

razgranatoj strukturi može biti različit (dve, tri ili više), što zavisi od naredbe prelaska

kojom se ostvaruje grananje u programu.

If iskaz spada u blokovski uslovni prelazak, jer omogućuje da se u svakoj grani razgranate

strukture može nalaziti blok naredbi. Uslov po kome se vrši prelazak predstavlja logički

izraz čija vrednost može biti true ili false.

Grananje koje se vrši ispitivanjem vrednosti logičkog izraza je binarno dvoznačno sa

granama koje se zovu potvrdna grana za istinitu vrednost logičkog izraza (na grafičkom

prikazu označena sa da) i odrečna grana (označena sa ne).

Sintaksa if-else strukture ima oblik

if (uslov) {

B1

}

else {

B2

}

Slika 3.1. If-else struktura

Ako je vrednost izraza true, izvršava se blok naredbi B1 koji sledi iza naredbe prelaska if,

u suprotnom se izvršava blok naredbi B2 koji se piše iza rezervisane reči else (slika 3.1). U

slučaju da ne postoji blok B2, tada ne treba pisati rezervisanu reč else. Sintaksa ove

strukture ima oblik

if (uslov) {

B1

}

Slika 3.2. If struktura

U slučaju if strukture u odrečnoj grani ne postoje naredbe već se vrši samo prelazak na kraj

if naredbe (slika 3.2).

Page 37: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

III vežba – Razgranata struktura

37

Na slici 3.3 prikazana je struktura u kojoj se u odrečnoj grani if-else strukture nalazi druga

if-else struktura. Za ovakvu strukturu if naredbi kaže se da su ugneždene if naredbe.

Slika 3.3. If-else-if struktura

Sintaksa if-else-if strukture ima oblik

if (uslov1) {

B1

}

else if (uslov2) {

B2

}

else {

B3

}

Primer 3.1. Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost

promenljive x izračunava vrednost funkcije

5, 0,

, 0.

x xy

x x

Na izlazu štampati rezultat oblika

Za uneto X = xxx.xxx dobija se Y = xxx.xxx.

Page 38: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

38

Rešenje:

package programiranje;

import java.io.*;

/*

U zadatku se na osnovu unetog realnog broja x

korišćenjem razgranate strukture izračunava vrednost funkcije y.

*/

public class IfElseStruktura {

public static void main(String[] args) throws Exception {

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Deklarisanje promenljivih x i y

double x, y;

// Unos vrednosti promenljive x

System.out.print("Unesite vrednost za x: ");

x = Double.parseDouble(ulaz.readLine());

if (x >= 0)

y = x + 5;

else y = -x;

// Štampanje izlaznog rezultata

System.out.println("Za uneto X = " + x + " dobija se Y = " + y);

}

}

Page 39: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

III vežba – Razgranata struktura

39

Izlazni rezultati:

Unesite vrednost za x: -26.3

Za uneto X = -26.3 dobija se Y = 26.3

Primer 3.2. Sastaviti algoritam i napisati program kojim se izračunava vrednost funkcije

, 2,

2, 2 3,

1, 3.

x x

y x

x x

Za unetu vrednost promenljive x, štampati vrednost argumenta i vrednost funkcije.

Rešenje:

package programiranje;

import java.io.*;

/*

U zadatku se na osnovu unetog realnog broja x

korišćenjem razgranate strukture izračunava vrednost funkcije y.

*/

Page 40: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

40

public class UgnezdenoIf {

public static void main(String[] args) throws Exception {

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Deklarisanje promenljivih x i y

double x, y;

// Unos vrednosti promenljive x

System.out.print("Unesite vrednost za x: ");

x = Double.parseDouble(ulaz.readLine());

// Primena razgranate strukture

if (x < 2)

y = x;

else if (x < 3)

y = 2.0;

else y = x - 1;

// Štampanje izlaznog rezultata

System.out.println("Za uneto X = " + x + " dobija se Y = " + y);

}

}

Izlazni rezultati:

Unesite vrednost za x: 2.5

Za uneto X = 2.5 dobija se Y = 2.0

Primer 3.3. Sastaviti algoritam i napisati program tako da se na osnovu dužine svetlog

otvora stambene prostorije (k0) u pravcu nosećih greda formira pokretno opterećenje u

stambenim zgradama prema sledećoj tabeli:

Dužina svetlog otvora Pokretno opterećenje

k0 < 4,5 m p = 1,25 kN/m2

4,5 ≤ k0 < 5,5 m p = 1,5 kN/m2

k0 ≥ 5,5 p = 2,0 kN/m2

Page 41: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

III vežba – Razgranata struktura

41

Rešenje:

package programiranje;

import java.io.*;

/*

U zadatku se na osnovu unete dužine svetlog otvora stambene prostorije

izračunava pokretno opterećenje.

*/

public class Primer3 {

public static void main(String[] args) throws Exception {

// Deklarisanje promenljivih k0 i p

double k0, p;

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Unos vrednosti promenljive k0

System.out.print("Unesite vrednost za dužinu svetlog otvora k0: ");

k0 = Double.parseDouble(ulaz.readLine());

// Određivanje pokretnog opterećenja

if (k0 < 4.5)

p = 1.25;

else if (k0 < 5.5)

p = 1.5;

Page 42: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

42

else p = 2.0;

// Štampanje izlaznog rezultata

System.out.println("Za uneto k0 = " + k0 + " dobija se p = " + p);

}

}

Izlazni rezultati:

Unesite vrednost za dužinu svetlog otvora k0: 2.6

Za uneto k0 = 2.6 dobija se p = 1.25

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program koji za unete realne vrednosti a i b izračunava y po

formuli

2 , ,

, ,

/ , .

a b a b

y a b a b

a b a b

Rezultat prikazati u obliku

Za unete vrednosti a = x.xx i b = x.xx dobija se y = x.xx.

II grupa

Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava

vrednost funkcije

2

3 +1, 2,

, 2.

x

x xy

e x

III grupa

Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje

vrednost izraza

max( ,min( , )).p x y z

Page 43: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

III vežba – Razgranata struktura

43

IV grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije f(x) za zadatu

vrednost x po formuli

2

3 , 0,

3, 0 1,( )

3, 1 3,

10 1, 3.

x x

x xf x

x x

x x

V grupa

Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava

vrednost funkcije

2

3

( 2) , 4,

1, 4 8,

1, 8.

x x

y x x

x x

VI grupa

Sastaviti algoritam i napisati program kojim se za unete realne vrednosti x, y i z određuje

vrednost izraza

min( ,max( , )).p x y z

VII grupa

Sastaviti algoritam i napisati program za određivanje da li je uneti ceo broj x paran ili

neparan.

VIII grupa

Sastaviti algoritam i napisati program kojim se za date realne brojeve x i y izračunava

vrednost funkcije f(x, y) po formuli

2

max( , ) min( , )( , )

1 max ( , )

x y x yf x y

x y

.

Na izlazu štampati vrednost funkcije.

Page 44: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

44

IX grupa

Sastaviti algoritam i napisati program kojim se za unetu realnu vrednost x izračunava

vrednost funkcije

2 - 1, 1,

2 , 1.

x xy

x x

X grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije za unete realne

vrednosti a, b i x

2

2

1,7 3,2 , 0,

cos, 0.

sin

x x x

y a b xx

a x b x x

Page 45: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa cikličnom programskom strukturom

Upoznavanje sa iterativnim i brojačkim ciklusima

Implementacija ciklične programske strukture

Page 46: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

46

Teorijske osnove za izradu vežbe

Ako se niz naredbi u programu može izvršiti više puta u toku izvršavanja programa, tada

se kaže da ove naredbe obrazuju cikličnu strukturu. Među naredbama koje čine cikličnu

strukturu mora postojati bar jedna naredba takva da omogućava izlazak iz ciklusa. Uslov

pod kojim se izlazi iz ciklusa zove se izlazni kriterijum ciklusa. Ako je izlazni kriterijum

broj ponavljanja ciklusa, tada se ciklus zove brojački ciklus. Ako je izlazni kriterijum

dostignuta tačnost u procesu računanja, tada se ciklus zove iterativni ciklus.

4.1. Iterativni ciklus

Za realizaciju iterativnih ciklusa koristi se while (slika 4.1) i do-while (slika 4.2) struktura

sa osnovnom razlikom u broju prolaza kroz petlju.

Sintaksa while petlje ima oblik

while (uslov) {

B

}

Slika 4.1 While struktura

Drugi način realizacije iterativnog ciklusa je korišćenjem do-while strukture. Sintaksa do-

while petlje ima oblik

do {

B

} while (uslov);

Slika 4.2. Do-while struktura

Primer 4.1. Sastaviti algoritam i napisati program za iterativno rešavanje sistema

jednačina

2

2

4 3 1 0

2 3 0

x xy x

x y

Page 47: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

47

koristeći sledeće formule: 1 1

31(3 1) 1, .

2 2

nn n n n

xx x y y

Iterativni proces prekinuti kada se ispune uslovi 1n nx x i 1n ny y .

Na ulazu je data vrednost za i početne vrednosti za 0x i 0y . Na izlazu štampati rešenja

sistema jednačina.

Zadatak rešiti koristeći:

a) while petlju,

b) do-while petlju.

Rešenje:

a)

Page 48: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

48

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

/*

U zadatku se na osnovu unete apsolutne tačnosti eps i početnih vrednosti x0 i y0

korišćenjem iterativnog ciklusa pronalaze rešenja zadatog sistema jednačina.

*/

public class WhilePetlja{

public static void main(String[] args) throws Exception {

DecimalFormat df = new DecimalFormat("###,##0.00");

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Unos vrednosti promenljivih eps, x0 i y0

System.out.print("Unesite vrednost za epsilon: ");

double eps = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za x0: ");

double x0 = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za y0: ");

double y0 = Double.parseDouble(ulaz.readLine());

// Iterativni postupak za određivanje rešenja sistema jednačina

double x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);

double y1 = Math.sqrt((x0 + 3) / 2);

while (Math.abs(x1 - x0) > eps || Math.abs(y1 - y0) > eps) {

x0 = x1;

x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);

y0 = y1;

y1 = Math.sqrt((x0 + 3) / 2);

}

// Štampanje izlaznog rezultata

System.out.println("Rešenja sistema jednačina su x = " + df.format(x1)

+ " i y = " + df.format(y1));

}

}

Izlazni rezultati:

Unesite vrednost za epsilon: 1.0E-6

Unesite vrednost za x0: 1.2

Unesite vrednost za y0: 3.4

Rešenja sistema jednačina su x = 1.05 i y = 1.42

Page 49: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

49

b)

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

/*

U zadatku se na osnovu unete apsolutne tačnosti eps i početnih vrednosti x0 i y0

korišćenjem iterativnog ciklusa pronalaze rešenja zadatog sistema jednačina.

*/

public class DoWhilePetlja {

public static void main(String[] args) throws Exception {

DecimalFormat df = new DecimalFormat("###,##0.00");

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

Page 50: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

50

// Unos vrednosti promenljivih eps, x0 i y0

System.out.print("Unesite vrednost za epsilon: ");

double eps = Double. parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za x0: ");

double x0 = Double. parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za y0: ");

double y0 = Double. parseDouble(ulaz.readLine());

// Iterativni postupak za određivanje rešenja sistema jednačina

double x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);

double y1 = Math.sqrt((x0 + 3) / 2);

do {

x0 = x1;

x1 = 0.5 * Math.sqrt(x0 * (3 * y0 - 1) + 1);

y0 = y1;

y1 = Math.sqrt((x0 + 3) / 2);

} while (Math.abs(x1 - x0) > eps || Math.abs(y1 - y0) > eps);

// Štampanje izlaznog rezultata

System.out.println("Rešenja sistema jednačina su x = " + df.format(x1)

+ " i y = " + df.format(y1));

}

}

Izlazni rezultati:

Unesite vrednost za epsilon: 1.0E-6

Unesite vrednost za x0: 1.2

Unesite vrednost za y0: 3.4

Rešenja sistema jednačina su x = 1.05 i y = 1.42

4.2. Brojački ciklus

Za realizaciju brojačkog ciklusa koristi se for petlja. Sintaksa for petlje ima oblik

for (inicijalizacija; uslov; iteracija) {

telo ciklusa

}

Slika 4.3. For petlja

Na slici 4.3 prikazana je for petlja, pri čemu je m1 početak, m2 kraj, a m3 korak brojanja.

Page 51: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

51

Primer 4.2. Sastaviti algoritam i napisati program za izračunavanje vrednosti funkcije

3( ) 1f x x za x = 1,00(0,2)2,00. Izlazna lista neka izgleda

X F(X)

x.xx xxx.xx

Rešenje:

package programiranje;

import java.text.DecimalFormat;

/*

U zadatku se korišćenjem brojačkog ciklusa vrši tabeliranje vrednosti funkcije

*/

public class ForPetlja {

public static void main(String[] args) {

DecimalFormat df = new DecimalFormat("###,##0.00");

// Deklarisanje promenljivih f i x

double f, x;

// Štampanje zaglavlja

System.out.println("\tX\tF(X)");

for (x = 1.0; x <= 2.0; x += 0.2) {

// Izračunavanje vrednosti funkcije f

f = Math.sqrt(1 + Math.pow(x, 3));

// Štampanje izlaznog rezultata

System.out.println("\t" + df.format(x) + "\t" + df.format(f));

}

}

}

Page 52: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

52

Izlazni rezultati:

X F(X)

1.00 1.41

1.20 1.65

1.40 1.93

1.60 2.26

1.80 2.61

2.00 3.00

Primer 4.3. Sastaviti algoritam i napisati program za izračunavanje vrednosti sume

13

3

3

n

ii

iS

i

za unetu vrednost n.

Rešenje:

Page 53: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

53

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

/*

U zadatku se korišćenjem brojačkog ciklusa izračunava vrednost sume

*/

public class Suma {

public static void main(String[] args) throws Exception {

DecimalFormat df = new DecimalFormat("###,##0.00");

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Inicijalizacija promenljive s

double s = 0;

// Unos vrednosti promenljive n

System.out.print("Unesite vrednost za n: ");

int n = Integer.parseInt(ulaz.readLine());

for (int i = 1; i <= n; i++)

if (i != 3)

s += (i + 3) / (i - 3.0);

// Štampanje izlaznog rezultata

System.out.println("Dobijena vrednost sume je " + df.format(s));

}

}

Izlazni rezultati:

Unesite vrednost za n: 10

Dobijena vrednost sume je 15.56

Primer 4.4. Data je greda opterećena trougaonim opterećenjem 0 1 /q kN m i

dužine 6 .L m Za poprečne preseke na rasponu grede 2,5 3,5m z m sa korakom od

0,1 m sastaviti algoritam i napisati program za tabeliranje vrednosti transverzalne sile i

napadnog momenta.

Izlazni razultati su oblika:

z Ft M

x.xx xxx.xx xxx.xx

Page 54: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

54

Napomena: Transverzalna sila se određuje na osnovu formule

2

0( ) ,2 3

T

q L zF z

L a

napadni moment

32

0( )6

q L z zM z

L L.

Rešenje:

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

public class Primer4 {

public static void main(String[] args) throws Exception {

// q0 - trougaono opterećenje

// L - dužina grede

// m - napadni moment

// ft - transverzalna sila

double q0, L, m, ft;

Page 55: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

55

DecimalFormat df = new DecimalFormat("#,##0.00");

// Unos podataka

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Unesite vrednost za trougaono opterećenje q0: ");

q0 = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za dužinu grede L: ");

L = Double.parseDouble(ulaz.readLine());

// Štampanje zaglavlja

System.out.println("\tz\tFt\tM");

// Tabeliranje vrednosti transverzalne sile i napadnog momenta

for (double z = 2.5; z < 3.5; z += 0.1) {

ft = q0 * (L / 3.0 - z * z / L) / 2.0;

m = q0 * L * L * (z / L - Math.pow(z / L, 3.0)) / 6.0;

System.out.println("\t" + df.format(z) + "\t" + df.format(ft)

+ "\t" + df.format(m));

}

}

}

Izlazni rezultati:

Unesite vrednost za trougaono opterećenje q0: 1

Unesite vrednost za dužinu grede L: 6

z Ft M

2.50 0.48 2.07

2.60 0.44 2.11

2.70 0.39 2.15

2.80 0.35 2.19

2.90 0.30 2.22

3.00 0.25 2.25

3.10 0.20 2.27

3.20 0.15 2.29

3.30 0.09 2.30

3.40 0.04 2.31

Primer 4.5. Sastaviti algoritam i napisati program za određivanje zapremine i položaja

težišta prave kupe poluprečnika 0,2(0,1)0,4R i visine 1,0(0,5)2,0H . Na izlazu

štampati rezultate oblika:

R.BR. R H V ZT

xxx xx.xx xx.xx xx.xx xx.xx

Page 56: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

56

Rešenje:

Omotač prave kupe nastaje obrtanjem prave y k z oko ose simetrije (z-ose):

2 22

0

; [ ( )]3

b H

a

R R R R Hk tg y z f z dz z dz

H H H

Zapremina je 2 21

[ ( )]3

b

a

V f z dz R H

Koordinate statičkog momenta su

2

2 2 2

0

1[ ( )]

4

b H

a

Rz f z dz z z dz R H

H

Koordinate težišta prave kupe su 3

4TZ H

Page 57: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

57

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

public class Primer5 {

public static void main(String[] args) throws Exception {

// r – poluprečnik osnove kupe

// h - visina kupe

// zt – z koordinata težišta

// v - zapremina kupe

double v, zt;

int rbr;

DecimalFormat df = new DecimalFormat("#,##0.00");

// Štampanje zaglavlja

System.out.println("R.BR\tR\tH\tV\tZT");

// Postavljanje rednog broja

rbr = 0;

for (double r = 0.2; r <= 0.4; r += 0.1)

for (double h = 1.0; h <= 2.0; h += 0.5) {

rbr++;

v = (1. / 3.) * r * r * Math.PI * h;

zt = (3. / 4.) * h;

// Štampanje rezultata

System.out.print(rbr + "\t" + df.format(r) + "\t"

+ df.format(h) + "\t" + df.format(v) + "\t"

+ df.format(zt) + "\n");

}

}

}

Izlazni rezultati:

R.BR R H V ZT

1 0.20 1.00 0.04 0.75

2 0.20 1.50 0.06 1.12

3 0.20 2.00 0.08 1.50

4 0.30 1.00 0.09 0.75

5 0.30 1.50 0.14 1.12

6 0.30 2.00 0.19 1.50

7 0.40 1.00 0.17 0.75

8 0.40 1.50 0.25 1.12

9 0.40 2.00 0.34 1.50

Page 58: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

58

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program kojim se štampaju elementi niza 2 2 ,( 1,..., ) i i n i n deljivi sa 5 na osnovu unete vrednosti za n.

II grupa

Sastaviti algoritam i napisati program za tabeliranje funkcije

2 2

3

xz

x a y,

ako je 1(1)2, 0,1(0,1)0,5x a i 0,1(0,3)1,2y .

III grupa

Sastaviti algoritam i napisati program kojim se za date prirodne brojeve m i n, izračunava

vrednost sume

11 1 1 1

... ( 1) .2 3

mSn m n m n m n m m

IV grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti izraza

3

2

x yz

x y

ako je 1(0,5)2x i 0(0,2)1y .

V grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti sume za unetu vrednost

parametra n

2 2 2

1 2... .

1 3 (2 1)

nS

n

Page 59: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IV vežba – Ciklična struktura

59

VI grupa

Sastaviti algoritam i napisati program kojim se štampaju svi trocifreni brojevi ABC koji

imaju svojstvo 2 2( ) ( )ABC AB C , gde su nepoznate cifre 0 9,A 0 9,B

0 9.C Primer: 147 = 142 – 7

2.

VII grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti x a , po formuli

0 1

1

11, ( 1,2, ).

2n n

n

ax a x x n

x

Proces prekinuti kada je 5

1 10 .n nx x

VIII grupa

Sastaviti algoritam i napisati program za nalaženje najvećeg pozitivnog korena funkcije 3 2( ) 27 4 2014 f x x x x koristeći iterativnu formulu

0 27.x ,

i 1 2

i i

2014 427, 0, 1, x i

x x .

Izračunavanje prekinuti kada bude zadovoljen uslov 6

i 1 i 10x x

.

IX grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti proizvoda

14

2,5

4

n

ii

iP

i

za unetu vrednost n.

Page 60: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

60

X grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti sume

50

1

( 1).

( 1)( 2)

k

k

Sk k

Page 61: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa jednodimenzionalnim poljem

Implementacija jednodimenzionalnog polja

Page 62: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

62

Teorijske osnove za izradu vežbe

Polje ili niz (engl. array) je kolekcija promenljivih istog tipa sa zajedničkim imenom. Za

polje se može reći da je to skup homogenih elemenata podataka (istog tipa), gde je svakom

elementu stavljen u korespondenciju uređeni niz celih brojeva (indeksa), tako da se svaki

element polja može jednoznačno locirati na osnovu indeksa. Broj indeksa koji su dodeljeni

svakom elementu polja naziva se dimenzionalnost polja. Broj elemenata polja naziva se

veličina, rang ili dužina polja. U Javi polje može imati jednu ili više dimenzija.

Jednodimenzionalno polje je struktura koju čini skup podataka kod kojih se svaki element

jedinstveno identifikuje vrednošću koja odgovara njegovoj poziciji u polju. U matematici,

jednodimenzionalno polje brojeva zove se vektor, pri čemu se pozicija svakog elementa

specificira indeksom, kao što je

a1, a2, … , an

za vektor od n elemenata.

U Javi prvi element vektora ima indeks 0

a[0], a[1], ... , a[n - 1]

gde a[i] ukazuje na adresu elementa ai.

Pošto se polja implementiraju kao objekti, kreiranje polja sastoji se iz dva koraka:

1. Deklariše se polje kao referencna promenljiva.

2. Alocira se memorija za polje, dodeljuje se referenca na tu memoriju promenljivoj

polja. Zato se sva polja u Javi dinamički alociraju korišćenjem operatora new.

Ukoliko je potrebno da se kreira celobrojno polje od 20 elemenata i povezuje sa

referencnom promenljivom polja mojePolje, izraz za kreiranje polja biće oblika

int mojePolje[ ] = new int[20];

Polja se mogu inicijalizovati pri njihovom kreiranju. Opšti oblik inicijalizacije

jednodimenzionalnog polja je

tip ime_polja[ ] = { vrednost1, vrednost2, vrednost3, ... , vrednostn };

Inicijalne vrednosti su specificirane sa vrednost1 do vrednostn. Dodeljivanje vrednosti

elementima polja vrši se sekvencijalno s leva udesno prema redosledu indeksa.

Page 63: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

V vežba – Jednodimenzionalno polje

63

Sortiranje predstavlja postupak uređenja objekata nekog skupa u određenom poretku. Na

primer, ako je dato polje brojeva [1], [2],..., [ ]a a a n sortiranje je njihovo uređenje u

neopadajućem

[1] [2] ... [ ]a a a n

ili nerastućem poretku

[1] [2] ... [ ]a a a n .

Primer 5.1. Sastaviti algoritam i napisati program kojim se određuje maksimalni i

minimalni element u celobrojnom vektoru X od n elemenata.

Rešenje:

Page 64: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

64

package programiranje;

import java.io.*;

/*

U zadatku se pronalazi maksimalni i minimalni element

celobrojnog polja x od n elemenata

*/

public class MinMax {

public static void main(String[] args) throws Exception {

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

// Kreiranje celobrojnog polja x

int[] x = new int[100];

// Unos vrednosti promenljive n

System.out.print("Unesite broj elemenata n polja x: ");

int n = Integer.parseInt(ulaz.readLine());

// Unos elemenata polja x

System.out.println("Unesite elemente polja x: ");

for (int i = 1; i <= n; i++) {

System.out.print("x[" + i + "] = ");

x[i] = Integer.parseInt(ulaz.readLine());

}

// Određivanje minimalnog i maksimalnog elementa polja

int min, max;

min = max = x[1];

for (int i = 2; i <= n; i++) {

if (x[i] > max)

max = x[i];

if (x[i] < min)

min = x[i];

}

// Štampanje izlaznog rezultata

System.out.println("Maksimalni element je " + max

+ "\nMinimalni element je " + min);

}

}

Page 65: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

V vežba – Jednodimenzionalno polje

65

Izlazni rezultati:

Unesite broj elemenata n polja x: 4

Unesite elemente polja x:

x[1] = 25

x[2] = -16

x[3] = 65

x[4] = 32

Maksimalni element je 65

Minimalni element je -16

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program pomoću kojeg se za dati broj n izračunava n-ti član

niza 1 2 1 23 2 n n n n nF F F F F pri čemu je 0 0F i 1 1F .

II grupa

Sastaviti algoritam i napisati program kojim se određuju k-ti elementi nizova koji se

formiraju na sledeći način: 0a i 0b su zadate vrednosti nizova, a važi

1 1

, 1 12

a i b ia i b i a i b i za 1,2,3,....i

III grupa

Sastaviti algoritam i napisati program kojim se na osnovu niza A od n elemenata formira

niz B od n elemenata po formuli

1

.2

a i a n ib i

IV grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti

2

3

3 , ako je neparno,

2 , ako je parno, 5, ...,15.

k

k ka

k k k

Page 66: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

66

V grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti

1 2 ... .nnP x x x

Na ulazu učitati vrednosti , ( 1,2,..., ).in x i n Na izlazu štampati P.

VI grupa

Sastaviti algoritam i napisati program kojim se na osnovu niza A od 2n elemenata formira

niz B od n elemenata po formuli

2 1

.2

a i a n ib i

VII grupa

Sastaviti algoritam i napisati program za tabeliranje funkcije

2( 1)

( ) 7,51,5

ii

xy x

u tačkama ( 1,2,...,10),ix i datim na ulazu.

VIII grupa

Dat je niz A od n elemenata. Sastaviti algoritam i napisati program kojim se određuje suma

članova na parnim mestima i proizvod na neparnim mestima.

IX grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti izraza

2

2

1 1

1 1 .

n n

i i

i i

S x xn n

Na ulazu učitati vrednosti , ( 1,2,..., )in x i n , a na izlazu štampati S.

Page 67: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

V vežba – Jednodimenzionalno polje

67

X grupa

Sastaviti algoritam i napisati program za izračunavanje sume

1

,n

i

i

S x

gde je

22 , ,

2 , ,

3 , .

i i i i i i

i i i i i i i

i i i i i i

a b c a b c

x a b c a b c

a b c a b c

Dimenzija nizova n i trojke podataka , , ( 1,2,..., ),i i ia b c i n date su na ulazu.

Page 68: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 69: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa dvodimenzionalnim poljem

Implementacija dvodimenzionalnog polja

Page 70: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

70

Teorijske osnove za izradu vežbe

Dvodimenzionalno polje je lista jednodimenzionalnih polja. Na primer, dvodimenzionalno

celobrojno polje matrica veličine 5x5 deklariše se kao

int matrica[ ][ ] = new int[5][5];

ili

int[ ][ ] matrica = new int[5][5];

U Javi se svaka dimenzija polja stavlja u poseban skup uglastih zagrada ([ ]). U opštem

slučaju elementu iz prethodnog primera se može pristupiti pomoću iskaza

matrica[element_vrste][element_kolone].

Opšti oblik inicijalizacije dvodimenzionalnog polja je

tip ime_polja[ ] [ ] = {

{ vrednost1, vrednost2, ..., vrednostn },

{ vrednost1, vrednost2, ..., vrednostn }

};

Nad dvodimenzionalnim poljem mogu se primeniti sve operacije koje se primenjuju u

matematici: transponovanje, množenje, sabiranje, pronalaženje inverzne matrice,

izračunavanje determinante.

Primer 6.1. Sastaviti algoritam i napisati program za nalaženje transponovane matrice AT

na osnovu zadate matrice A

3x3431

541

532

A

.

Rešenje:

package programiranje;

/*

U zadatku se vrši transponovanje matrice A reda 3x3

*/

public class TransponovanjeMatrice {

public static void main(String[] args) {

// Deklarisanje i inicijalizacija dvodimenionalnog polja a

int[][] a = {{2, -3, -5}, {-1, 4, 5}, {1, -3, -4}};

Page 71: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VI vežba – Dvodimenzionalno polje

71

// Deklarisanje dvodimenionalnog polja b

int[][] b = new int[5][5];

// Nalaženje transponovane matrice

for (int i = 0; i <= 2; i++)

for (int j = 0; j <= 2; j++)

b[i][j] = a[j][i];

// Štampanje izlaznog rezultata

System.out.println("Dobijena transponovana matrica je ");

for (int i = 0; i <= 2; i++) {

for (int j = 0; j <= 2; j++)

System.out.print(b[i][j] + " ");

System.out.println();

}

}

}

Izlazni rezultati:

Dobijena transponovana matrica je

2 -1 1

-3 4 -3

-5 5 -4

Page 72: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

72

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program kojim se formira matrica A reda n x n tako da se na

glavnoj dijagonali nalaze jedinice, elementi gornje trougaone matrice imaju vrednost 5, a

elementi donje trougaone matrice vrednost 10.

Na primer, za n = 3 matrica A ima oblik

3 3

1 5 5

10 1 5

10 10 1x

A

.

II grupa

Sastaviti algoritam i napisati program kojim se formira matrica A reda n x n tako da se na

glavnoj i sporednoj dijagonali nalaze jedinice, a svi ostali elementi matrice budu nule.

Na primer, za n = 3 matrica A ima oblik

3 3

1 0 1

0 1 0

1 0 1x

A

.

III grupa

Sastaviti algoritam i napisati program kojim se pomoću nizova [ ]( 1,..., )iX x i n ,

[ ]( 1,..., )jY y j m , generiše matrica [ ]ij n xmZ z gde je

2 2

2 2

i j

ij

i j

x yz

x y

.

IV grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti determinante

0 6 8

5 4 5 .

5 8 6

D

Page 73: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VI vežba – Dvodimenzionalno polje

73

V grupa

Za matricu A reda n x m ),10m,10n( sastaviti algoritam i napisati program za

određivanje najvećeg elementa i njegovih indeksa. Na izlazu štampati najveći element i

njegove indekse.

VI grupa

Sastaviti algoritam i napisati program kojim se za matricu A reda n x n određuje:

a) suma svih elemenata,

b) suma negativnih elemenata matrice.

VII grupa

Sastaviti algoritam i napisati program za nalaženje C = A + B na osnovu zadatih matrica A

i B:

3 3

2 3 5

1 4 15

11 12 4x

A

,

3 3

10 8 5

1 4 5

1 3 4x

B

.

VIII grupa

Sastaviti algoritam i napisati program koji će zadatoj matrici X reda n x n (n 10)

zameniti elemente na glavnoj i sporednoj dijagonali. Na izlazu štampati transformisanu

matricu.

IX grupa

Sastaviti algoritam i napisati program kojim se izračunava 12 33 23 11 21( )a a a a a , ako

je matrica

3 3

2 3 5

1 4 5 .

1 3 4x

A

Page 74: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

74

X grupa

Sastaviti algoritam i napisati program za nalaženje matrice 22 3 TB A A na osnovu

zadate matrice A:

3 3

2 3 2

1 4 8

1 3 3x

A

.

Page 75: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa pojmom metoda

Savladavanje načina prenosa argumenata u metodi

Implementacija metode

Page 76: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

76

Teorijske osnove za izradu vežbe

Metoda je izdvojena programska celina u koju se smešta ponavljani postupak. Metode se

pišu kao posebni blokovi naredbi pre ili posle glavne metode main(). Poziv metode se

obavlja tako što se trenutno prekine izvođenje glavnog kôda, a izvođenje programa se

prenosi na metodu. Nakon što se kôd u metodi izvede, nastavlja se izvršavanje glavnog

programa od sledeće naredbe iza poziva metode.

Metode imaju parametre ili argumente koji se zadaju pri pozivu, a vraćaju povratnu

vrednost. Vrednost koja se prosleđuje metodi naziva se argument. Unutar metode

promenljiva koja prima argument zove se parametar.

Metodu je moguće pozvati i iz neke druge metode ili iz sebe same (rekurzivne metode), pri

čemu se svaka metoda može pozivati neograničeni broj puta. Razbijanjem kôda u metode,

doprinosi se modularnosti programa (kôd je čitljiviji i razumljiviji).

Promenljive koje su definisane unutar metode zovu se lokalne promenljive. Lokalne

promenljive se mogu koristiti samo u izrazima unutar bloka u kome su deklarisane.

Globalne promenljive su poznate unutar celog programa. Kreiraju se deklarisanjem van

metode. Kada lokalna i globalna promenljiva imaju isto ime, lokalna promenljiva ima

prednost.

Pod deklaracijom metode podrazumeva se imenovanje metode, specificiranjem broja i tipa

parametara i tipa povratne vrednosti. Deklaracija ne sadrži opis šta i kako metoda radi, već

daje prototip metode. Opšti oblik deklaracije metode izgleda

modifikator_pristupa povratni_tip ime_metode (<tip> arg1, …, <tip> argn)

Prototipom metode specificira se o metodi:

tip povratne vrednosti,

tip argumenata,

broj argumenata.

Broj argumenata, njihov redosled i tip nazivaju se potpisom metode.

Definicija metode određuje šta i kako metoda radi. Definicija metode svojim oblikom

mora u potpunosti odgovarati deklaraciji.

Naredbe koje se izvode prilikom poziva metode čine telo metode.

Argument u definiciji metode je formalni argument – simboličko ime koje prevodilac

koristi tokom prevođenja tela metode. Kada se program izvršava, pri pozivu metode se

formalni argument inicijalizira stvarnim argumentom. Imena formalnog i stvarnog

argumenta ne moraju biti ista.

Page 77: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VII vežba – Metoda

77

Primer 7.1. Sastaviti algoritam i napisati program za tabeliranje vrednosti funkcije

( ( ( )))y f g f x ,

za x = 0,1(0,1)0,9 ako je

( ) 3, ( ) .2

xf x x g x

Izlaznu listu štampati u obliku

X Y

0.1 xx.xx

Rešenje:

package programiranje;

import java.text.DecimalFormat;

/*

U zadatku se na osnovu definisanih metoda f i g izračunava vrednost funkcije y

*/

public class Metoda {

// Definisanje metoda f i g

static double f(double x) {

return x + 3;

}

Page 78: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

78

static double g(double x) {

return x / 2.;

}

public static void main(String[] args) {

DecimalFormat df = new DecimalFormat("###,##0.00");

// Deklarisanje promenljivih x i y

double x, y;

// Štampanje zaglavlja

System.out.println("\tX\tY");

for (x = 0.1; x <= 0.9; x += 0.1) {

// Poziv metoda f i g

y = f(g(f(x)));

// Štampanje izlaznog rezultata

System.out.println("\t" + df.format(x) + "\t" + df.format(y));

}

}

}

Izlazni rezultati:

X Y

0.10 4.55

0.20 4.60

0.30 4.65

0.40 4.70

0.50 4.75

0.60 4.80

0.70 4.85

0.80 4.90

0.90 4.95

Primer 7.2. Za trougaono opterećenje poznati su sledeći podaci: opterećenje 0 1 /q kN m

i dužina 6 .L m Odrediti:

ukupno opterećenje 02

q

LF q ,

otpore oslonaca 06

A

LF q i 0

3B

LF q ,

Page 79: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VII vežba – Metoda

79

zmax iz uslova da je transverzalna sila

2

0( ) 0,2 3

T

q L zF z

L

najveći napadni moment

32

0( )6

q L z zM z

L L za vrednost zmax.

Napomena: Za određivanje nule funkcije koristiti Njutnovu metodu za koju važe sledeća

pravila:

početni uslov: 0 ,x

iterativna zakonitost 1 '

( ), 0,1,

( )

kk k

k

f xx x k

f x ,

uslov kraja 1 .k kx x

Rešenje:

Page 80: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

80

package programiranje;

import java.io.*;

import java.text.DecimalFormat;

public class Primer2 {

// Funkcija transverzalne sile

public static double f(double q0, double L, double z) {

return q0 * (L / 3.0 - z * z / L) / 2.0;

}

// Prvi izvod transverzalne sile

public static double f1(double q0, double L, double z) {

return - q0 * z / L;

}

// Njutnova metoda za određivanje nule funkcije

public static double njutn(double z0, double eps, double q0, double L) {

double z1 = z0 - f(q0, L, z0) / f1(q0, L, z0);

while (Math.abs(z1 - z0) > eps) {

z0 = z1;

z1 = z0 - f(q0, L, z0) / f1(q0, L, z0);

}

return z1;

}

Page 81: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VII vežba – Metoda

81

public static void main(String[] args) throws Exception {

// q0 - trougaono opterećenje

// L - dužina grede

// fq - ukupno opterećenje

// fa, fb - otpori oslonaca

// zmax - maksimalni raspon

// m - napadni moment

// z0 - početna vrednost raspona

// eps - apsolutna tačnost

double q0, L, m, zmax, fq, fa, fb, z0, eps;

DecimalFormat df = new DecimalFormat("#.##");

// Unos podataka

BufferedReader ulaz = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Unesite vrednost za trougaono opterećenje q0 (kN/m):");

q0 = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za dužinu grede L (m): ");

L = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za z0 (m): ");

z0 = Double.parseDouble(ulaz.readLine());

System.out.print("Unesite vrednost za eps: ");

eps = Double.parseDouble(ulaz.readLine());

// Izračunavanje ukupnog opterećenja i otpora oslonaca

fq = q0 * L / 2.0;

fa = q0 * L / 6.0;

fb = q0 * L / 3.0;

// Određivanje zmax

zmax = njutn(z0, eps, q0, L);

// Izračunavanje maksimalnog napadnog momenta

m = q0 * L * L * (zmax / L - Math.pow(zmax / L, 3.0)) / 6.0;

// Štampanje rezultata

System.out.println("Ukupno opterećenje Fq = " + df.format(fq)

+ "kN, otpori opterećenja Fa = " + df.format(fa) + "kN i Fb = "

+ df.format(fb) + "kN");

System.out.println("Maksimalni napadni moment je Mmax = "

+ df.format(m) + "kNm za zmax = " + df.format(zmax) + "m");

}

}

Page 82: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

82

Izlazni rezultati:

Unesite vrednost za trougaono opterećenje q0 (kN/m): 1

Unesite vrednost za dužinu grede L (m): 6

Unesite vrednost za z0 (m): 0.1

Unesite vrednost za eps: 1.0e-6

Ukupno opterećenje Fq = 3kN, otpori opterećenja Fa = 1kN i Fb = 2kN

Maksimalni napadni moment je Mmax = 2.31kNm za zmax = 3.46 m

Zadaci za vežbu

I grupa

Napisati metodu za izračunavanje vrednosti funckije

3, 1,

( ) 2 , 1 2,

6 1, 2,

y y

f y y y

y y

gde je 2 1.y x x

U glavnom programu za n unetih vrednosti za x, štampati vrednost

funkcije.

II grupa

Napisati metodu kojom se za zadate vrednosti x, y i z izračunava vrednost p po formuli

min( ,max( , )).p x y z

U glavnom programu uneti vrednosti za x, y i z štampati rezultat p.

III grupa

Napisati metodu kojom se izračunava vrednost proizvoda

13

818 .

-3

n

ii

iP

i

U glavnom programu uneti vrednost za n i izračunati proizvod.

Page 83: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VII vežba – Metoda

83

IV grupa

Napisati metodu za izračunavanje funkcije f(x) zadate u obliku

3

2

sin( ) 1 .

10 3

xf x x

x

U glavnom programu za x = 0,3(0,5)2,8 štampati vrednosti x i f(x) u tabeli sa

odgovarajućim zaglavljem.

V grupa

Napisati metodu za rešavanje jednačine 5 3- 2 +10 0x x Njutnovim iterativnim

postupkom. Početno rešenje x0 i tačnost dati su na ulazu. Na izlazu štampati krajnje

rešenje. Funkciju i njen prvi izvod definisati metodama.

Napomena: Za Njutnov metod važe sledeća pravila:

početni uslov: 0 ,x

iterativna zakonitost 1 '

( ), 0,1,

( )

kk k

k

f xx x k

f x ,

uslov kraja 1 .k kx x

VI grupa

Napisati metodu kojom se izračunava vrednost x a , po formuli

0 1

1

11, ( 1,2, ).

2n n

n

ax a x x n

x

Proces prekinuti kada je 1 .n nx x U glavnom programu uneti vrednost za a i ε i naći

vrednost korena.

VII grupa

Napisati metodu za izračunavanje norme matrice nxmijaA ][ date izrazom

2

1 1

.m n

ij

i j

A a

U glavnom programu učitati matricu A i štampati normu matrice.

Page 84: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

84

VIII grupa

Napisati metodu kojom se izračunava vrednost funkcije log(1+x) po sledećem algoritmu

10

1

1log(1 ),

8( )

( 1) 1,

8

k k

k

x x

f xx

xk

U glavnom programu treba učitati n vrednosti argumenta x i za svaku od njih izračunati

vrednosti funkcije.

IX grupa

Napisati metodu za izračunavanje koeficijenta proste linearne korelacije slučajnih veličina

1, ,...,i nX x x x i 1, ,...,i nY y y y po formuli

1 1 1

2 2

2 2

1 1 1 1

.

n n n

i i i i

i i i

n n n n

i i i i

i i i i

n x y x y

r

n x x n y y

U glavnom programu izračunati vrednost r na osnovu podataka iz sledeće tabele

x 0,1 0,2 0,3 0,4 0,5

y 0,5 0,3 0,2 0,0 -0,6

X grupa

Napisati metodu za izračunavanje vrednosti funkcije

2

1 ln 1 , 0

1, 01

, 0

u x xu a a

r x xw a a

u x w u x x

.

U glavnom programu za p kx x x x , štampati vrednosti funkcije r.

Page 85: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

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

Page 86: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

86

Zadaci za vežbu

I grupa

Sastaviti algoritam i napisati program za izračunavanje vrednosti varijanse

2

1

1,

1

n

i sr

i

V x xn

gde je xsr srednja vrednost i izračunava se na osnovu sledeće formule

1

1, 50,

n

sr i

i

x x nn

a x niz podataka. Na izlazu štampati vrednost varijanse V.

Napomena: Program testirati na osnovu skupa izmerenih mesečnih padavina u Nišu

tokom 2010. godine datih sledećom tabelom

mesec 1 2 3 4 5 6 7 8 9 10 11 12

padavine

(mm) 54 88,3 48,8 79,5 68,8 67,4 35,8 29,5 14,4 73,7 44,9 72,6

II grupa

Sastaviti algoritam i napisati program za tabelarni prikaz koeficijenta izvijanja za

neelastično ponašanje materijala prema obrascu

2

1,

1 0,8100

za vrednosti 10 75, gde je λ vitkost štapova.

III grupa

Sastaviti algoritam i napisati program za određivanje dometa mlaza na osnovu izraza

1,55 1 1000 ,4,9

HR H D

H

Page 87: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VIII vežba – Primena u građevinarstvu

87

gde je D – prečnik mlaznika u metrima, H – napor vode pred mlaznicom (napor prskača) u

metrima.

Na ulazu su zadate vrednosti za D i H. Na izlazu predstaviti vrednost za domet mlaza.

IV grupa

Sastaviti algoritam i napisati program za izračunavanje godišnje potrošnje vode za

navodnjavanje ako važi

,(1 )

eg

ET PW

LR

gde je ET – evapotranspiracija, LR – zahtevano ispiranje, Pe – efektivne padavine, η –

koeficijent korisnog dejstva. Na ulazu su zadate vrednosti za evapotranspiraciju, efektivne

padavine i koeficijent korisnog dejstva, dok se zahtevano ispiranje za površinska zalivanja

određuje pomoću izraza:

,5

w

e w

ECLR

EC EC

gde je ECw – zasoljenost vode za navodnjavanje, ECe – zasoljenost zemljišta.

Vrednosti za ECw i ECe uneti na ulazu na osnovu sledeće tabele:

Kultura ECe ECw

Ječam 1,3 8,7

Pšenica 9,5 6,4

Kupus 4,4 2,9

Krompir 3,8 2,5

Izlazna lista neka izgleda

ECe ECw LR Wg

x.xx x.xx x.xx x.xx

V grupa

Sastaviti algoritam i napisati program za izračunavanje neto potrebne količine vode za

navodnjavanje ako važi

,1

ETW

LR

Page 88: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

88

gde je ET – evapotranspiracija, LR – zahtevano ispiranje. Na ulazu je zadata vrednost

evapotranspiracije dok se zahtevano ispiranje za zalivanja kapanjem određuje pomoću

izraza:

max

,2

w

e

ECLR

EC

gde je ECemax maksimalna zasoljenost zemljišta.

Vrednosti za ECw, ECe i ECemax uneti na ulazu na osnovu sledeće tabele:

Izlazna lista neka izgleda

ECe ECw ECemax LR W

x.xx x.xx x.xx x.xx x.xx

VI grupa

Sastaviti algoritam i napisati program za tabelarni prikaz vrednosti maksimalne vlažnosti

drveta na osnovu formule

0

0

1,5max 100[%],

1,5

Hw w

gde je 3

0 [ / ]t m zapreminska masa, a Hw granica zasićenosti vlakana. Zapreminska

masa i granica zasićenosti vlakana za četiri vrste drveta date su u sledećoj tabeli:

Vrsta drveta Zapreminska masa 3

0 ( / )t m

Granica zasićenosti

vlakana (%)Hw

Jela 0,43 32

Bor 0,49 25

Bukva 0,68 33,5

Hrast 0,65 24

Kultura ECe ECw ECemax

Ječam 1,3 8,7 28

Pšenica 9,5 6,4 20

Kupus 4,4 2,9 12

Krompir 3,8 2,5 10

Page 89: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

VIII vežba – Primena u građevinarstvu

89

VII grupa

Sastaviti algoritam i napisati program za tabelarno prikazivanje vrednosti horizontalnog

pritiska na tlo, na bočnim površinama masivnog dubokog temelja, primenom sledećeg

izraza

0z m z z z tg

Na ulazu su zadate vrednosti 0, , , .p km z z z z z Izlazna lista neka izgleda:

z z

xx.xx xx.xx

xxx.xxxmax (za z = xxx.xx)

VIII grupa

Poroznost drveta se definiše izrazom

0

21 100[%],

3

gde je 3

0 [ / ]t m zapreminska masa. Sastaviti algoritam i napisati program za

izračunavanje vrednosti α za vrste drveta prikazane sledećom tabelom

Vrsta drveta Zapreminska masa 3

0 ( / )t m

Jela 0,43

Bor 0,49

Bukva 0,68

Hrast 0,65

IX grupa

Sastaviti algoritam i napisati program za tabeliranje vrednosti stvarnog pritiska vodene

pare u funkciji od minimalne temperature (Tmin)

min

min

17,27

237,3

min( ) 0,611

T

TVP T e .

Za n unetih vrednosti Tmin izračunati vrednosti stvarnog pritiska vodene pare.

Page 90: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

90

X grupa

Minimalni poluprečnik Rmin se određuje iz uslova stabilnosti vozila u krivini sa

2

min

,max

[ ],127( )

r

r pk

VR m

f i

gde je ]h/km[Vr - računska brzina, [%]i max,pk - maksimalni poprečni ugib kolovoza u

krivini, %7i max,pk , rf - koeficijent radijalnog otpora klizanja. Sastaviti algoritam i

napisati program za izračunavanje vrednosti Rmin za vrednosti rV i rf prikazane sledećom

tabelom

Vr (km/h) 30 40 50 60 70

rf 0,245 0,218 0,193 0,171 0,151

Page 91: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa softverskim paketom Mathematica

Upoznavanje sa operatorima

Implementacija korisnički definisanih funkcija

Page 92: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

92

Teorijske osnove za izradu vežbe

9.1. Grafički korisnički interfejs paketa Mathematica

Mathematica je razvijena u softverskoj kompaniji Wolfram Research i predstavlja

programski paket za matematičke i druge primene (tehnologija, finansije, medicina,

istraživanje, obrazovanje). Posebno je pogodna za obradu numeričkih podataka, za

simbolička procesiranja, kao i za grafičko prikazivanje podataka i funkcija.

Za rad u programskom paketu Mathematica koriste se dokumenta koja se zovu beležnici

(engl. notebooks) i zato Mathematica dokumenti nose oznaku *.nb . Beležnici se sastoje od

ćelija koje mogu sadržati tekst, izračunavanja ili grafikone. Ćelija se prepoznaje po

zagradama sa desne strane ([ ]). Ulazni podaci na osnovu kojih se vrši izračunavanje u

paketu Mathematica se unose u ulaznim ćelijama koje se prepoznaju po oznaci In[n]:=, a

rezultati i odgovori se nalaze u izlaznoj ćeliji Out[n]=. Broj n se dodaje automatski.

Da bi se kreirala nova ulazna ćelija, treba pritisnuti ENTER van postojeće ćelije i početi sa

kucanjem. Nakon unosa podataka treba pritisnuti taster SHIFT u kombinaciji sa tasterom

ENTER. Mathematica vrši izračunavanje na osnovu unetih podataka i daje izlazni rezultat

u izlaznoj ćeliji odmah ispod ulazne ćelije. Prekid računanja se postiže tasterima

[Alt][,] ili [Alt][.].

Komentari se pišu unutar oznaka (* i *) i nemaju izvršnu vrednost. Na primer

(* Vezba 1 *)

Naredba Print prenosi tekst i vrednosti promenljivih u izlaznu ćeliju.

Na slici 9.1 prikazan je izgled grafičkog korisničkog interfejsa paketa Mathematica.

Slika 9.1. Prikaz grafičkog korisničkog interfejsa paketa Mathematica

Page 93: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IX vežba – Softverski paket Mathematica

93

Meni File omogućava stvaranje novih dokumenata, otvaranje postojećih i pamćenje nove

verzije, kao i štampanje dokumenta. Meni Edit omogućava izmene sadržaja dokumenta.

Meni Cell omogućava rad sa ćelijama dokumenta i njihovo organizovanje na različite

načine, odnosno omogućava organizaciju izgleda sveske (engl. notebook) preme želji

korisnika. Meni Format pruža mogućnost za izvođenje različitih manipulacija sa tekstom i

graficima. Meni Input omogućava različitu prezentaciju ulaznih i izlaznih podataka. Meni

Kernel omogućava upravljanje jezgrom paketa Mathematica. Meni Find služi za

pretraživanje dokumenta. Meni Windows omogućava da se podesi raspored prozora koji

prikazuju otvorena dokumenta. Meni Help pruža korisniku pomoć i informacije o

mogućnostima paketa Mathematica.

Palete (engl. pallets) predstavljaju jednostavan način pristupanja sadržajima koje

Mathematica nudi i korišćenja njenih mogućnosti. U meniju File/Pallets dostupne su

sledeće palete:

1. Basic Input - paleta osnovnih matematičkih pojmova,

2. Basic Calculations - paleta osnovnih matematičkih operacija,

3. Algebraic Manipulation - paleta koja omogućava rad sa delovima algebarskih izraza,

4. Basic Typesetting - paleta uobičajenih objekata i operacija potrebnih pri kucanju

matematičkih formula,

5. Notebook Launcher - kreiranje novih programa u različitim stilovima,

6. Complete Characters - paleta specijalnih znakova,

7. International Characters - paleta internacionalnih znakova.

9.2. Tipovi podataka i aritmetičke operacije

Postoje sledeći tipovi brojeva: Integer, Rational, Real i Complex (tabela 9.1).

Tabela 9.1. Tipovi podataka

Tip broja Objašnjenje

Integer Celi brojevi proizvoljne dužine

Rational Racionalni brojevi oblika Integer/Integer

Real Približni realni brojevi sa proizvoljnom specificiranom tačnošću

Complex Kompleksan broj oblika x+y I, gde su x i y realni brojevi

U tabeli 9.2 prikazane su aritmetičke operacije u paketu Mathematica.

Tabela 9.2. Aritmetičke operacije

Aritmetička

operacija

Mathematica Primer

sabiranje + x + y

oduzimanje - x - y

množenje praznina ili * x y ili x * y

deljenje / x / y

stepenovanje ^ x ^ y

Page 94: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

94

Primer 9.1. a) Sabrati dva cela broja 10 i 8.

Rešenje:

In[1]:= 10 + 8

Out[1]= 18

Primer 9.2. Naći treći stepen broja 2.

Rešenje:

In[2]:= 2 ^ 3

Out[2]= 8

Za izvršavanje operacije množenje koristi se praznina ili znak *.

Znak % se može koristiti za rezultat poslednjeg izvršenog proračuna.

Primer 9.3.

In[3]:= 3 ^ 2

Out[3]= 9

In[4]:= Sqrt[%]

Out[4]= 3

Izraz //N ili N[izraz] uvek daje približan numerički rezultat.

In[5]:= 1/3 + 2/7

Out[5]= 13/21

In[6]:= 1/3 + 2/7 //N

Out[6]= 0.619048

Ukoliko je potrebno da se odredi broj značajnih cifara nekog izlaznog rezultata koristi se

N[izraz, n] gde je n broj značajnih cifara.

In[7]:= N[1/3 + 2/7, 4]

Out[7]= 0.6190

In[8]:= N[Pi, 50]

Out[8]= 3.1415926535897932384626433832795028841971693993751

Page 95: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IX vežba – Softverski paket Mathematica

95

9.3. Konstante

Veličina čija se vrednost ne može menjati u toku izvršavanja programa naziva se

konstanta. Konstantama se mogu dodeljivati simbolička imena, koja se mogu koristiti

umesto njih. Poznate simboliče konstante imaju svoja posebna, rezervisana imena (tabela

9.3).

Tabela 9.3. Konstante

Mathematica Matematička konstanta

Pi 14159.3

E 71828.2e Degree 180/ - faktor konverzije stepena u radijane

I 1i

Infinity

Imena svih konstanti, kao i svih funkcija koje su definisane u paketu Mathematica počinju

velikim slovom.

9.4. Promeljive

Promenljive su veličine koje menjaju svoju vrednost u programu. Svaka promenljiva ima

svoje simboličko ime. Promenljive se nazivaju simboli i predstavljaju osnovne imenovane

objekte u jeziku Mathematica. Ime koje se koristi kao simbol mora da bude sekvenca slova

i cifara, koja ne počinje cifrom. Velika i mala slova se razlikuju. Simbolima se ne može

dodeliti ime postojećih funkcija i konstanti u paketu Mathematica.

U tabeli 9.4 prikazani su načini dodele vrednosti promenljivama.

Tabela 9.4. Dodela vrednosti promenljivama

Operacija Mathematica

Dodela vrednosti promenljivoj x x = vrednost

Dodela vrednosti promenljivama x i y x = y = vrednost

Odbacuje se vrednost dodeljena promenljivoj x x = . ili Clear[x]

Trenutna dodela x /. a

Odložena dodela x := a

Sledećim primerom se promenljivoj x dodeljuje vrednost 10.

In[9]:= x = 10

Out[9]= 10

U jednoj liniji je moguće napisati više matematičkih operacija korišćenjem znaka ;.

In[10]:= x = 2; y = 80; z = y - x

Out[10]= 78

Page 96: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

96

Trenutna dodela ima dejstvo samo u navedenoj liniji.

In[11]:= x//Print; x/.x→5//Print; x//Print

Out[11]= x 5 x

Odložena dodela ima dejstvo samo u svim sledećim pozivanjima.

In[12]:= x//Print; x:=5; x//Print; x + 2//Print

Out[12]= x 5 7

Vrednosti promenljivih se prenose i u sledeće ćelije.

In[13]:= x = 5

Out[13]= 5

In[14]:= (x + y) ^ 2

Out[14]= (5+y)2

Ako ne želimo ovaj prenos, možemo ga sprečiti početnom naredbom Clear[x]. Zabranu

bilo kakvog prenosa podataka između ćelija postižemo naredbom Clear["Global′∗"] .

9.5. Relacioni i logički operatori

U tabeli 9.5 prikazani su relacioni operatori.

Tabela 9.5. Relacioni operatori

Relacioni operator Mathematica

= ==

≠ !=

> >

>=

< <

<=

U tabeli 9.6 prikazani su logički operatori.

Tabela 9.6. Logički operatori

Logički operator Mathematica p !

qp p && q qp p || q

qp Xor[p, q]

Page 97: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IX vežba – Softverski paket Mathematica

97

Primer 9.4. Naći vrednost izraza 12 34 2 13.

Rešenje:

In[15]:= 12 > 34 && 2 != 13

Out[15]= False

9.6. Matematičke funkcije

Sve ugrađene matematičke funkcije rade na sličan način: njihova imena počinju velikim

slovom, a argumenti im se nalaze u uglastim zagradama (tabela 9.7).

Tabela 9.7 Matematičke funkcije

Matematička funkcija Mathematica

x

Abs[x]

x Sqrt[x]

xe Exp[x]

ln x Log[x]

logb x

Log[b, x]

Trigonometrijske funkcije (argumenti su u

radijanima)

Sin[x], Cos[x], Tan[x], Cot[x]

Inverzne trigonometrijske funkcije ArcSin[x], ArcCos[x], ArcTan[x],

ArcCot[x]

Hiperboličke funkcije Sinh[x], Cosh[x], Tanh[x], Coth[x]

Inverzne hiperboličke funkcije ArcSinh[x], ArcCosh[x], ArcTanh[x],

ArcCoth[x]

Zaokruživanje na ceo deo broja x Round[x]

Celobrojni ostatak pri deljenju (n moduo m) Mod[n, m]

Slučajni brojevi između 0 i 1 Random[ ]

Maksimum, minimum od x, y, ... Max[x, y, ...], Min[x, y, ...]

m na ^ ( / )a n m

Za trigonometrijske funkcije podrazumevana vrednost argumenta je data u radijanima.

Mathematica ima mogućnost simboličkog i numeričkog izračunavanja vrednosti funkcija.

Primer 9.5. Naći tačnu i numeričku vrednost cos /6.

Rešenje:

In[16]:= Cos[Pi/6]

Page 98: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

98

Out[16]=

3

2

In[17]:= Cos[Pi/6]//N

Out[17]= 0.866025

Primer 9.6. Naći numeričku vrednost za sin 20

.

Rešenje:

In[18]:= Sin[20 Degree] //N

Out[18]= 0.34202

Primer 9.7. Naći numeričku vrednost za

3216

125 .

Rešenje:

In[19]:= N[(216/125) ^ (1/3)]

Out[19]= 1.2

9.7. Korisnički definisane funkcije

Funkcija više promenljivih definiše se izrazom

funkcija[x_, y_, ...] := izraz.

Pri definisanju funkcije treba voditi računa da se argumenti navode u uglastim zagradama,

a svaki element u listi parametara se završava znakom za podvlačenje _. Umesto znaka

jednakosti stoji znak odložene dodele := koji ukazuje na to da će funkcija naknadno dobiti

vrednost kada promenljive uzmu konkretne vrednosti.

Primer 9.8. Naći vrednost funkcije ( ) 2 5f x x za x = 3,2.

Rešenje:

In[20]:= f[x_] := 2 x+5

In[21]:= f[3.2]

Out[21]= 11.4

Funkcije mogu imati proizvoljan broj argumenata.

Primer 9.9. Napisati funkciju za sabiranje dva broja. Testirati funkciju za argumente 10 i

3.

Page 99: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IX vežba – Softverski paket Mathematica

99

Rešenje:

In[22]:= f[x_, y_] := x + y

In[23]:= f[10, 3]

Out[23]= 13

Primer 9.10. Za proizvoljno unete vrednosti x i y napisati funkciju oblika

3

2 2, 3

x yf x y x y

x y.

Funkciju testirati za vrednosti 0,25x i 0,5y .

Rešenje:

In[23]:= f[x_, y_] := 3 x + y ^ 2 + (x ^ 3 - 2 y) / (x + y)

In[24]:= f[0.25, 0.5]

Out[24]= -0.3125

Primer 9.11. Neka je data funkcija oblika

2, 0( ) .

3, 0

x xf x

x x

Odrediti vrednosti funkcije za x = 10 i x = -3.

Rešenje:

In[25]:= f[x_]:= x + 2 /; x > 0

f[x_]:= x - 3 /; x < 0

In[26]:= f[10]

Out[26]= 12

In[27]:= f[-3]

Out[27]= -6

Napomena: Oznaka /; ukazuje na uslove pod kojima se funkcija izračunava po navedenoj

formuli.

Page 100: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

100

Zadaci za vežbu

I grupa

Za proizvoljno unetu vrednost x napisati funkciju oblika

2 2

cos 3sin cos

x xf x x

x x

.

Funkciju testirati za vrednost 0,25x .

II grupa

Neka je data funkcija oblika

sin 2 , 0( ) .

3 , 0

x xf x

x x

Odrediti vrednosti funkcije za x = π/3 i x = -2.

III grupa

Neka je data funkcija oblika

,0 1

( ) 1,1 2 .

3 ,2 3

x x

f x x

x x

Odrediti vrednosti funkcije za x = 0,3 i x = 1,5.

IV grupa

Neka je data funkcija oblika

3 , 0

( ) ,0 1.

sin , 1

x x

f x x x

x x

Odrediti vrednosti funkcije za x = -1, x = 1 i x = π/2.

Page 101: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

IX vežba – Softverski paket Mathematica

101

V grupa

Naći 20. element Fibonačijevog niza ako važi:

(0) 1,

(1) 1,

( ) ( 1) ( 2).

f

f

f n f n f n

VI grupa

Neka je data funkcija oblika

2 2( , , ) ln sin cos .c c

f a b c a e b e

Odrediti vrednost funkcije za a = π/2, b = π/3 i c = 1.

VII grupa

Neka je data funkcija oblika

2 cos( , ) ln 0,2 .

xy

yf x y tg x

e

Odrediti vrednost funkcije za x = 1 i y = 0,5.

VIII grupa

Neka je data funkcija oblika

3

2 2

sin( )

ln sin

x xf x

x

.

Odrediti vrednosti funkcije za x = 0,5.

IX grupa

a) Naći prvih 20 značajnih cifara izraza 11.

b) Izračunati 3

216

27.

Page 102: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

102

X grupa

Neka je data funkcija oblika

2

5, 0 10

( ) 3 20,10 20 .

15 2 , 20 30

x x

f x x x x

x x

Odrediti vrednosti funkcije za x = 3 i x = 15.

Page 103: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

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

Page 104: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

104

Teorijske osnove za izradu vežbe

Vektori i matrice se u paketu Mathematica predstavljaju putem listi (tabela 10.1).

Tabela 10.1. Predstavljanje vektora i matrica

Operacija Mathematica

Vektor ( , , )a b c {a, b, c}

Matrica a b

c d

{{a, b}, {c, d}}

Prikaz matrice vrši se naredbom MatrixForm[lista] ili lista//MatrixForm.

10.1. Vektori

Skalarni proizvod vektora

In[1]:= {a, b, c} . {x, y, z}

Out[1]= a x + b y + c z

Norma vektora

In[2]:= Norm[{x, y, z}]

Out[2]= 2 2 2[ ] [ ] [ ]Absx Abs y Absz

Vektorski proizvod

In[3]:= Cross[{a, b, c}, {x, y, z}]

Out[3]= {-c y + b z, c x - a z,-b x + a y}

Ortogonalizacija vektora

In[4]:= Orthogonalize[{{1, 0, 1},{1, 1, 1}}]

Out[4]= {{1/ 2,0,1/ 2},{0,1,0}}

Projekcija jednog na drugi vektor

In[5]:= Projection[{5, 6, 7}, {1, 1, 1}]

Out[5]= {6,6,6}

Page 105: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

X vežba – Linearna algebra

105

10.2. Matrice

Primer 10.1. Prikazati matricu oblika

3x3

2 3 4

3 4 5 .

4 5 6

A

Rešenje:

In[6]:= A = {{2, 3, 4}, {3, 4, 5}, {4, 5, 6}}

Out[6]= {{2,3,4},{3,4,5},{4,5,6}}

In[7]:= MatrixForm[A]

Out[7]=//MatrixForm=

654

543

432

Vektori i matrice proizvoljnog reda definišu se naredbom Table[ ].

Primer 10.2. Uvesti matricu oblika

1 2 ...

2 3 1.

1 2 1

n

nA

n n n

Rešenje:

In[8]:= A[n_] := Table[i + j - 1, {i, 1, n}, {j, 1, n}]

Operatori za rad sa matricama su prikazani u tabeli 10.2.

Tabela 10.2. Operacije nad matricama

Matrične operacije Mathematica

Množenje matrice a skalarom m a m

Proizvod matrica a i b a . b

Inverzna matrica Inverse[a]

n-ti stepen matrice a MatrixPower[a, n]

Determinanta matrice a Det[a]

Transponovanje matrice a Transpose[a]

Jedinična matrica dimenzije n IdentityMatrix[n]

Primer 10.3. Odrediti proizvod matrica

3 3

1 2 3

2 4 6

3 6 7

x

A i

3 3

1 2 4

1 2 4 .

1 2 4

x

B

Page 106: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

106

Rešenje:

In[9]:= A = {{1, 2, 3}, {2, 4, 6}, {3, 6, 7}}

Out[9]= {{1, 2, 3},{2, 4, 6},{3, 6, 7}}

In[10]:= B = {{-1, -2, -4}, {-1, -2, -4}, {1, 2, 4}}

Out[10]= {{-1, -2, -4},{-1, -2, -4},{1, 2, 4}}

In[11]:= A.B

Out[11]= {{0, 0, 0},{0, 0, 0},{0, 0, 0}}

Primer 10.4. Odrediti proizvod matrica

3 1

2

1

3

x

A i 1 3

1 2 3 .x

B

Rešenje:

In[12]:= A = {{2}, {1}, {3}}

Out[12]= {{2},{1},{3}}

In[13]:= B = {{1, 2, 3}}

Out[13]= {{1, 2, 3}}

In[14]:= A.B

Out[14]= {{2, 4, 6},{1, 2, 3},{3, 6, 9}}

Primer 10.5. Naći inverznu matricu matrice

3 3

6 3 1

1 1 1 .

3 2 1

x

A

Rešenje:

In[15]:= A = {{6, 3, 1}, {1, 1, 1}, {3, 2, 1}}

Out[15]= {{6, 3, 1},{1, 1, 1},{3, 2, 1}}

In[16]:= Inverse[A]

Out[16]= {{1, 1, -2},{-2, -3, 5},{1, 3, -3}}

Primer 10.6. Naći peti stepen matrice

2 2

1 1.

0 1

x

A

Rešenje:

In[17]:= A = {{1, 1}, {0, 1}}

Out[17]= {{1, 1},{0, 1}}

In[18]:= MatrixPower[A, 5]

Out[18]= {{1, 5},{0, 1}}

Page 107: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

X vežba – Linearna algebra

107

Primer 10.7. Naći determinantu matrice

4 4

1 1 3 4

2 0 0 8.

3 0 0 2

4 4 7 5

x

A

Rešenje:

In[19]:= A = {{1, 1, 3, 4}, {2, 0, 0, 8}, {3, 0, 0, 2}, {4, 4, 7, 5}}

Out[19]= {{1, 1, 3, 4},{2, 0, 0, 8},{3, 0, 0, 2},{4, 4, 7, 5}}

In[20]:= Det[A]

Out[20]= 100

Primer 10.8. Naći transponovanu matricu matrice

3 3

6 3 1

1 1 1 .

3 2 1

x

A

Rešenje:

In[21]:= A = {{6, 3, 1}, {1, 1, 1}, {3, 2, 1}}

Out[21]= {{6, 3, 1},{1, 1, 1},{3, 2, 1}}

In[22]:= Transpose[A]

Out[22]= {{6, 1, 3},{3, 1, 2},{1, 1, 1}}

Primer 10.9. Generisati jediničnu matricu reda 3.

Rešenje:

In[23]:= IdentityMatrix[3]

Out[23]= {{1, 0, 0},{0, 1, 0},{0, 0, 1}}

10.3. Sistem jednačina u matričnom obliku

Neka je zadat sistem linearnih jednačina u matričnom obliku A X = B, pri čemu je A

matrica sistema, X kolona nepoznatih i B kolona slobodnih članova, pomoću

X = LinearSolve[A, B] možemo da izračunamo rešenje sistema ako postoji.

Ukoliko postoji više, ili beskonačno mnogo rešenja tog sistema, funkcija vraća jedno od

njih.

Page 108: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

108

Primer 10.10. Naći rešenje sistema jednačina zadatog u matričnom obliku

1 2 5,4X

4 6 2

Rešenje:

In[24]:= A = {{1, 2}, {4, 6}}

B = {5.4, 2}

X = LinearSolve[A, B]

Out[24]= {{1, 2}, {4, 6}}

Out[25]= {5.4, 2}

Out[26]= {-14.2, 9.8}

10.4. Sopstvene vrednosti i sopstveni vektori

Neka je data matrica A. Funkcija Eigenvalues[A] određuje sopstvene vrednosti matrice A.

Sopstvene vektore daje funkcija Eigenvectors[A].

Sopstvene vrednosti i vektore možemo zapisati kao uređene parove pomoću

Eigensystem[A].

Primer 10.11. Neka je zadata matrica A oblika

2x2

1 2.

3 2

A

Rešenje:

In[27]:= A = {{1, 2}, {3, 2}}

Eigenvalues[A]

Out[27]= {4, -1}

In[28]:= Eigenvectors[A]

Out[28]= {{2, 3}, {-1, 1}}

In[29]:= Eigensystem[A]

Out[29]= {{4, -1}, {2, 3}, {-1, 1}}

Page 109: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

X vežba – Linearna algebra

109

Zadaci za vežbu

I grupa

Naći sopstvene vrednosti i sopstvene vektore matrice

3x3

3 1 1

1 3 1

1 1 1

A .

II grupa

Koristeći matričnu jednačinu rešiti sistem jednačina:

2 3

2 2

1

x y z

x z

x y z

III grupa

Koristeći matričnu jednačinu rešiti sistem jednačina:

2 5

3 4 9

8 3 18

x y z

x y z

x y z

IV grupa

Neka je

3x3

2 4 5

3 7 5

8 1 8

A i

3x3

6 1 3

6 8 2

3 1 6

B . Izračunati: a) A + B, b) B - 2A.

V grupa

Neka je

3x3

5 4 5

3 7 3

4 1 6

A i

3x3

4 2 3

6 5 2

3 3 4

B . Izračunati: a) A-1

, b) (A + B)T,

c) det B.

Page 110: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

110

VI grupa

Neka su dati vektori ( 1 4 9 12) u i (0 2 4 3) .v Naći: a) 2v – u, b) v + u, c) uv .

VII grupa

Prelaskom na matrični oblik, rešiti sistem jednačina:

2 3 9

3 5 4

4 7 2 5

x y z

x y z

x y z

VIII grupa

Koristeći matričnu jednačinu rešiti sistem jednačina:

3 2 1

2 3 1

4 5 2 2

x y z

x y z

x y z

IX grupa

Neka je

3x3

2 3 8

13 7 5

18 11 18

A i

3x3

16 11 3

6 18 12

3 11 6

B . Izračunati: a) A + B,

b) B - 2A, c) det B, d) (A + B)T.

X grupa

Naći sopstvene vrednosti i sopstvene vektore matrice

3x3

1 1 3

2 3 1

4 1 2

A .

Page 111: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

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

Page 112: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

112

Teorijske osnove za izradu vežbe

11.1. Algebarske transformacije

U tabeli 11.1 date su funkcije za konvertovanje između različitih oblika algebarskih izraza.

Tabela 11.1. Funkcije za konvertovanje algebarskih izraza

Opis funkcije Mathematica

Ekspanzija proizvoda i stepena u polinomu p Expand[p]

Faktorizacija izraza p Factor[p]

Izdvajanje zajedničkih faktora u p FactorTerms[p]

Zapis polinoma u obliku sume stepena promenljive x Collect[p, x]

Zapis polinoma u obliku sume stepena od x, y, ... Collect[p, {x, y, …}]

Funkcije za algebarske operacije sa polinomima prikazane su u tabeli 11.2.

Tabela 11.2. Funkcije za algebarske operacije sa polinomima

Opis funkcije Mathematica

Količnik deljenja polinoma p1 po x polinomom p2, pri

čemu se odbacuje ostatak

PolynomialQuotient[p1, p2, x]

Ostatak deljenja polinoma p1 po x polinomom p2 PolynomialRemainder[p1, p2, x]

NZD dva polinoma PolynomialGCD[p1, p2]

NZS dva polinoma PolynomialLCM[p1, p2]

Redukcija polinoma p po modulu m PolynomialMod[p, m]

Primer 11.1. a) Odrediti faktore polinoma 2 212 27 84 ,x xy y b) izračunati proizvod

polinoma 2( )x y i

3(3 )x y .

Rešenje:

a) In[1]:= Factor[12 x^2+ 27 x y - 84 y ^ 2]

Out[1]= 3 (4 x-7 y) (x+4 y)

b) In[2]:= Expand[(x+y)^2 (3 x - y) ^ 3]

Out[2]= 5 4 3 2 4 527 27 18 7x x y x y xy y

Primer 11.2. Odrediti količnik i ostatak pri deljenju polinoma 4 315 10 2 1x x x

polinomom 1.x

Rešenje:

In[3]:= PolynomialQuotient[15 x^4-10 x^3+2 x +1, x + 1, x]

Out[3]= 2 323 25 25 15x x x

In[4]:= PolynomialRemainder[15 x^4-10 x^3+2 x +1, x + 1, x]

Out[4]= 24

Page 113: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

113

11.2. Sume i proizvodi

Upotrebom softverskog paketa Mathematica mogu se izračunati konačne i beskonačne

sume i proizvodi (tabela 11.3).

Tabela 11.3. Sume i proizvod

Operacija Mathematica

maxi

miniiif

Sum[ f , {i, imin, imax}]

Suma po i sa korakom d

2 ( ( 1) ) a a d a d a ndf f f f a nd b a n d

Sum[ f , {i, a, b, d}]

Ponovljene sume

maxi

minii

maxj

minjjijf

Sum[ f , {i, imin, imax},

{j, jmin, jmax}]

n

miif

Product[ f , {i, m, n}

Ponovljeni proizvodi

maxi

minii

maxj

minjjijf

Product[ f , {i, imin, imax},

{j, jmin, jmax}]

Primer 11.3. Odrediti sumu oblika 4

1

.i

i

x

Rešenje:

In[5]:= Sum[x^i, {i, 1, 4}]

Out[5]= 2 3 4x x x x

Primer 11.4. Odrediti sumu oblika2

1 1

.i

i j

i j

x y

Rešenje:

In[6]:= Sum[x^i y^j, {i, 1, 2}, {j, 1, i}]

Out[6]= 2 2 2x y x y x y

Primer 11.5. Odrediti tačnu i približnu sumu reda 2

1

1.

i i

Rešenje:

In[7]:= Sum[1/ i^2, {i, 1, Infinity}]

Out[7]= 2

6

Page 114: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

114

In[8]:= NSum[1/ i^2, {i, 1, Infinity}]

Out[8]= 1.64493

Primer 11.6. Odrediti proizvod oblika 5

1

.2i

i

i

Rešenje:

In[9]:= NProduct[i / 2 ^ i, {i, 1, 5}]

Out[9]= 0.00366211

11.3. Rešavanje jednačina

Za rešavanje jednačina koristi se oblik

Solve[leva_strana == desna_strana, x]

Ova naredba daje potpuno tačna rešenja u simboličkom obliku kad je to moguće.

Primer 11.7. Naći rešenja kvadratne jednačine 2 2 8 0.x x

Rešenje:

In[10]:= Solve[x ^ 2 + 2 x - 8 == 0, x]

Out[10]= {{x-4},{x2}}

Primer 11.8. Naći rešenja kvadratne jednačine 2 3 1 0 x x .

Rešenje: Rešenja ove jednačine sadrže u sebi iracionalne brojeve

In[11]:= Solve[x ^ 2 + 3 x + 1 == 0, x]

Out[11]= 1 1

{{ ( 3 5)},{ ( 3 5)}}2 2

x x

Primer 11.9. Naći rešenja kvadratne jednačine 2 2 2 0 x x .

Rešenje: Ova jednačina ima kompleksna rešenja

In[12]:= Solve[x ^ 2 + 2 x + 2 == 0, x]

Out[12]= {{x-1-},{x-1+}}

Međutim, za dosta složene jednačine eksplicitne algebarske formule se ne mogu prikazati.

Za jednačine do stepena 4 Mathematica može dati rešenja. Ako je stepen 4 ili veći

Page 115: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

115

matematički je nemoguće dati eksplicitne algebarske formule za sva rešenja. Tada tražimo

numerička rešenja pomoću naredbe NSolve.

Primer 11.10. Naći rešenja kvadratne jednačine 5 3 1 0 x x .

Rešenje: Ova jednačina ima kompleksna rešenja

In[13]:= NSolve[x ^ 5 - 3 x + 1 == 0, x]

Out[13]= {{x-1.38879},{x-0.0802951-1.32836}, {x-0.0802951+1.32836 },{x0.334734},{x1.21465}}

Funkcijom

Solve[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]

mogu se rešavati sistemi jednačina. Tako se dobija jedno rešenje specificiranog sistema po

promenljivim x, y, ..., iako može postojati više rešenja. Ako sistem nema rešenja, kao izlaz

se dobija prazna lista.

Primer 11.11. Naći rešenja sistema jednačina

2 10

5

x y

x y

Rešenje:

In[14]:= Solve[{2 x - y 10, x + y 5}, {x, y}]

Out[14]= {{x5,y0}}

Ukoliko rešenja postoje samo za specijalne vrednosti parametara, one se određuju

funkcijom

Reduce[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]

Takođe, ako sistem ima više rešenja, mogu se dobiti funkcijom Reduce.

Funkcijom

Eliminate[{izraz1 == izraz2, izraz3 == izraz4, ...}, {x, y, ...}]

može se sistem jednačina pojednostaviti koristeći eliminaciju navedenih promenljivih.

Page 116: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

116

11.4. Granične vrednosti

Funkcije za određivanje graničnih vrednosti date su u tabeli 11.4.

Tabela 11.4. Granične vrednosti

Opis Mathematica

Granična vrednost funkcije f kada 0xx , )x(flim0xx

Limit[f, 0xx ]

Granična vrednost funkcije f kada 0xx sa leve

strane

Limit[f, 0xx , Direction 1]

Granična vrednost funkcije f kada 0xx sa desne

strane

Limit[f, 0xx , Direction -1]

Primer 11.12. Odrediti graničnu vrednost 0

sin3lim .x

x

x

Rešenje:

In[15]:= Limit[Sin[3 x] / x, x -> 0]

Out[15]= 3

Primer 11.13. Odrediti graničnu vrednost 3

0

1lim .x

xe

x

Rešenje:

In[16]:= Limit[Exp[3 x] – 1 / x, x -> 0]

Out[16]= -

Primer 11.14. Odrediti graničnu vrednost 2lim .x

xe x

Rešenje:

In[17]:= Limit[Exp[-2 x] Sqrt[x], x-> Infinity]

Out[17]= 0

Primer 11.15. Odrediti graničnu vrednost 0

lim .x

x

x

Rešenje:

In[18]:= Limit[Abs[x] / x, x -> 0, Direction -> -1]

Out[18]= 1

Page 117: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

117

Primer 11.16. Odrediti graničnu vrednost

1

0lim .x

xe

Rešenje:

In[19]:= Limit[Exp[-1 / x], x -> 0, Direction -> 1]

Out[19]=

11.5. Diferenciranje

Funkcije za numeričko i simboličko diferenciranje date su u tabeli 11.5.

Tabela 11.5. Diferenciranje

Opis Mathematica

Prvi, drugi i treći izvod funkcije f jedne promenljive f'[x], f''[x], f'''[x]

n-ti izvod funkcije jedne promenljive D[f,{x, n}]

Parcijalni izvod

f

x i

f

y

D[f, x]

D[f, y]

Mešoviti parcijalni izvod

m n

m n

f

x y

D[f, {x, m},{y, n}]

Primer 11.17. Odrediti izvod funkcije1

( ) .f x xx

Rešenje:

In[20]:= D[x + 1 / x, x]

Out[20]= 2

11

x

Primer 11.18. Odrediti treći izvod funkcije ( ) cos .f x x

Rešenje:

In[21]:= D[Cos[x], {x, 3}]

Out[21]= Sin[x]

Primer 11.19. Odrediti prvi i drugi izvod funkcije ( ) cos .xf x e x

Rešenje:

In[22]:= f[x_]:= Exp[x] + Cos[x]

In[22]:= f'[x]

Page 118: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

118

Out[22]= xe Sin x

In[23]:= f''[x]

Out[23]= xe Cos x

Primer 11.20. Odrediti parcijalni mešoviti izvod 3

2

f

x yfunkcije 2ln ( ) f x y .

Rešenje:

In[24]:= f[x_, y_]:= Log[x + y ^ 2]

In[25]:= D[f[x, y],{x, 1},{y, 2}]

Out[25]=

2

2 3 2 2

8 2

( ) ( )

y

x y x y

11.6. Diferencijalne jednačine

Diferencijalne jednačine i sistemi diferencijalnih jednačina u čisto funkcionalnom obliku

rešavaju se funkcijom DSolve (tabela 11.6).

Tabela 11.6. Diferencijalne jednačine

Opis Mathematica

Rešavanje diferencijalne jednačine

za y[x], smatrajući x za nezavisnu

promenljivu

DSolve[jednačina, y[x], x]

Rešavanje sistema diferencijalnih

jednačina

DSolve[{jednačina1, jednačina2, …}, {y1, y2, …}, x]

Kada postoji rešenje, ali se ne može naći u tačnom obliku, naredba NDSolve pronalazi

približno rešenje diferecijalne jednačine.

11.6.1. Diferencijalne jednačine I reda

11.6.1.1. Diferencijalne jednačine sa razdvojenim promenljivama

Primer 11.21. Naći opšte rešenje diferencijalne jednačine

2 2

2.

3

x yy

x

Rešenje:

In[26]:= DSolve[y'[x] == (x ^ 2 y[x] ^2) / Sqrt[3 - x ^ 2], y[x], x]

Page 119: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

119

Out[26]= 2

2y[x]

xx 3 x 3ArcSin 2C[1]

3

Primer 11.22. Naći opšte rešenje diferencijalne jednačine

2 2sin 1 . y x x x

Rešenje:

In[27]:= DSolve[y'[x] == x ^ 2 Sin[x] + Sqrt[1 + x ^ 2], y[x], x]

Out[27]=

2 21 ArcSinh[ ]y[x] 1 [1] ( 2 )Cos[ ] 2 Sin[ ]

2 2

xx x C x x x x

11.6.1.2. Homogena diferencijalna jednačina

Primer 11.23. Naći opšte rešenje diferencijalne jednačine

3 2 3

3 2

2.

x x y yy

x x y

Rešenje:

In[28]:= DSolve[y'[x] == (x ^ 3 + 2 x ^ 2 y[x] - y[x] ^ 3) / (x ^ 3 + x ^ 2 y[x]), y[x], x]

Out[28]= 2 [1] 2

2 [1] 2

( e )y[x]

e

C

C

x x

x

Primer 11.24. Naći opšte rešenje diferencijalne jednačine

2 23

.

x y

yx y

Rešenje:

In[29]:= DSolve[y'[x] == -(x ^ 2 - 3 y[x] ^ 2) / (x y[x]), y[x], x]

Out[29]= 2 6 2 6

2 [1] 2 [1]y[x] , y[x]

2 2

x x C x x C

Page 120: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

120

11.6.1.3. Linearna diferencijalna jednačina

Primer 11.25. Naći opšte rešenje diferencijalne jednačine

21. y y x

x

Rešenje:

In[30]:= DSolve[y'[x] - y[x] / x == x ^ 2, y[x], x]

Out[30]= 3

y[x] [1]2

xxC

Primer 11.26. Naći opšte rešenje diferencijalne jednačine

2 3( 1) 2 2 2 0. x y xy x x

Rešenje:

In[31]:= DSolve[(x ^ 2 - 1) y'[x] - 2 x y[x] + 2 x - 2 x ^ 3 == 0, y[x], x]

Out[31]= 2 2 2y[x] ( 1 )[1] ( 1 )Log[ 1 ]x C x x

11.6.1.4. Bernoullieva diferencijalna jednačina

Primer 11.27. Naći opšte rešenje diferencijalne jednačine

24 0. xy y x y

Rešenje:

In[32]:= DSolve[x y'[x] - 4 y[x] - x ^ 2 Sqrt[y[x]] == 0, y[x], x]

Out[32]= 4 2 4 4 21y[x] (4 [1] 4 [1]Log[ ] Log[ ])

4x C x C x x x

Primer 11.28. Naći opšte rešenje diferencijalne jednačine

3 311 . y xy x y

Rešenje:

In[33]:= DSolve[y'[x] + 11 x y[x] == x ^ 3 y[x] ^ 3, y[x], x]

Page 121: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

121

Out[33]=

2 22 11 2 11

11 11y[x] , y[x]

1 11 121e [1] 1 11 121e [1]x x

x C x C

11.6.1.5. Riccatieva diferencijalna jednačina

Primer 11.29. Naći opšte rešenje diferencijalne jednačine

2

2

23 0. y y

x

Rešenje:

In[34]:= DSolve[y'[x] + (2 / x ^ 2) - 3 y[x] ^ 2 == 0, y[x], x]//Simplify

Out[34]= 5

6

3 2 [1]y[x]

3 3 [1]

x C

x xC

11.6.2. Linearne diferencijalne jednačine II reda

11.6.2.1. Homogena linearna diferencijalna jednačina II reda sa konstantnim

koeficijentima

Primer 11.30. Naći opšte rešenje linearne diferencijalne jednačine

5 6 0. y y y

Rešenje:

In[35]:= DSolve[y''[x] + 5 y'[x] - 6 y[x] == 0, y[x], x]

Out[35]= 6y[x] e [1] e [2]

x xC C

Primer 11.31. Naći opšte rešenje linearne diferencijalne jednačine

4 4 0. y y y

Rešenje:

In[36]:= DSolve[y''[x] - 4 y'[x] + 4 y[x] == 0, y[x], x]

Out[36]= 2 2y[x] e [1] e [2]

x xC xC

Page 122: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

122

11.6.2.2. Nehomogena linearna diferencijalna jednačina II reda sa

konstantnim koeficijentima

Primer 11.32. Naći opšte rešenje linearne diferencijalne jednačine

24 4 . xy y e

Rešenje:

In[37]:= DSolve[y''[x] - 4 y[x] == 4 Exp[-2 x], y[x], x]

Out[37]= 2 2 21y[x] e (1 4 ) e [1] e [2]

4

x x xx C C

Primer 11.33. Naći opšte rešenje linearne diferencijalne jednačine

4 2 (8 1)sin2 . y y x x

Rešenje:

In[38]:= DSolve[y''[x] + 4 y[x] == 2 + (8 x - 1) Sin[2 x], y[x], x]

Out[38]=

2 2

2 2

{{y[x] [1]Cos[2 ] [2]Sin[2 ]

1(4 Cos[2 ] 16 Cos[2 ] 8Cos[2 ] 2Cos[2 ]Cos[4 ]

16

2Cos[2 ]Sin[2 ] 8 Cos[4 ]Sin[2 ] 8Sin[2 ] Cos[2 ]Sin[4 ]

8 Cos[2 ]Sin[4 ] 2Sin[2 ]Sin[4 ])}}

C x C x

x x x x x x x

x x x x x x x x

x x x x x

11.6.2.3. Homogena linearna diferencijalna jednačina II reda sa

funkcionalnim koeficijentima

Primer 11.34. Naći opšte rešenje linearne diferencijalne jednačine

(2 ) 0. xy x y y

Rešenje:

In[39]:= DSolve[x y''[x] + (2 + x) y'[x] + y[x] == 0, y[x], x]

Out[39]= e [1] [2]

y[x]

xC C

x x

Page 123: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

123

11.6.2.4. Eulerova diferencijalna jednačina

Primer 11.35. Naći opšte rešenje diferencijalne jednačine

2 3 4 0. x y xy y

Rešenje:

In[40]:= DSolve[x ^ 2 y''[x] - 3 x y'[x] + 4 y[x] == 0, y[x], x]

Out[40]= 2 2y[x] [1] 2 [2]Log[ ]x C x C x

Primer 11.36. Naći opšte rešenje diferencijalne jednačine

2 5 6 0. x y xy y

Rešenje:

In[41]:= DSolve[x ^ 2 y''[x] + 5 x y'[x] + 6 y[x] == 0, y[x], x]

Out[41]= 2 2

[2]Cos[ 2Log[ ]] [1]Sin[ 2Log[ ]]y[x]

C x C x

x x

11.6.2.5. Legendreova diferencijalna jednačina

Primer 11.37. Naći opšte rešenje diferencijalne jednačine

2(3 1) 5(3 1) 6 0. x y x y y

Rešenje:

In[42]:= DSolve[(3 x + 1) ^ 2 y''[x] + 5 (3 x + 1) y'[x] + 6 y[x] == 0, y[x], x]

Out[42]= 1/3 1/3

1 1[2]Cos[ 5Log[1 3 ]] [1]Sin[ 5Log[1 3 ]]

3 3{{y[x] }}(1 3 ) (1 3 )

C x C x

x x

11.6.2.6. Nehomogena linearna diferencijalna jednačina II reda sa

funkcionalnim koeficijentima

Primer 11.38. Naći opšte rešenje linearne diferencijalne jednačine

(2 ) . xxy x y y e

Page 124: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

124

Rešenje:

In[43]:= DSolve[x y''[x] + (x + 2) y'[x] + y[x] == Exp[x], y[x], x]

Out[43]= e e [1] [2]

y[x]2

x xC C

x x x

11.6.3. Linearne diferencijalne jednačine višeg reda

11.6.3.1. Homogena linearna diferencijalna jednačina višeg reda sa

konstantnim koeficijentima

Primer 11.39. Naći opšte rešenje linearne diferencijalne jednačine

4 25 28 0. y y y y

Rešenje:

In[44]:= DSolve[y'''[x] - 4 y''[x] - 25 y'[x] + 28 y[x] == 0, y[x], x]

Out[44]= 4 7y[x] e [1] e [2] e [3]

x x xC C C

Primer 11.40. Naći opšte rešenje linearne diferencijalne jednačine

(4) 16 94 240 225 0. y y y y y

Rešenje:

In[45]:= DSolve[y''''[x] - 16 y'''[x] + 94 y''[x] - 240 y'[x] + 225 y[x] == 0, y[x], x]

Out[45]= 3 3 5 5y[x] e [1] e [2] e [3] e [4]

x x x xC xC C xC

11.6.3.2. Nehomogena linearna diferencijalna jednačina višeg reda sa

konstantnim koeficijentima

Primer 11.41. Naći opšte rešenje linearne diferencijalne jednačine

3 4 2 . xy y y y e

Rešenje:

In[46]:= DSolve[y'''[x] - 3 y''[x] + 4 y'[x] - 2 y[x] == Exp[x], y[x], x]

Out[46]= y[x] e e [3] e [2]Cos[ ] e [1]Sin[ ]x x x xx C C x C x

Page 125: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

125

11.6.3.3. Homogena linearna diferencijalna jednačina višeg reda sa

funkcionalnim koeficijentima

Primer 11.42. Naći opšte rešenje linearne diferencijalne jednačine

3 22 0. x y x y xy y

Rešenje:

In[47]:= DSolve[x ^ 3 y'''[x] + 2 x ^ 2 y''[x] - x y'[x] + y[x] == 0, y[x], x]

Out[47]= [1]y[x] [2] [3]Log[ ]

CxC xC x

x

11.6.3.4. Nehomogena linearna diferencijalna jednačina višeg reda sa

funkcionalnim koeficijentima

Primer 11.43. Naći opšte rešenje linearne diferencijalne jednačine

3 2 22 . x y x y xy y x

Rešenje:

In[48]:= DSolve[x ^ 3 y'''[x] + 2 x ^ 2 y''[x] - x y'[x] + y[x] == x ^ 2, y[x], x]

Out[48]= 2

[1]y[x] [2] [3]Log[ ]

3

x CxC xC x

x

11.7. Integracija

Za izračunavanje integrala koristi se službena reč Integrate (tabela 11.7).

Tabela 11.7. Integracija

Operacija Mathematica

Neodređen integral dxf Integrate[f, x]

Višestruki integral dydxyxf ),( Integrate[f, x, y]

Određen integral maxx

minx

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

Višestruki određen integral max

min

max

min

y

y

x

x

dxdyf Integrate[f, {x, xmin, xmax}, {y, ymin,

ymax}]

Page 126: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

126

Primer 11.44. Odrediti vrednost integrala 7

.2

xI dx

x

Rešenje:

In[49]:= Integrate[(x + 7) / Sqrt[x + 2], x]

Out[49]= 2

2 (17 )3

x x

Primer 11.45. Za 1, n odrediti vrednost integrala .nI x dx

Rešenje:

In[50]:= Integrate[x ^ n, x]

Out[50]=

1

1

nx

n

Primer 11.46. Odrediti vrednost integrala

2

2.

1

x

I dxx

Rešenje:

In[51]:= Integrate[x ^ 2 / (x ^ 2 + 1), x]

Out[51]= x-ArcTan[x]

Primer 11.47. Odrediti vrednost integrala 2

0

.xI e dx

Rešenje:

In[52]:= Integrate[Exp[-x ^ 2], {x, 0, Infinity}]

Out[52]=

2

Primer 11.48. Odrediti vrednost integrala

1

0

ln.

xI dx

x

Rešenje:

In[53]:= Integrate[Log[x] / Sqrt[x], {x, 0, 1}]

Out[53]= -4

Page 127: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

127

Za određivanje približne vrednosti integrala koristi se funkcija NIntegrate[f, x].

Primer 11.49. Odrediti vrednost integrala

1

0

sin(cos ) .I x dx

Rešenje:

In[54]:= N[Integrate[Sin[Cos[x]], {x, 0, 1}]]

Out[54]= 0.738643

Primer 11.50. Odrediti približnu vrednost integrala

1

0

2 5.

xI dx

x

Rešenje:

In[55]:= NIntegrate[Sqrt[2 Sqrt[x] + 5] / Sqrt[x],{x, 0, 1}]

Out[55]= 4.89328

Primer 11.51. Odrediti približnu vrednost integrala

2

20

2 6.

2 2

xI dx

x x

Rešenje:

In[56]:= NIntegrate[(2 x ^ 2 - 6) / Sqrt[x ^ 2 + 2 x + 2],{x, 0, π}]

Out[56]= -1.38969

Primer 11.52. Odrediti približnu vrednost integrala

1

2

0

ln . I x x dx

Rešenje:

In[57]:= NIntegrate[Sqrt[x] Log[x] ^ 2, {x, 0, 1}]

Out[57]= 0.592593

Primer 11.53. Odrediti vrednost višestrukog integrala

1

2 2

0 0

( ) . x

I dx x y dy

Rešenje:

In[58]:= Integrate[ x ^ 2 + y ^ 2, {x, 0, 1}, {y, 0, x} ]

Out[58]= 1

3

Page 128: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

128

Primer 11.54. Odrediti vrednost višestrukog integrala

2 1

2

0 0

( 2 ) . I dy x y dx

Rešenje:

In[59]:= Integrate[ x ^ 2 + 2 y, {y, 0, 2}, {x, 0, 1} ]

Out[59]= 14

3

Primer 11.55. Odrediti vrednost višestrukog integrala 2

3 5

3 4

( 2 ) .

y

I dy x y dx

Rešenje:

In[60]:= Integrate[ x + 2 y, {y, -3, 3}, {x, y ^ 2 - 4, 5} ]

Out[60]= 252

5

Primer 11.56. Odrediti vrednost višestrukog integrala

21 1 1

0 2

.

x

x

I dx x dy

Rešenje:

In[61]:= Integrate[ x, {x, 0, 1}, {y, -x + 2, Sqrt[1 - x ^ 2] + 1} ]

Out[61]= 1

6

Primer 11.57. Odrediti vrednost višestrukog integrala

2

2

8

2 4

2

4

.

x

x

I dx dy

Rešenje:

In[62]:= Integrate[ 1, {x, -2, 2}, {y, x ^ 2 / 4, 8 / (x ^ 2 + 4)} ]

Out[62]= 4

23

Page 129: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

129

Zadaci za vežbu

I grupa

a) Odrediti količnik i ostatak pri deljenju polinoma 6 33 2 1x x polinomom

3 2.x x

b) Odrediti sumu oblika 4

1

3.

2,5i

i

c) Naći rešenja jednačine 3 2 1 0.x x

d) Odrediti graničnu vrednost 1

1 1lim .

ln 1x x x

e) Odrediti prvi i drugi izvod funkcije5 3( ) 4 2 3.f x x x x

f) Rešiti diferencijalnu jednačinu 2 . xy y e

g) Odrediti vrednost integrala 2

1.

6I dx

x x

II grupa

a) Odrediti količnik i ostatak pri deljenju polinoma 5 4 32 3 1x x x x polinomom

3.x

b) Odrediti sumu oblika 30

1

( 2) .i

i

x

c) Naći rešenja jednačine 3 23 3 0.x x x

d) Odrediti graničnu vrednost 0

1 1lim .

1xx x e

e) Odrediti izvod funkcije2 2( ) .x xf x e e

f) Rešiti diferencijalnu jednačinu 25 0. xy x y

g) Odrediti vrednost integrala

21 1

2 2

0 0

14 .

4

x

I x y dydx

III grupa

a) Odrediti NZD polinoma 3 22 5 6 2x x x

i

3 26 3 2 1.x x x

b) Odrediti sumu oblika 2

1 1

(2 ).i

i j

i j

c) Naći rešenja sistema jednačina

Page 130: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

130

2 3 8

3 2 5

1

x y z

x y z

x y z

d) Odrediti granične vrednosti

2

limx

tg x

i

2

limx

tg x

.

e) Odrediti drugi parcijalni izvod funkcije3 2( ) 10 8 4.f x x x x

f) Rešiti diferencijalnu jednačinu 2 24 2 0. y xyy x

g) Odrediti vrednost integrala

42

0

(1 tan ) .I x dx

IV grupa

a) Odrediti NZD polinoma 4 3 23 4 3x x x x

i 3 23 10 2 3.x x x

b) Odrediti proizvod oblika 5

2

1

3 .i

i

c) Naći rešenja sistema jednačina

2 2

2 3 4

3

x y z

x y z

x y z

d) Odrediti graničnu vrednost

2

20lim .

x

x

e x x

x

e) Odrediti prvi izvod funkcije1

( ) .ln

xf x

x x

f) Rešiti diferencijalnu jednačinu 21

2 .y y xx

g) Odrediti vrednost integrala

2

2

20

1.

1I dx

x

V grupa

a) Izračunati proizvod polinoma 2 2x i

4 22 6x x .

b) Odrediti proizvod oblika 5

2

1 1

3i

i j

j

c) Naći rešenja jednačine 4 24 3 0.x x

Page 131: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

131

d) Odrediti graničnu vrednost 0

2 5lim .

x x

x x

e) Odrediti prvi izvod funkcije2( ) 1.f x x x

f) Rešiti diferencijalnu jednačinu 2 ln .xy y y e x

g) Odrediti vrednost integrala 2

0

sin 2 .xI e x dx

VI grupa

a) Odrediti količnik i ostatak pri deljenju polinoma 3 22 3 1x x polinomom

2 1.x

b) Odrediti sumu oblika 5

1 1

(2 ).i

i j

i j

c) Naći rešenja sistema jednačina

5 1 3 13

6 10

11 113

6 4

x y

x y

d) Odrediti graničnu vrednost lim 1.x

x x

e) Odrediti prvi i drugi izvod funkcije ( ) .xf x e x

f) Rešiti diferencijalnu jednačinu 2 2 2 2( ) 0.x yx y y xy

g) Odrediti vrednost integrala 2

0

2.xI e dx

VII grupa

a) Odrediti količnik i ostatak pri deljenju polinoma 4 3 2 1x x x

polinomom 1.x

b) Odrediti sumu oblika 20

1

( 3) .i

i

x

c) Naći rešenja sistema jednačina

2 5 6

2 2 5

3 3 4 8

x y z

x y z

x y z

d) Odrediti graničnu vrednost 1

lim 1 .

x

x x

Page 132: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

132

e) Odrediti prvi izvod funkcije1

( ) .1

xf x

x

f) Rešiti diferencijalnu jednačinu cos .xy y x

g) Odrediti vrednost integrala 1 sin

.sin (1 cos )

xI dx

x x

VIII grupa

a) Odrediti NZS polinoma 3 22 3 4x x x

i 2( 1) .x

b) Odrediti sumu oblika 25

1

2.

5i

i

i

c) Naći rešenja sistema jednačina

2 1

2 1

2 2 1

x y z

x y z

x y z

d) Odrediti graničnu vrednost lim .x

x

e

x

e) Odrediti prvi i drugi parcijalni izvod funkcije3 2cos ln .yz x y y tgx x e y x

f) Rešiti diferencijalnu jednačinu 3 22 2 0. x y x y xy y

g) Odrediti vrednost integrala

4 3 2

5 4 3 2

3 5 10 5 1.

2 3 2

x x x xI dx

x x x x x

IX grupa

a) Odrediti faktore polinoma 3 7 6.x x

b) Odrediti sumu oblika2

1

1.

(1 )i i

c) Naći rešenja sistema jednačina

1 2 3 4

1 2 3 4

1 3 4

1 2 3 4

3 2 6

5 3 4 12

2 1

5 3 3 3

x x x x

x x x x

x x x

x x x x

d) Odrediti graničnu vrednost 0

ln(1 )lim .x

x

x

e) Odrediti parcijalni izvod funkcije ln( ) 2 3.z xy x y x

Page 133: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XI vežba – Simbolička izračunavanja

133

f) Rešiti diferencijalnu jednačinu 2 33 16 2 .y y x xy

g) Odrediti vrednost integrala 1 sin

.sin (1 cos )

xI dx

x x

X grupa

a) Odrediti NZD polinoma 3 7 6x x

i 3 22 5 6.x x x

b) Odrediti proizvod oblika 5

1 1

2 .i

i

i j

j

c) Odrediti rešenja jednačine 2 2 2( 2 ) 2( 2 ) 3.x x x x

d) Odrediti graničnu vrednost lim .x

x

x x x

e) Odrediti parcijalni izvod funkcije 2 2ln .z x x y

f) Rešiti diferencijalnu jednačinu 2 3( 1) 2 2 2 0.x y xy x x

g) Odrediti vrednost integrala

5

0

1( ) .xI e dx

x

Page 134: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 135: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Savladavanje načina iscrtavanja grafika funkcija

Upoznavanje sa parametarski zadatom krivom

Upoznavanje sa trodimenzionalnom grafikom

Page 136: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

136

Teorijske osnove za izradu vežbe

12.1. Dvodimenzionalna grafika

Osnovna funkcija za iscrtavanje grafika funkcija u paketu Mathematica je Plot, koja

iscrtava proizvoljnu funkciju jedne promenljive u zadatom intervalu (tabela 12.1).

Tabela 12.1. Iscrtavanje grafika funkcije

Funkcija u paketu Mathematica Opis

Plot[ f , {x, xmin, xmax}] Grafik funkcije f u zavisnosti od x u

intervalu [xmin, xmax]

Plot[{f1, f2, ... }, {x, xmin, xmax}] Crtanje više funkcija zajedno

Primer 12.1. Nacrtati grafik funkcije sin(x) za [0,2 ]x .

Rešenje:

In[1]:= Plot[Sin[x], {x, 0, 2Pi}]

Out[1]=

Primer 12.2. Nacrtati grafik funkcija sin(x), cos(x) za [0,2 ]x .

Rešenje:

In[2]:= Plot[{Sin[x], Cos[x] }, {x, 0, 2Pi}]

Out[2]=

Page 137: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

137

12.2. Opcije pri radu sa dvodimenzionalnom grafikom

Da bi korisnik sam podesio opcije pri iscrtavanju dvodimenzionalnih grafika koristi se

funkcija oblika

Plot[ f , {x, xmin, xmax}, opcija -> vrednost]

U tabeli 12.2 navedene su opcije koje se mogu podešavati u dvodimenzionalnom grafiku.

Tabela 12.2. Opcije pri crtanju dvodimenzionalnog grafika

Opcija Podrazumevana

vrednost

Opis

AspectRatio 1/GoldenRatio Odnos visine i širine grafika

Axes True Iscrtavanje koordinatnih osa

AxesLabel None Oznake za koordinatne ose

AxesOrigin Automatic Tačka u kojoj se seku koordinatne ose

Frame False Iscrtavanje okvira grafika

FrameLabel None Oznake za okvir

FrameTics Automatic Koordinate koje treba obeležiti na okviru

GridLines None Iscrtavanje pomoćnih linija

PlotJoined False Spajanje tačaka na grafiku

PlotLabel None Naslov grafika

PlotLegends None Legende za krive

PlotPoints 25 Najmanji broj tačaka u kojima se računa vrednost

funkcije

PlotRange Automatic Oblast grafika koji se prikazuje

PlotStyle Automatic Grafičke direktive za specificiranje stila svake krive

Ticks Automatic Koordinate koje treba obeležiti na koordinatnim

osama

Primer 12.3. Nacrtati grafik funkcije 2sin x za [0,3]x .

Rešenje:

In[3]:= Plot[Sin[x ^ 2], {x, 0, 3}, AxesLabel -> {"x", Sin[x ^ 2]}, PlotLabel -> "Grafik

funkcije"]

Out[3]=

Page 138: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

138

In[4]:= Plot[Sin[x ^ 2], {x, 0, 3}, Frame -> True, GridLines -> Automatic]

Out[4]=

12.3. Stilovi i boje

Način i sortiranje pojedinih krivih na grafiku zadaje se opcijom PlotStyle, koja sadrži listu

stilova za svoju vrednost (tabela 12.3). Stil je lista grafičkih kontrolnih funkcija koje

određuju izgled krive ili niza tačaka.

Tabela 12.3. Opcija PlotStyle

Primena stila u paketu Mathematica Opis

PlotStyle -> stil Stil koji se primenjuje na sve krive na grafiku

PlotStyle -> {{stil1}, {stil2}, ... }} Stilovi koji se primenjuju na pojedinačne krive

na grafiku

Grafičke kontrolne funkcije imaju efekat samo ako se navedu kao vrednosti opcija funkcije

PlotStyle (tabela 12.4).

Tabela 12.4. Grafičke kontrolne funkcije opcije PlotStyle

Grafičke kontrolne funkcije Opis

GrayLevel[i] Nijansa sivog između 0 (crno) i 1 (belo)

RGBColor[r, g, b] Boja određena crvenom, zelenom i plavom

komponentom, svaka između 0 i 1

Hue[h] Boja h iz spektra

Hue[h, s, b] Boja h, zasićenje s i osvetljenje b

PointSize Prečnik tačke zadat relativno u odnosu na

širinu celog grafika

AbsolutePointSize[d] Prečnik tačke u apsolutnim jedinicama

Thickness[r] Debljina linije u odnosu na širinu grafika

AbsoluteThickness[d] Debljina linije u apsolutnim jedinicama

Dashing[{r1, r2, ...}] Dužine segmenta za crtanje neprekidnih

linija zadate u odnosu na širinu grafika

AbsoluteDashing[{d1, d2, ...}] Dužine segmenata u apsolutnim jedinicama

Opacity Neprovidnost

Page 139: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

139

Primer 12.4. Nacrtati grafik funkcija sin(x), cos(x), tan(x) za [0,2 ]x .

Rešenje:

In[5]:= Plot[{Sin[x], Cos[x], Tan[x]},{x, 0, 2 Pi}, PlotStyle -> {Red, Dashed, Thick},

PlotLegends -> "Expressions"]

Out[5]=

Opcije koje utiču na boje celog grafika prikazane su u tabeli 12.5.

Tabela 12.5. Opcije za boju celog grafika

Opcije za boju celog grafika Opis

Background -> boja Boja za pozadinu grafika

DefaultColor -> boja Boja kojom se iscrtava grafik

ColorOutput -> GrayLevel Generisanje crno-bele slike na monitoru u boji

12.4. Iscrtavanje grafičkih primitiva

Rezultat grafičkih funkcija je objekat -Grafics-, koji sadrži sve podatke o nacrtanom

grafiku. Objekat -Grafics- se može ponovo prikazati na ekranu funkcijom Show. Za

iscrtavanje dvodimenzionalnih grafičkih slika koristi se funkcija oblika

Graphics[primitive, opcije]

Paket Mathematica sadrži funkcije za crtanje grafičkih primitiva (tabela 12.6).

Tabela 12.6. Iscrtavanje grafičkih primitiva

Funkcija u paketu Mathematica Opis

Point[{x, y}] Tačka na poziciji (x, y)

Line[{x1, y1}, {x2, y2}, ...] Linija kroz tačke {x1, y1}, {x2, y2}, ...

Rectangle[{xmin, ymin}, {xmax, ymax}] Crtanje pravougaonika

Polygon[{x1, y1}, {x2, y2}, ...] Crtanje poligona

Circle[{x, y}, r] Krug sa centrom u (x, y) i poluprečnikom r

Disc[{x, y}, r] Ispunjen disk sa centrom u (x, y) i poluprečnikom r

Page 140: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

140

Primer 12.5. Nacrtati krug sa centrom u (3, 4) i poluprečnikom r = 2 i elipsu sa centrom u

tački (0, 1) i poluosama a = 2 i b = 3.

Rešenje:

In[6]:= Show[Graphics[Circle[{3, 4}, 5]]]

In[7]:= Show[Graphics[Circle[{0, 1},{2, 3}]]]

Out[6]=

Out[7]=

12.5. Parametarski zadate krive

Za crtanje kriva zadatih parametraskim jednačinama ( ), ( ),x x t y y t a t b se koristi

ParametricPlot[{x[t], y[t]}, {t, a, b}]

Primer 12.6. Nacrtati cikloidu i spiralu

sin( 2 2 )

1 cos

x t tt

y t,

cos(0 4 )

sin

x u uu

y u u.

Rešenje:

In[8]:= ParametricPlot[{t + Sin[t], 1+Cos[t]}, {t, -2Pi, 2Pi}, AspectRatio-> Automatic]

Page 141: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

141

In[9]:= ParametricPlot[{u*Cos[u], u*Sin[u]}, {u, 0, 4Pi}, AspectRatio-> Automatic]

5 5 10

10

5

5

Out[9]= - Graphics -

12.6. Crtanje oblasti u ravni

Naredba za crtanje oblasti u ravni koja je određena datim uslovima

RegionPlot[uslovi, {x, xmin, xmax}, {y, ymin, ymax}].

Primer 12.7. Nacrtati oblast unutar centralnog kruga poluprečnika r = 2 ispod prave

1 x y . Uzeti oblast crtanja 2,2 , 2,2 x y .

Rešenje:

In[10]:= RegionPlot[x^2 + y^2 < 4 && x + y < 1,{x, -2, 2},{y, -2, 2}]

Out[10]=

Page 142: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

142

Primer 12.8. Nacrtati oblast unutar centralnog kruga poluprečnika r = 2 i izvan elipse 2 24 6 4 x y za 2,2 , 2,2 x y .

Rešenje:

In[11]:= RegionPlot[4 x^2 + 6 y^2 > 4 && x^2 + y^2 < 4,{x, -2, 2},{y, -2, 2}]

Out[11]=

12.7. Trodimenzionalna grafika

Umesto jedne promenljive u dvodimenzionalnom slučaju, ovde postoje dve promenljive:

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

U tabeli 12.7 navedeni su parametri koji se mogu podešavati u trodimenzionalnom grafiku.

Tabela 12.7 Opcije pri crtanju trodimenzionalnog grafika

Opcija Podrazumevana

vrednost

Opis

AmbientLight GrayLevel[0] Osvetljenje trodimenzionalnog grafika

Axes True Iscrtavanje kordinatnih osa

AxesLabel None Oznake za koordinatne ose

Boxed True Iscrtavanje grafika unutar kvadra

BoxRatios {1,1, .4} Odnos dimenzija stranica kvadra

FaceGrids None Iscrtavanje pomoćnih linija na stranama kvadra

Lighting True Za senčenje grafika

Mesh True Iscrtavanje mreže na grafiku

PlotLabel None Naslov grafika

PlotPoints 15 Broj tačaka u oba pravca u kojima se računa vrednost

funkcije

PlotRange Automatic Oblast grafika koja se prikazuje

PlotStyle Automatic Grafičke direktive za specificiranje stila svakog

oblika

Shading True Senčenje grafika

Page 143: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

143

Primer 12.9. Prikazati sliku paraboloida datog funkcijom 2 2 f x y i površi zadate

funkcijom 2 3 g x y za [ 5,5], [ 5,5]. x y

Rešenje:

In[12]:= Plot3D[{x ^ 2 + y ^ 2, 2 x + 3 y}, {x, -5, 5}, {y, -5, 5},

PlotStyle -> Directive[Blue, Opacity[0.6]], PlotPoints -> 25]

Out[12]=

U tabeli 12.8 navedene su trodimenzionalne grafičke primitive.

Tabela 12.8. Trodimenzionalne grafičke primitive

Funkcija u paketu Mathematica Opis

Point[{x, y, z}] Tačka sa koordinatama (x, y, z)

Line[{x1, y1, z1}, {x2, y2, z2}, ...] Linija kroz tačke {x1, y1, z1}, {x2, y2, z2}, ...

Polygon[{x1, y1, z1}, {x2, y2, z2}, ...] Crtanje poligona sa zadatom listom temena

Cuboid[{xmin, ymin, zmin},

{xmax, ymax, zmax}]

Crtanje paralelopipeda

Text[expr, {x, y, z}] Tekst na poziciji {x, y, z}

Cuboid[{x, y, z}] Jedinična kocka sa naspramnim temenima koje

imaju koordinate {x, y, z} i {x+1, y+1, z+1}

Sphere[{x, y, z}, r] Sfera sa centrom i poluprečnikom

Cylinder[{{xa, ya, za},{xb, yb, zb}},r] Valjak sa centrima bazisa i radijusom osnove

Cone[{{xa, ya, za},{xb, yb, zb}}, r] Kupa sa centrom bazisa, vrhom i radijusom

osnove

Primer 12.10. Na istoj slici, prikazati:

sferu sa centrom u tački O(0, 0, 0) i poluprečnika r = 1 i

kocku sa krajnjim temenima A(0, 0, 0) i B(1.5, 1.5, 1.5).

Rešenje:

In[13]:= sph = Graphics3D[{Red, Sphere[{0, 0, 0}, 1]}];

Page 144: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

144

cub = Graphics3D[{Blue, Cuboid[{0, 0, 0},{1.5, 1.5, 1.5}]}];

Show[sph, cub]

Primer 12.11. Na istoj slici, prikazati:

kosi valjak sa centrom jednog bazisa u tački O (0, 0, 0), drugog u tački A (1, 1, 2) i

poluprečnika r = 1,

kupu sa centrom osnove u tački A(2, 2, 0), vrhom B(-1, -1, 2) i poluprečnikom

osnove r = 1.

Rešenje:

In[14]:= a = Graphics3D[{Blue, Cylinder[{{0, 0, 0},{1, 1, 2}}, 1]}]

b = Graphics3D[{Red, Cone[{{2, 2, 0},{-1, -1, 2}}, 1]}]

Show[a, b]

Page 145: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

145

Svi grafici rađeni u paketu Mathematica mogu biti eksportovani u razli;itim formatima:

kao bitmape (BMP), grafički metafajlovi (EMF ili WMF), JPEG ili PostScript datoteke

(EPS).

12.8. Crtanje oblasti u prostoru

Za crtanje oblasti u prostoru koristi se naredba

RegionPlot3D[uslovi,{x, xmin, xmax},{y, ymin, ymax},{z, zmin, zmax}].

Primer 12.12. Nacrtati oblast u prostoru zadatu nejednakostima 2 2 2 1 x y z i

2 2 2 x y z za 1,1 , 1,1 , 1,1 x y z .

Rešenje:

In[15]:= RegionPlot3D[x ^ 2 + y ^ 2 + z ^ 2 < 1 && x ^ 2 + y ^ 2 < z ^ 2, {x, -1 , 1},{y, -1,

1}, {z, -1, 1}, PlotRangeAll]

Primer 12.13. Nacrtati oblast u prostoru zadatu nejednakostima 1, 1 x y i 1z za

1,1 , 1,1 , 1,1 x y z .

Rešenje:

In[16]:= RegionPlot3D[Abs[x] < 1 && Abs[y] < 1 && Abs[z] < 1 && x ^ 2 + y ^ 2 >

z ^ 2, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}, PlotRangeAll]

Page 146: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

146

12.9. Prikazivanje skupova podataka i njihova analiza

Inženjeri u praksi često dolaze do dvodimenzionalnih i trodimenzionalnih skupova

podataka putem merenja. Njihovo ucrtavanje omogućavaju naredbe ListPlot i ListPlot3D.

Primer 12.14. Formirati tabelu podataka za funkciju /2( ) xf x e za vrednosti argumenta

1,2,...,10x i ucrtati podatke, kao i približan grafik funkcije.

Rešenje:

In[17]:= t = Table[{n,Exp[-n/2]}, {n, 1, 10}]

g1 = ListPlot[t]

g2 = ListPlot[t, Joined {True}, PlotRange All]

Show[g1, g2]

Page 147: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

147

Primer 12.15. Formirati tabelu podataka za funkciju 2( , ) sin( ) f x y x y za vrednosti

argumenata , 0,0(0,1)3,0x y i ucrtati podatke, kao i približan grafik funkcije.

Rešenje:

In[18]:= tab = Table[{x, y, Sin[x + y ^ 2]},{x, 0, 3, 0.1},{y, 0, 3, 0.1}];

data = Flatten[tab,1];

ListPointPlot3D[data, AxesLabel {x, y, z}]

ListPlot3D[data, AxesLabel {x, y, z}]

Plot3D[Sin[x + y ^ 2],{x, 0, 3},{y, 0, 3}, AxesLabel {x, y, z}]

Page 148: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

148

Zadaci za vežbu

I grupa

Nacrtati grafik funkcije

2

2

9( )

4

xf x

x

za [ 3,3].x

II grupa

Nacrtati grafik funkcije 24y x za [ 2,2].x

III grupa

Nacrtati grafike funkcija 3 8y x i 2 5y x za [ 5,5].x

IV grupa

Nacrtati grafike funkcija siny x i

2

10

xy za [0,2 ].x

V grupa

Nacrtati krive zadate parametarskim jednačinama

sin 2 ,2 2 .

tan ,

x t tt

y t t

VI grupa

Nacrtati grafik funkcije 3 3 2y x x za [ 5,5].x

VII grupa

Nacrtati grafik funkcije

2

2

4

1

xy

x

za [ 5,5].x

VIII grupa

Nacrtati grafik funkcije 5 33 10 7y x x za [ 5,5].x

Page 149: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XII vežba – Grafika

149

IX grupa

Nacrtati grafik funkcija 3( )f x x ,

21( ) 1

2g x x za [ 10,10]x .

X grupa

Nacrtati krive zadate parametarskim jednačinama

sin 2 ,2 2 .

sin3 ,

x t tt

y t t

Page 150: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 151: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa upravljačkim strukturama

Implementacija upravljačkih struktura

Page 152: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

152

Teorijske osnove za izradu vežbe

13.1. Uslovni izrazi

U paketu Mathematica uslovni izrazi If-Then i If-Then-Else predstavljaju pozive funkcija

(tabela 13.1).

Tabela 13.1. Uslovni izrazi

Funkcija u paketu Mathematica Opis

If[test, direktiva]

Izvršava se direktiva ako test ima

vrednost True

If[test, direktiva, alternativa] Izvršava se direktiva ako test ima

vrednost True, inače se izvršava

alternativa

Primer 13.1. Neka je definisana funkcija 1, 0

( ) .1, 0

xf x

x

Naći f(10).

Rešenje:

In[1]:= f[x_] := If[x > 0, 1, -1]; f[10]

Out[3]= 1

Za testiranje većeg broja uslova koriste se funkcije Which i Switch (tabela 13.2).

Tabela 13.2. Funkcije za testiranje više uslova

Funkcija u paketu Mathematica Opis

Which[test1, vrednost1, test2, vrednost2, ...]

Evaluira se redom test1,test2,... Pri čemu

je rezultat vrednost asocirana sa prvim

testi koji je True

Switch[izraz, form1, vrednost1, form2,

vrednost2, ...]

Upoređuje se izraz sa svakim od izraza

form1,,..., a rezultat je vrednost izraza

vrednosti, koji je asociran sa prvim

izrazom formi koji se slaže sa izraz

Switch[izraz, form1, vrednost1, form2,

vrednost2,..., def]

Koristi se def kao vrednost koja se vraća

ako se nijedan od izraza formi ne slaže sa

izrazom

Svaki od izraza vrednost1,vrednost2,... predstavlja jedan izraz ili sekvencu izraza koji su

razdvojeni znakom ;.

Page 153: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIII vežba – Upravljačke strukture

153

Primer 13.2. Neka je definisana funkcija

sin, 0,

( ) 1, 0,

1, 0.

x

xx

x

f x x

ex

x

Naći f(-1) i f(1).

Rešenje:

In[2]:=

g[x_]:=Which[

x < 0, Sin[x] / x,

x == 0,1,

x > 0, (Exp[x] - 1) / x]

g[-1]//Print; g[1]//Print;

Out[3]= Sin[1]

Out[3]= -1+E

Primer 13.3. Na dati izraz, primeniti:

svođenje na jedan razlomak, ukoliko je zbir dva razlomka;

razdvajanje na elementarne razlomke, ako je proizvod dva razlomka.

Primeniti na izraze 1

1 1

x xa

x x i

2 1

1 1

a

x x.

Rešenje:

In[4]:= f[a_] := Switch[a, _Plus, Together, _Times,Apart];

a = (1 + x) / (1 - x) + x / (1 + x);

f[a]

f[a][a]

b = 2 / ((1 - x) (1 + x));

f[b]

f[b][b]

Out[5]= Together (-1-3 x)/((-1+x) (1+x))

Out[5]= Apart -1/(-1+x)+1/(1+x)

Page 154: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

154

Primer 13.4. Neka je dat broj x.

Ako je celi broj, naći njegove činioce;

Ako je racionalan, njegovu približnu decimalnu vrednost;

Ako je realan, njegov racionalni oblik;

Ako je kompleksan, njegov realni deo.

Isprobati na brojevima 18, 2/3, 1.2, 7+2i.

Rešenje:

In[6]:= switchfun[x_] := Switch[x, _Integer,FactorInteger[x], _Rational,N[x],

_Real,Rationalize[x], _Complex,Re[x]];

switchfun[18]

switchfun[2/3]

switchfun[1.2]

switchfun[7 + 2 i]

Out[6]= {{2,1},{3,2}}

Out[7]= 0.666667

Out[8]= 6/5

Out[9]= 7

Primer 13.5. Neka je definisana funkcija

1, ( , ) ,

( , ) 0, ( , ) * ,

1, ( , ) .

y

f x y x y

r x y f x y x y

f x y x

Isprobati za a * b.

Rešenje:

In[10]:= r = Switch[a * b,

x_ + y_, -1,

x_ * y_, 0,

x_ ^ y_, 1]

Out[10]= 0

Page 155: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIII vežba – Upravljačke strukture

155

13.2. Ciklusi

U paketu Mathematica postoje upravljačke strukture kojima se definiše višestruko

ponavljanje određene sekvence naredbi.

Brojačke petlje su petlje kod kojih postoji brojač kojim se upravlja izvršenjem petlje.

13.2.1. Do ciklusi

Do ciklusi se koriste za definisanje brojačkih programskih ciklusa (tabela 13.3).

Tabela 13.3. Do ciklusi

Funkcija u paketu Mathematica Opis

Do[izraz, {i, imax}]

Evaluirati izraz za svako i, pri čemu i

uzima vrednosti iz skupa {1, ..., imax}

Do[izraz,{i, imin, imax, di}]

Evaluirati izraz sa vrednostima i od imin

do imax sa korakom di

Do[izraz, {n}] Evaluacija izraza izraz n puta

Primer 13.6. Odrediti sumu prvih 100 prirodnih brojeva.

Rešenje:

In[11]:= sum = 0;

Do[sum += i, {i, 100}];

sum

Out[11]= 5050

13.2.2. While i For ciklus

Za razliku od Do petlje koja se uvek izvršava zadati broj puta, broj izvršavanja petlji For i

While je određen nekim izlaznim kriterijumom. Te petlje se izvršavaju samo dok određeni

uslov ima vrednost True.

Opšti oblik While ciklusa je

While[test, telo]

gde se telo izvršava sve dok je test =True.

Opšti oblik For ciklusa je

For[start, test, inkr, telo]

gde se izvršava start, zatim respektivno evaluira telo i inkr sve dok test ne postane False.

Page 156: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

156

Primer 13.7. Odrediti vrednost sume

1 2 10S ... .

1 2 2 3 10 11

Rešenje:

In[12]:= For[i = 1; sum = 0, i < 11, i++, sum += i / (i + i + 1)];

sum

Out[12]= 64157087/14549535

Primer 13.8. Napisati program za rešavanje jednačine 5 3- 2 +10 0x x Njutnovim

iterativnim postupkom. Početno rešenje x0 i tačnost dati su na ulazu. Na izlazu štampati

krajnje rešenje.

Napomena:

Za Njutnov metod važe sledeća pravila:

početni uslov: 0 ,x

iterativna zakonitost 1 '

( ), 0,1,

( )

kk k

k

f xx x k

f x ,

uslov kraja 1 .k kx x

Rešenje:

In[13]:= f[x_] := x ^ 5 - 2 x ^ 3 + 10

eps = .00001;

xi = 50;

While[Abs[f[xi]] > eps, xi = N[xi - f[xi] / f'[xi]]]

xi

Out[13]= -1.87523

Page 157: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIII vežba – Upravljačke strukture

157

Zadaci za vežbu

I grupa

Neka je definisana funkcija

2 , 1,

( ) 2 1, 1 2,

1, 2,

y y

f y y y

y y

gde je 2 1.y x x

Za x = 10 izračunati vrednost funkcije f.

II grupa

Iterativno rešiti sistem jednačina

2

2

2 5 1 0

1,6 0,

x xy x

x y

sa tačnošću 410 , koristeći formule

1 1

5 1, 1,6.

2

n n

n n n

x yx y x

Iterativni proces završiti kada budu istovremeno ispunjeni uslovi

1n nx x i 1n ny y .

Na izlazu štampati vrednosti rešenja sistema. Na ulazu su date početne vrednosti 0x i 0y .

III grupa

Napisati program za rešavanje jednačine 10 0xf e x

metodom sečice. Početna

rešenja x0 i x1 i dati su na ulazu. Na izlazu štampati krajnje rešenje.

Napomena: Za metodu sečice važe sledeća pravila:

definisanje funkcije,

početni uslovi: 0 1, ,x x

Page 158: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

158

iterativna zakonitost

11

1

, 1,2,k kk k k

k k

x xx x f x k

f x f x

,

uslov kraja 1 .k kx x

IV grupa

Za x = 1(0,5)5 izračunati vrednost funkcije f(x) zadate u obliku

4

3

1( ) .

5 6

xf x

x

V grupa

Izračunati i štampati vrednosti prvih 10 Lagerovih polinoma korišćenjem rekurentnih

formula:

0

1

2

1 1

1,

1 ,

2 1 ,n n n

L x

L x x

L x n x L x n L x

za učitanu vrednost promenjive x.

VI grupa

Napisati metodu kojom se izračunava vrednost x a , po formuli

0 1

1

11, ( 1,2, ).

2n n

n

ax a x x n

x

Proces prekinuti kada je 1 .n nx x U glavnom programu uneti vrednost za a i ε i naći

vrednost korena.

VII grupa

Neka je definisana funkcija

sin(1/ ), 0( )

, 0

t tf t

t t

Za t = 10 izračunati vrednost funkcije f.

Page 159: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIII vežba – Upravljačke strukture

159

VIII grupa

Neka je definisana funkcija

, 0 1,

( ) 1, 1 2,

3 , 2 3.

x x

f x x

x x

Za x = 10 izračunati vrednost funkcije f.

IX grupa

Neka je definisana funkcija

2

2

1, 0

1 ,0 3( )

2 15 25,3 5

15 2 , 5

x x

x xf x

x x x

x x

Za x = 3,5 izračunati vrednost funkcije f.

X grupa

Tabelirati funkciju

2( , , ) ln sin cos2

xx

y a b x a e b arctg

za sve kombinacije parametara: a = 0,1(0,01)0,15; b = 0,15(0,01)0,19; x = 0,3(0,15)0,6.

Page 160: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 161: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Upoznavanje sa pojmom potprograma

Implementacija potprograma

Page 162: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

162

Teorijske osnove za izradu vežbe

Potprogrami se definišu kao programske celine koje se zatim po potrebi pozivaju, bilo u

okviru programa u kome su definisani, bilo u drugim programima.

Osobine potprograma:

1. Svaki potprogram ima jednu ulaznu tačku.

2. Programska jedinica koja poziva potprogram prekida svoju aktivnost sve dok se ne

završi pozvani potprogram. To znači da se u jednom trenutku izvršava samo jedan

potprogram.

3. Po završetku potprograma upravljanje tokom izvršenja se prenosi na pozivajuću

programsku jedinicu, na mestu iza poziva potprograma.

Za svaki potprogram su karakteristična sledeća četiri elementa:

ime potprograma,

lista imena argumenata,

telo potprograma,

okruženje u kome je potprogram definisan.

14.1. Funkcijski potprogram

Funkcijski potprogram se definiše naredbom

Function[{x1, x2, …}, telo potprograma].

In[1]:= Function[x, x ^ 2][z]

Out[1]= z^2

In[2]:= Function[{x, y},Sqrt[x2 + y

2]][3, 4]

Out[2]= 5

14.2. Opšti potprogram

U paketu Mathematica koristi se i opšti potprogram koji se naziva modul. Modul je

posebno označeni deo programa koji se definiše naredbom

Module[{promenljiva1, promenljiva2, ...}, program]

ili

Module[{promenljiva = vrednost, ...}, program]

Page 163: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIV vežba – Potprogrami

163

Izlazak iz funkcije sa vraćanjem vrednosti se zadaje naredbom

Return[izraz].

Ova naredba vraća vrednost izraza kao rezultat tekuće funkcije i zatim se kontrola

programa prenosi u pozivajuću programsku jedinicu.

U modulima se imena promenljivih tretiraju kao lokalne. Međutim, ponekad je potrebno da

promenljiva bude globalna, ali da dobije lokalnu vrednost.

U paketu Mathematica globalne i lokalne promenljive postoje unutar strukture Block

(tabela 14.1).

Tabela 14.1. Block naredbe

Funkcija u paketu Mathematica Opis

Block[{x, y, ...}, procedura]

Blok sa lokalnim vrednostima simbola x,

y, ...

Block[{x = x0, y = y0, ...}, procedura] Postavljanje početnih vrednosti za x, y, ...

Primer 14.1. Napisati modul za nalaženje faktorijela broja.

Rešenje:

In[1]:= faktorijel[n_] := Module[{i = 1, fac = 1},

While [i < n, i = i + 1; fac = fac * i]; fac];

faktorijel[7]

Out[1]= 5040

Primer 14.2. Napisati modul koji za uređeni par celih brojeva vraća onoliko jedinica koliki

im je zbir, ako je on pozitivan. Probati za parove brojeva (-1,-2) i (3,2).

Rešenje:

In[2]:= g[{m_, n_}] := Module[

{k}, k = m + n;

If[k <= 0, Return["Zbir brojeva nije pozitivan"]];

Table[1, {i, 1, k}]];

g[{-1, -2}]

g[{3, 2}]

Out[2]= Zbir brojeva nije pozitivan {1,1,1,1,1}

Page 164: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

164

Primer 14.3. Napisati modul za Newtonov metod za rešavanje jednačina. Omogućiti

naknadno zadavanje funkcije, argumenta i početne vrednosti.

Probati na jednačini 5 4cos(2 ) 1 0 x x za početnu vrednost x = -1.

Rešenje:

In[3]:=

newton[f_, x_, xp_]:=

(* f - funkcija; x - argument; xp - početna vrednost *)

Module[{},

g/:g:= Function[x, f];

x = 0; y = xp;

While[Abs[x - y] > 10^(-5),

x = y; y = x - g[x] / D[g[z], z]/.z -> x;

Print[N[y, 16]]]]

newton[5 x + 4 Cos[2 x] + 1, x, -1]

Out[3]= -0.55530

14.3. Rekurzivna izračunavanja

Rekurzivna izračunavanja izvršavaju se naredbom

f[x_] := f[x] = izraz.

Primer 14.4 Napisati rekurziju za izračunavanje članova Fibonačijevog niza

0 1 1 11, ( 2,3,...). n n nF F F F F n

Rešenje:

In[2]:=

F[0] = F[1] = 1;

F[n_] := F[n] = F[n - 1] + F[n - 2];

Table[F[i], {i, 0, 9}]

Out[2]= {1,1,2,3,5,8,13,21,34,55}

Page 165: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIV vežba – Potprogrami

165

Zadaci za vežbu

I grupa

Napisati potprogram kojim se izračunava i štampa vrednost nx a (pri čemu je a > 0),

primenom iterativnog postupka

0

1a nx

n

,

n 1

1

( -1)

, 0,1,2,...

i

ii

an x

xx i

n

Izračunavanje prekinuti kada je 1i ix x , gde je zadata tačnost.

II grupa

Napisati potprogram za izračunavanje funkcije f(x) zadate u obliku

2

3

1( ) .

1 5

xf x

x

U glavnom programu za x = 1(0,5)5 štampati vrednosti x i f(x).

III grupa

Napisati potprogram za tabeliranje funkcije:

3

2 3

x a y xz

x x a y ,

pri čemu je: 1(1)4 , 0,1(0,001)0,15, 0,5(0,05)0,8.x a y

IV grupa

Napisati potprogram kojim se izračunava i štampa rastojanje između dve tačke čije su

koordinate date na ulazu.

Napomena: Za izračunavanje rastojanja između dve tačke koristi se formula

2 2

1 1 2 2( ) ( ) .d x y x y

Page 166: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

166

V grupa

Napisati potprogram kojim se pomoću rekurzije izračunava suma geometrijskog niza

dužine n čiji je prvi član a, a koeficijent q.

Napomena: Suma geometrijskog niza određuje se na sledeći način

2 1 2

11 ... 1 (1 ... ) 1 .

n n

n nS q q q q q q qS

VI grupa

Napisati potprogram za izračunavanje binomnog koeficijenta.

Napomena: Binomni koeficijent se izračunava na osnovu sledeće formule:

( 1) ... ( 1) !.

! !( )!

n n n n k n

k k k n k

VII grupa

Napisati potprogram kojim se za dato x i n izračunava ex po formuli

1

.!

knx

k

xe

k

VIII grupa

Napisati potprogram za izračunavanje vrednosti

20

sin cos

1k

x xS x

k

za date vrednosti x i tačnost . Sumiranje prekinuti kada je poslednje dodata vrednost po

apsolutnoj vrednosti .

IX grupa

Napisati potprogram za izračunavanje vrednosti 171/4

primenom iterativne formule

1 3

1 17( ), 0,1,

4 i i i

i

x x x ix

ako je 0 2x . Tačnost proračuna je 0,00005.

Page 167: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XIV vežba – Potprogrami

167

X grupa

Napisati potprogram kojim se određuje najmanji pozitivni koren transcedentne jednačine

sinA

xx

za zadatu vrednost parametra A. Za izračunavanje korena primeniti iterativni postupak

1 , 0,1,2,...sin

i

i

Ax i

x

gde je 0 2x . Iterativni postupak prekinuti kada bude ispunjen uslov

1i ix x ,

gde je zadata tačnost.

Page 168: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski
Page 169: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Cilj vežbe

Primena stečenog znanja

Rešavanje praktičnih problema iz matematike

Page 170: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

170

15.1. Brojni sistemi

Podrazumeva se da korisnik softvera Mathematica zapisuje brojeve u dekadnom brojnom

sistemu.

Cifre celog broja možemo zapisati kao niz

IntegerDigits[n] - niz dekadnih cifara celog broja n

Na primer, IntegerDigits[1234135634] kao rezultat daje {1, 2, 3, 4, 1, 3, 5, 6, 3, 4}

Naredba kojom se dekadni broj x zapisuje kao broj u brojnom sistemu sa osnovom b glasi

BaseForm[x, b]

Primer 15.1. Zapisati dekadni broj 37 u brojnom sistemu sa osnovom 2.

Rešenje:

In[1]:= BaseForm[37, 2]

Out[1]//BaseForm= (100101)2

Obrnuto, broj iz osnove b se vraća u dekadni oblik naredbom

b^^y

Primer 15.2. Zapisati broj 100101 iz brojnog sistema sa osnovom 2 u dekadni sistem.

Rešenje:

In[2]:= 2^^100101

Out[2]= 37

Cifre u osnovama većim od 10, se označavaju po alfabetu

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, ...}

Primer 15.3. Zapisati broj 1234135634 iz dekadnog brojnog sistema u heksadekadni

sistem.

Rešenje:

In[3]:=BaseForm[1234135634,16]

Out[3]= 498f6a5216

Page 171: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

171

Cifre celog broja n u osnovi b možemo zapisati kao niz

IntegerDigits[n, b]

Primer 15.4. Zapisati cifre celog broja 1234135634 u osnovi 16.

Rešenje:

In[4]:=IntegerDigits[1234135634,16]

Out[4]= {4, 9, 8, 15, 6, 10, 5, 2}

15.2. Inverzne funkcije

Za funkcije f(x) i g(x) se kaže da su inverzne funkcije ako važi

f(g(x)) = g(f(x)) = x.

Grafici inverznih funkcija su simetrični oko linije y = x.

Naredbom

Composition[f1, f2, ..., fn, x]

izračunava se kompozicija oblika

1 2 2( )( ) ( ( ( ( )))).n nf f f x f f f x

Primer 15.5. Pokazati da su funkcije 1 2

( )4

xf x

x i

4 1( )

2

xg x

x inverzne fukcije.

Rešenje:

In[5]:= f[x_] = (– 1 – 2 x) / (– 4 + x) ;

g[x_] = (4 x – 1) / (x + 2);

f[g[x]]

Out[5]=

2( 1 4 )1

21 4

42

x

xx

x

In[6]:= Simplify[f[g[x]]]

Out[6]= x

In[7]:= Simplify[g[f[x]]]

Out[7]= x

In[8]:= Plot[{f[x],g[x],f[g[x]]},{x, -10,10}]

Page 172: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

172

Out[8]=

10 5 5 10

20

10

10

20

15.3. Dvostruki integral

15.3.1. Dvostruki integral nad pravougaonikom

Neka je f neprekidna funkcija definisana nad pravougaonikom

, , , | , . P a b c d x y a x b c y d Dvostruki integral funkcije f nad

pravougaonikom P je

( , ) ( , ) ( , ) . b d d b

P a c c a

f x y dxdy f x y dxdy f x y dxdy

U paketu Mathematica koriste se naredbe oblika

Integrate[f[x, y], {y, c, d}, {x, a, b}]

ili

NIntegrate[f[x, y], {y, c, d}, {x, a, b}]

Primer 15.6. Izračunati dvostruki integral funkcije 2( , ) xyf x y ye nad pravougaonikom

1,2 1,0 . P

Rešenje:

Za rešavanje zadatog dvostrukog integrala

0 2

2 2

1 1

xy xy

P

ye dxdy ye dxdy koristimo

naredbu

In[9]:= Integrate[y Exp[2 x y], {y, 1, 2}, {x, -1, 0}]

Page 173: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

173

Out[9]=4 2

1 1 12

4 e e

In[10]:= NIntegrate[y Exp[2 x y], {y, 1, 2}, {x, -1, 0}]

Out[10]= 0.470745

15.3.2. Dvostruki integral nad proizvoljnom oblasti u 2

Razlikujemo sledeća dva osnovna slučaja:

1) Neka je oblast integraljenja data sa

1 2, | , ( ) ( ) , A x y a x b h x y h x

gde su h1 i h2 realne funkcije definisane nad intervalom ,a b za koje važi

1 2( ) ( ) . c h x h x d Tada je dvostruki integral nad A

2

1

( )

( )

( , ) ( , ) . h xb

Aa h x

f x y dxdy f x y dydx

2) Neka je oblast integraljenja data sa

1 2, | , ( ) ( ) , A x y c x d h y x h y

gde su h1 i h2 realne funkcije definisane nad intervalom ,c d za koje važi

1 2( ) ( ) . a h y h y b Tada je dvostruki integral nad A

2

1

( )

( )

( , ) ( , ) . h yd

Ac h y

f x y dxdy f x y dxdy

Primer 15.7. Izračunati dvostruki integral funkcije ( , ) 2 3 f x y x y nad oblasti

ograničenoj parabolama 23y x i

22 y x .

Rešenje:

In[11]:= Solve[3x ^ 2== 2 + x ^ 2]

Out[11]=

In[12]:= Plot[{3x ^ 2, 2 + x ^ 2}, {x, –1, 1}]

Page 174: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

174

Out[12]= 1.0 0.5 0.5 1.0

0.5

1.0

1.5

2.0

2.5

3.0

Date parabole se seku u tačkama (-1, 3) i (1, 3), pa je oblast integraljenja

2 2, | 1 1,3 2 A x y x x y x

i sledi 2

2

1 2

1 3

(2 3 ) (2 3 ) .

x

Ax

x y dxdy x y dy dx

In[13]:= NIntegrate[2 x - 3 y, {x, -1, 1}, {y, 3x ^ 2, 2 + x ^ 2}]

Out[13]= -11.2

15.3.3. Polarni koordinatni sistem

Veza između pravouglog i polarnog koordinatnog sistema je data sa cosx r i

siny r , gde je 2 2 , 0,2 . r x y

Neka je funkcija f neprekidna nad oblasti A iz 2

koja je u polarnim koordinatama data sa

*

1 2, | , ( ) ( ) , A r h r h

tada za dvostruki integral funkcije f nad A važi

2

1

( )

( )

( , ) ( cos , sin ) .

h

Ah

f x y dxdy f r r rdrd

Page 175: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

175

Primer 15.8. Izračunati dvostruki integral funkcije 2 2( , ) f x y x y nad oblasti

ograničenoj kružnicom 2 2 2 . x y y

Rešenje:

In[14]:= RegionPlot[{x ^ 2 + y ^ 2 == 2 y}, {x, –1, 1}, {y, 0, 2}]

Out[14]=

Koordinatu r dobijamo uvođenjem smene cosx r i siny r , tj. iz

2 2( cos ) ( sin ) 2 sin r r r

sledi ( 2sin ) 0 r r i dobijamo 0,2sin , 0, . r

Oblast integraljenja je

* , | 0 2sin ,0 2 A r r

i sledi 2sin

2 2 2 2

0 0

( cos ) ( sin ) .

Ax y dxdy r r rdrd

In[15]:= NIntegrate[Sqrt[(r Cos[t]) ^ 2 + (r Sin[t]) ^ 2] r, {t, 0, Pi}, {r, 0, 2 Sin[t]}]

Out[15]= 3.55556

Page 176: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

176

15.4. Trostruki integral

Neka je f neprekidna funkcija definisana nad paralelopipedom , , , . P a b c d u v

Trostruki integral funkcije f nad paralelopipedom P je

( , , ) ( , , ) . b d v

Pa c u

f x y z dxdydz f x y z dxdydz

U paketu Mathematica koriste se naredbe oblika

Integrate[f[x, y, z], {x, a, b}, {y, c, d}, {z, u, v}]

ili

NIntegrate[f[x, y, z], {x, a, b}, {y, c, d}, {z, u, v}]

Primer 15.9. Izračunati trostruki integral funkcije 2( , , ) f x y z xy z nad paralelopipedom

1,1 2,3 0,1 . P

Rešenje:

Za rešavanje zadatog trostrukog integrala

1 3 1

2 2

1 2 0

Pxy zdxdydz xy zdxdydz koristimo

naredbu

In[16]:= NIntegrate[x y ^ 2 z, {x, -1, 1}, {y, 2, 3}, {z, 0, 1}]

Out[16]= 0

15.4.1. Trostruki integral nad proizvoljnom oblasti u 3

Razlikujemo sledeća tri osnovna slučaja:

1) Neka je oblast integraljenja data sa

1 2, , | ( , ) , ( , ) ( , ) , xyA x y z x y O x y z x y

gde je Oxy oblast u xy-ravni, a ϕ1 i ϕ2 su realne funkcije definisane nad Oxy. Tada je trostruki

integral nad A

Page 177: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

177

2

1

( , )

( , )

( , , ) ( , , ) .

xy

x y

A Ox y

f x y z dxdydz f x y z dz dxdy

2) Neka je oblast integraljenja data sa

1 2, , | ( , ) , ( , ) ( , ) , xzA x y z x z O x z y x z

gde je Oxz oblast u xz-ravni, a φ1 i φ2 su realne funkcije definisane nad Oxz. Tada je trostruki

integral nad A

2

1

( , )

( , )

( , , ) ( , , ) .

xz

x z

A Ox z

f x y z dxdydz f x y z dy dxdz

3) Neka je oblast integraljenja data sa

1 2, , | ( , ) , ( , ) ( , ) , yzA x y z y z O y z x y z

gde je Oyz oblast u yz-ravni, a ψ1 i ψ2 su realne funkcije definisane nad Oyz. Tada je

trostruki integral nad A

2

1

( , )

( , )

( , , ) ( , , ) .

yz

y z

A Oy z

f x y z dxdydz f x y z dx dydz

Primer 15.10. Izračunati trostruki integral funkcije 2 2( , , ) 1 f x y z x y nad oblasti

3A koja je ograničena cilindrom 2 2 1, x y konusom

2 21 z x y i xy-ravni.

Rešenje:

Oblast integraljenja je oblika

2 2, , | ( , ) ,0 1 , xyA x y z x y O z x y

gde je Oxy projekcija cele oblasti na xy-ravan i sledi 2 21

2 2 2 2

0

( 1) ( 1) .

xy

x y

A Ox y dxdydz x y dz dxdy

Uvođenjem polarnih koordinata cosx r i siny r , pri čemu je

0,1 , 0,2 , r dvostruki integral postaje

Page 178: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

178

2 1

2 2 2 2 2

0 0

1 1 ( 1)(1 ) .

xyO

x y x y dxdy r r rdr d

In[17]:= NIntegrate[(r ^ 2 + 1) (1 + r) r, {t, 0, 2 Pi}, {r, 0, 1}]

Out[17]= 8.06342

15.4.2. Određivanje zapremine trostrukim integralom

Ako je A ograničena oblast u 3, tada se zapremina date oblasti može odrediti pomoću

trostrukog integrala na sledeći način

( ) . AV A dxdydz

Primer 15.11. Izračunati zapreminu regiona nad oblasti 3A koja je ograničena

funkcijama 2 24 z x y i 2 . z x

Rešenje:

In[18]:= p1 = Plot3D[{4 - x^2 - y^2, 2 - x}, {x, -2, 2}, {y, -2, 2}]

p2 = ContourPlot[4 - x^2 - y^2 - (2 - x) == 0, {x, -2, 2}, {y, -2, 2}]

Show[GraphicsRow[{p1, p2}]]

Out[18]=

Page 179: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

179

Out[19]= 2 1 0 1 2

2

1

0

1

2

In[20]:= RegionPlot3D[2-x<=z<=4-x^2-y^2,{x,-2,2},{y,-2,2}, {z,-4,4}]

Out[20]=

Zapremina tela je

2

2

2 2

3 1 19 4

2 2 22 2

3 1 19 4

2 2 2

( ) 4 2

( ) 4 2

xyA O

y

y

V A dxdydz x y x dxdy

V A x y x dxdy

In[21]:= NIntegrate[(4 - x^2-y^2) - (2 - x), {y, -3/2, 3/2}, {x, 1/2 - 1/2 Sqrt[9 - 4 y^2], 1/2

+ 1/2 Sqrt[9 - 4 y^2]}]

Out[21]= 7.95216

Page 180: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

180

15.5. Krivolinijski integral

15.5.1. Krivolinijski integral I reda

Krivolinijski integral funkcije f duž krive c je

( , ) .c f x y ds

Krivolinijski integral realne funkcije dve promenljive f duž krive c parametarski date kao

( ) ( ( ), ( ))c t x t y t , kada , t , izračunavamo na sledeći način

2 2

( , ) ( ( ), ( )) ( ) ( ) ,

cf x y ds f x t y t x t y t dt

gde je 2 2

( ) ( ) ds x t y t dt element dužine luka krive, a integral sa desne strane

Rimanov određeni integral.

Primer 15.12. Izračunati krivolinijski integral funkcije3

( , )4 3

xf x y

y nad krivom c

parametarski zapisane kao 2( ) ( , 1), c t t t pri čemu 1,2 t , tj. parametrizovana je sa

( ) x t t i 2( ) 1 y t t za 1,2 . t

Rešenje:

Traženi krivolinijski integral je oblika

2

2 2

1

( , ) ( , 1) 1 4 .

cf x y ds f t t t dt

In[22]:= f[x_, y_] = 3 x / Sqrt[4 y - 3]

x[t_] = t

y[t_] = t ^ 2 + 1

fx = D[x[t], t]

fy = D[y[t], t]

s1 = Simplify[Sqrt[fx ^ 2 + fy ^ 2]]

NIntegrate[f[t, t ^ 2 + 1] s1,{t, -1, 2}]

Out[22]= 4.5

Page 181: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

181

15.5.2. Dužina luka krive

Dužina luka krive f(x) od tačke na grafiku sa apscisom a do tačke na grafiku sa apscisom b,

iznosi

2

1 ( ) . b

a

l f x dx

Primer 15.13. Izračunati dužinu luka krive L date sa 2( ) log 1 , 0,1/ 2 . f x x x

Rešenje:

In[23]:= f[x_] = Log[1 - x ^ 2]

fx = D[f[x], x]

s1 = Simplify[Sqrt[1 + fx ^ 2]]

NIntegrate[s1, {x, 0, 1/2}]

Out[23]= 0.598612

15.6. Površinski integral

15.6.1. Površinski integral I reda

Površinski integral funkcije f duž nad površi S je

( , ) .S f x y dS

Razlikujemo sledeća dva osnovna slučaja:

1) Neka je površ S data u eksplicitnom obliku kao ( , ),z g x y pri čemu funkcija g ima

neprekidne parcijalne izvode. Neka je Sxy projekcija površi S na xy-ravan. Tada

22

( , , ) ( , , ( , )) 1 .

xyS S

g gf x y z dS f x y g x y dxdy

x y

2) Neka je površ S data parametarski sa ( , ), ( , ) x x t u y y t u i ( , )z z t u za

( , ) ,t u D pri čemu je D oblast u 2. Tada

2( , , ) ( ( , ), ( , ), ( , )) , S Df x y z dS f x t u y t u z t u ab c dtdu

gde je

2 2 2 2 2 2

,

x y z x y za b

t t t u u ui

Page 182: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

182

.

x x y y z zc

t u t u t u

Primer 15.14. Izračunati površinski integral funkcije2 2( , ) 4 f x y x y nad

regionom definisanim sa2 2 1 x y .

Rešenje:

Primetimo da S možemo predstaviti kao uniju dve eksplicitno zadate površi S1 i S2, gde je

S1 dato sa 21 x y , a S2 sa

21 x y . Domen funkcije f(x, y) je

2 2, | 4 4 , 2 2 , | 0 2,0 2 , x y y x y y r r

a region

2 2, | 1 1 , 1 1 , | 0 1,0 2 . R x y y x y y r r

In[24]:= f[x_, y_] = Sqrt[4 - x ^ 2 - y ^ 2]

p1 = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,2}, {t,0,2Pi}]

p2 = ParametricPlot3D[{r Cos[t], r Sin[t], f[r Cos[t], r Sin[t]]}, {r,0,1}, {t,0,2Pi}]

Show[p1, p2]

Out[24]=

In[25]:= fx = D[f[x, y], x]

fy = D[f[x, y], y]

s1 = Simplify[Sqrt[1 + fx ^ 2 + fy ^ 2]]

Out[25]= 2 2

12

4 x y

Page 183: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

183

Površina oblasti se izračunava kao

2

2

2 12 1

2 21 1

21 .

4

y

S

y

f fdxdy dxdy

x y x y

Uvođenjem polarnih koordinata cosx r i siny r , pri čemu je

0,1 , 0,2 , r dvostruki integral postaje

2 1

20 0

2.

4

rdrdr

In[26]:= s2 = Simplify[s1/.{x -> r Cos[t],y -> r Sin[t]}]

NIntegrate[r s2,{t, 0, 2 Pi}, {r, 0, 1}]

Out[26]= 3.36715

15.6.2. Površina i zapremina rotacionog tela

Površina i zapremina tela nastalog rotacijom dela luka krive f(x) oko koordinatnih osa

izračunavaju se:

2

2

( ) ,

2 ( ) 1 ( ) .

b

x

a

b

x

a

V f x dx

P f x f x dx

2

2

2 ( ) ( ) ,

2 ( ) 1 ( ) .

b d

y

a c

d

y

c

V xf x dx x y dy

P x y x y dy

Primer 15.15. Odrediti površinu figure ograničene lukom krive

2

1( ) , 2,4

2

f x x

x x

i x-osom, a zatim izračunati zapreminu tela nastalog rotacijom tog luka oko x-ose.

Rešenje:

Page 184: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

184

4

22

4

2

2

2

2

x

dxS

x x

dxV

x x

In[27]:= NIntegrate[1 / (Sqrt[x x + x - 2]), {x, 2, 4}]

Out[27]= 0.664135

In[28]:= Pi NIntegrate[1 / (x x + x - 2), {x, 2, 4}]

Out[28]= 0.725862

15.7. Redovi

15.7.1. Ispitivanje konvergencije redova

Beskonačni red je red oblika 1

,

k

k

a gde je na sekvenca. N-ta parcijalna suma je

1 2

1

... .

n

n k n

k

s a a a a Beskonačni red konvergira ka L ako sekvenca parcijalnih

suma ns konvergira ka L i piše se 1

.

k

k

a L

Za dati beskonačni niz

Sum[a[k], {k, 1, n}]

izračunava n-tu parcijalnu sumu. Za beskonačan red kaže se da konvergira ako se može

izračunati njegova vrednost, tj.

Sum[a[k], {k, 1, Infinity}]

Primer 15.16. Ispitati da li sledeći redovi konvergiraju ili divergiraju: a) 1

1

( 1) ,

k

k

b) 2

2

2.

1

k k

Rešenje:

In[29]:= sn = Sum[(-1) ^ (k + 1), {k, 1, n}]

Out[29]= 111 ( 1)

2

n

In[30]:= sn = Sum[(-1) ^ (k + 1), {k, 1, Infinity}]

Page 185: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

185

Out[30]= 1

1

( 1)k

k

b) Dati red se može predstavit kao 2

2 2

2 1 1.

1 1 1

k kk k k

In[31]:= sn = Sum[1/(k - 1) - 1/(k + 1), {k, 2, n}]

Out[31]=

22 3

2 (1 )

n n

n n

In[32]:= Apart[sn]

Out[32]= 3 1 1

2 1n n

In[33]:= Limit[sn, n -> Infinity]

Out[33]= 3

2

15.7.2. Stepeni red

Neka je x0 broj. Stepeni red za x - x0 je red oblika 0

0

( ) .

k

k

k

a x x

Primer 15.17. Ispitati da li sledeći stepeni red konvergira 2 1

0

( 1).

(2 1)!

kk

k

xk

Rešenje:

In[34]:= a[x_, k_] = (-1) ^ k / (2 k + 1)! x ^ (2 k + 1)

s1 = FullSimplify[a[x, k + 1] / a[x, k]]

Out[34]=

2

26 10 4

x

k k

In[35]:= Limit[s1, k -> Infinity]

Out[35]= 0

15.7.3. Razvoj funkcije u red

Neka funkcija f(x) ima u tački x = a konačan n-ti izvod f(n)

(x) za svaki prirodan broj n.

Beskonačan red

( )

0

( )( )

!

k

k

k

f ax a

k

zove se Tejlorov red.

Page 186: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

186

Za razvoj funkcije u red oko date tačke a do određenog stepena n koristi se naredba

Series[f[x], {x, a, n}]

Primer 15.18. Dati prva dva člana Tejlorovog reda funkcije ( ) xf x e oko tačke a = 0.

Rešenje:

In[36]:= Series[ Exp[x], {x, 0, 2} ]//N

Out[36]= 1 + x + 1/2 x2

15.7.4. Furijeov red

Neka je funkcija y = f(x) definisana na -p < x < p. Tada Furijeov red za f(x) je

0

1

1cos sin

2

n n

n

n x n xa a b

p p

gde je

0

1( )

p

p

a f x dxp

1

( )cos , 1,2,...

p

n

p

n xa f x dx n

p p

1

( )sin , 1,2,...

p

n

p

n xb f x dx n

p p

Primer 15.19. Neka je funkcija f(x) definisana sa

, 1 0

( ) 1,0 1 .

( 2), 1

x x

f x x

f x x

Izračunati

prvih pet koeficijenata i prve tri parcijalne sume Furijeovog reda funkcije f(x).

Rešenje:

In[37] := f[x_] := 1/; 0 <= x < 1

f[x_] := -x/; -1 <= x < 0

f[x_] := f[x - 2]/; x >= 1

Plot[f[x], {x, -1, 5}]

Page 187: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

187

Out[37]= 1 1 2 3 4 5

0.2

0.4

0.6

0.8

1.0

In[38] := L = 1;

a[0] = NIntegrate[f[x], {x, -L, L}] / 2 L

Out[38]= 0.75

In[39] := a[n_] := NIntegrate[f[x] Cos[n Pi x / L], {x, -L, L}] / L

b[n_] := NIntegrate[f[x] Sin[n Pi x / L], {x, -L, L}] / L

coeffs = Table[{a[i], b[i]}, {i, 1, 5}];

TableForm[coeffs]

Out[39]= -0.202642 0.31831

-2.77556x10^-17 0.159155

-0.0225158 0.106103

-1.59595x10^-16 0.0795775

-0.00810569 0.063662

In[40] := fs[k_, x_] := coeffs[[k, 1]] Cos[k Pi x] + coeffs[[k, 2]] Sin[k Pi x]

fourier[n_, x_] := a[0] + Sum[fs[k, x], {k, 1, n}]

fourier[2, x]

Out[40]= 0.75 -0.202642 Cos[Pi x]-2.77556x10^-17 Cos[2 Pi

x]+0.31831 Sin[Pi x]+0.159155 Sin[2 Pi x]

In[41] := fourier[3, x]

Out[41]= 0.75 -0.202642 Cos[Pi x]-2.77556x10^-17 Cos[2 \[Pi]

x]-0.0225158 Cos[3 Pi x]+0.31831 Sin[Pi x]+0.159155 Sin[2 Pi

x]+0.106103 Sin[3 Pi x]

Primer 15.20. Neka je funkcija f(x) definisana sa 2( ) .f x x Izračunati prvih pet

koeficijenata Furijeovog reda funkcije f(x).

Rešenje:

In[42] := f[x_] := x ^ 2

Plot[f[x], {x, -Pi, Pi}]

Page 188: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

188

Out[42]= 3 2 1 1 2 3

2

4

6

8

10

In[43] := a[0] = 2 Integrate[f[x], {x, 0, Pi}] / Pi

Out[43]=

22

3

In[44] := a[k_] := 2 NIntegrate[f[x] Cos[k x], {x, 0, Pi}] / Pi

b[k_] := 0

coeffs = Table[{a[i], b[i]}, {i, 1, 5}];

TableForm[coeffs]

Out[44]= -4. 0

1. 0

-0.444444 0

0.25 0

-0.16 0

Primer 15.21. Funkciju ( ) (2 ) f x x x definisanu za 0,2 razviti u Furijeov red.

Rešenje:

In[45] := f[x_] := x(2 Pi - x); a = 0; b = 2 Pi;

g[x_] := Which[

0 < x < 2 Pi, f[x],

-2 Pi< x < 0, f[x + 2 Pi],

2 Pi < x < 4 Pi, f[x - 2 Pi]];

ggraf = Plot[g[x], {x, -2 Pi,4 Pi}]

Out[45]= 5 5 10

2

4

6

8

10

Page 189: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

189

In[46] := fs = FourierSeries[g[x], x, 6];

Print["FourierSeries[g[x], x, 6] = ", fs];

Out[46]=

ix ix 2ix 2ix

3ix 3ix 4ix 4ix 5ix 5ix 6ix

26ix

1 1FourierSeries g x ,x,6 2e 2e e e

2 2

2 2 1 1 2 2 1e e e e e e e

9 9 8 8 25 25 18

1 2e

18 3

In[47] := fsgraf = Plot[{fs}, {x, -2 Pi, 4 Pi}, PlotStyle -> {Dashed, Thick, Red}];

Show[ggraf, fsgraf]

Out[47]= 5 5 10

2

4

6

8

10

In[48] := compexpfs = ComplexExpand[FourierSeries[fs, x, 6]];

Print["FourierSeries[g[x], x, 6] = ", compexpfs];

coef = FourierCoefficient[g[x], x, n];

Print["coef = ", coef];

Out[48]=

2

2 44Cos[ ] Cos[2 ] Cos[3 ]

3 9

1 4 1Cos[4 ] Co

FourierSeri

s[5 ] Cos[6 ]4

es g x x,6

9

,

25

πx x x

x x x

coef = 2

2

n

Primer 15.22. Funkciju

1, 0

( ) 0, 0

1, 0

x

f x signx x

x

razviti u Furijeov red.

Rešenje:

In[49] := a = 1;

Page 190: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

190

gg[x_] := Sign[x];

g[x_] := Which[

0< x < a, gg[x],

a < x < 2 a, -gg[x],

2 a < x < 3 a, gg[x],

-a < x < 0, gg[x],

-2 a < x < -a, -gg[x],

-3 a < x < -2 a, gg[x]];

Plot[g[x], {x, -3 a, 3 a}]

Out[49]=

3 2 1 1 2 3

1.0

0.5

0.5

1.0

In[50] := fs = FourierSeries[gg[x], x, 6];

Print["FourierSeries[g[x], x, 6] = ", fs];

Out[50]=

i i 3i

3i 5i 5i

2ie 2ie 2ieFourier

3

2ie 2ie 2ie

3 5 5

Series g x ,x,6

x x x

x x x

In[51] := Plot[{g[x], fs}, {x, -3 a, 3 a}]

Out[51]=

3 2 1 1 2 3

1.0

0.5

0.5

1.0

In[52] := compexpfs = ComplexExpand[FourierSeries[fs, x, 6]];

Print["FourierSeries[g[x], x, 6] = ", compexpfs];

coef = FourierCoefficient[g[x], x, n];

Page 191: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

191

Print["coef = ",coef];

Out[52]= 4Sin[ ] 4Sin[3 ] 4Sin[

FourierSeries g x ,x,65 ]

3 5

x x x

coef =

3i i 2 2i 4iie ( 1 e )(1 e e )

2

n n n n

n

15.8. Crtanje polja i tokova

Za crtanje polja i tokova koristi se strelica koja se crta naredbom

Arrow[{{x1, y1},{x2, y2}}]

Primer 15.23. Nacrtati polje određeno strelicama koje počinju u tačkama (u, v) a

završavaju u tačkama (u + v/4 - 1, v + u/4 - 1).

Rešenje:

In[53]:= Graphics[Table[Arrow[{{u,v},{u+v/4-1,v+u/4-1}}],{u,0,5, 0.5},{v,0,5,0.5}]]]

Out[53]=

15.9. Laplasova transformacija

Neka je ( )y f t funkcija definisana na intervalu 0, . Laplasova transformacija je

funkcija

-st

0

F(s) f(t) = e f(t)dt

= .L

Funkcija ( )f t je inverzna Laplasova transformacija ( )F s u značenju L ( ) ( )f t F s , a

zapisana kao L -1 ( ) ( ).F s f t

Page 192: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

192

U paketu Mathematica korsite se sledeće naredbe za rad sa Laplasovim transformacijama:

LaplaceTransform[f[t], t, s] izračunava L ( ) ( )f t F s ,

InverseLaplaceTransform[F[s], s, t] izračunava L -1 ( ) ( ),F s f t

UnitStep[t] vraća 0, 0

( )1, 0.

tu t

t

Borelova teorema: Ako je ( ) ( )f t F sL i ( ) ( ),g t G sL tada je

( * )( ) ( ) ( ).f g t F s G sL

Primer 15.24. Odrediti konvoluciju funkcija ( ) sinf t t i ( ) cosg t t .

Rešenje:

Primenom Borelove teoreme direktno dobijamo

2 2 2 2

1(sin *cos ) (sin ) (cos ) .

1 1 ( 1)

s st t t t

s s sL L L

In[54] := LaplaceTransform[Sin[t], t, s] LaplaceTransform[Cos[t], t, s]

Out[54]= 2 2

s

(s 1)

Primer 15.25. Odrediti ( )f t ako je 2

2( ) .

2 5

sF s

s s

Rešenje:

Slika ( )F s se može prikazati u obliku

2 2 2 2 2 2

1 1 1 1 2( ) ,

( 1) 2 ( 1) 2 2 ( 1) 2

s sF s

s s s

odnosno

1 1 1

2 2 2 2

1 1 2 1( ) ( ) cos2 sin 2 .

( 1) 2 2 ( 1) 2 2

t tsf t F s e t e t

s sL L L

In[55] := i1=InverseLaplaceTransform[-(s + 2) / (s ^ 2 + 2 s + 5), s, t]

ComplexExpand[i1]//Simplify

Out[55]= Cos Sint1e 2 2t 2t

2

Page 193: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

193

Primer 15.26. Rešiti diferencijalnu jednačinu

( ) 4 ( ) 3 ( ) 1, y t y t y t

pod uslovom (0) 0, (0) 1. y y

Rešenje:

Neka je ( ( )) ( ),y t Y sL tada je ( ( )) ( ) (0) ( ) y t sY s y sY sL i

2 2( ( )) ( ) (0) (0) ( ) 1. y t s Y s sy y s Y sL Primenom Laplasove transformacije na

levu i desnu stranu date diferencijalne jednačine, dobijamo

2 1( ) 1 4 ( ) 3 ( ) , s Y s sY s Y s

s

odakle je

2

1 1 1 1 2( ) .

( 4 3) ( 1)( 3) 3 1 3( 1)

s sY s

s s s s s s s s s

Primenom inverzne Laplasove transformacije, nalazimo

1 31 2( ) ( ( )) .

3 3

t ty t Y s e eL

In[56] := ODE = y''[t] - 4 y'[t] + 3 y[t] == 1

IC = {y[0] -> 0, y'[0] -> 1}

ltODE = LaplaceTransform[ODE, t, s] /.IC

Out[56]= -1+3 LaplaceTransform[y[t],t,s]

-4 s LaplaceTransform[y[t],t,s]

+s^2 LaplaceTransform[y[t],t,s]==1/s

In[57] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]]

Out[57]= 2

1 sLaplaceTransform y t ,t,s

s 3 4s s

In[58] := InverseLaplaceTransform[YSoln[s], s, t]

Out[58]= 3t

t1 2ey t e

3 3

Page 194: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

194

Primer 15.27. Rešiti diferencijalnu jednačinu

2( ) ( ) 3(2 ), y t y t t

pod uslovom (0) (0) (0) 1. y y y

Rešenje:

Primenom Laplasove transformacije na levu i desnu stranu date diferencijalne jednačine,

dobijamo

3 2

3

6 2( ) ( ) 3 , s s Y s s s

s s

odakle je

5 4 2 4

4 2 4 4

6 6 6 6 6 1( ) .

( 1) ( 1) 1

s s s s sY s

s s s s s s

Primenom inverzne Laplasove transformacije, nalazimo

1 3( ) ( ( )) . ty t Y s e tL

In[59] := ODE = y'''[t] - y'[t] == 3 (2 - t ^ 2)

IC = {y[0] -> 1, y'[0] -> 1, y''[0] -> 1}

ltODE = LaplaceTransform[ODE, t, s] /.IC

Out[59]= -s-s^2-s LaplaceTransform[y[t],t,s]

+s^3 LaplaceTransform[y[t],t,s]==3(-(2/s^3)+2/s)

In[60] := YSoln[s_] = Solve[ltODE, LaplaceTransform[y[t], t, s]]

Out[60]= 4

4

6 6s sLaplaceTransform y t ,t,s

( 1 s)s

In[61] := InverseLaplaceTransform[YSoln[s], s, t]

Out[61]= t 3y t e t

Page 195: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

195

15.10. Parcijalne diferencijalne jednačine

Parcijalna diferencijalna jednačina je jednačina oblika

2

1 2 2

1 1

, ,..., , , ,..., , ,..., 0

m

n m

n n

u u u uF x x x u

x x x x

gde je F data funkcija od n nezavisno promenljivih x1, x2, ..., xn (n > 1), zatim od nepoznate

funkcije u = u(x1, x2, ..., xn) i konačnog broja parcijalnih izvoda funkcije u.

Za rešavanje parcijalne diferencijalne jednačine za ,u x y u paketu Mathematica koristi

se naredba oblika

DSolve[jednačina, u[x, y], {x, y}]

15.10.1. Parcijalne diferencijalne jednačine I reda

15.10.1.1. Linearna homogena parcijalna diferencijalna jednačina

Primer 15.28. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

2 2 ( ) 0.

u ux y x y u

x y

Rešenje:

In[62] := eqn = x ^ 2 D[u[x, y], x] + y ^ 2 D[u[x, y], y] - (x + y) u[x, y];

sol = DSolve[eqn == 0, u, {x, y}]

Out[62]= x y

u Function x,y ,xyC 1xy

In[63] := fn = u[x, y] /.sol[[1]] /.{C[1][t_] -> Sin[t ^ 2] + (t / 10)}

Out[63]=

2

2 2

x yx yxy Sin

10xy x y

In[64] := Plot3D[fn,{x,-5,5},{y,-5,5}]

Page 196: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

196

Out[64]=

Primer 15.29. Ako je u(x, y, z) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

( ) 0.

u u ux x y z

x y z

Rešenje:

In[65] := DSolve[x D[u[x, y, z],x]+(x-y) D[u[x, y, z],y]+ z D[u[x, y, z],z]==0,u,{x, y, z}]

Out[65]= 1

{ , , }, [1][ ( 2 ),u Func2

tion ]z

x y z C x x yx

Primer 15.30. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

3 4 0.

u uu

x y

Rešenje:

In[66] := eqn = 3 D[u[x, y], x] + 4 D[u[x, y], y] + u[x, y];

sol = DSolve[eqn == 0, u, {x,y}]

Out[66]= /3 1e [1][ ( 4 3u Function x,y , )]

3

xC x y

In[67] := fn = u[x, y] /. sol[[1]] /. {C[1][t_] -> Sin[t]}

Out[67]= /3 1e Sin[ ( 4 3 )]

3

xx y

In[68] := Plot3D[fn,{x,-5,5},{y,-5,5}]

Page 197: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

197

Out[68]=

15.10.1.2. Kvazilinearna parcijalna diferencijalna jednačina

Primer 15.31. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

( ) .

u ux x y u

x y

Rešenje:

In[69] := DSolve[-x D[u[x, y], x] + (x + y) D[u[x, y], y] == u[x, y], u, {x, y}]

Out[69]=

1[1][ ( 2 )

u Function x,

]2y ,

C x x y

x

Primer 15.32. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

2 3.

u ux u

x y

Rešenje:

In[70] := DSolve[D[u[x, y], x] + x D[u[x, y], y] == u[x, y] ^ 2 + 3, u, {x, y}]

Page 198: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

198

Out[70]= 213Tan[ 3 3 [1][ ( 2 )]]

2u Function x,y , x C x y

15.10.1.3. Nelinearna parcijalna diferencijalna jednačina

Primer 15.33. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

1.

u u

x y

Rešenje:

In[71] := DSolve[D[u[x, y], x] D[u[x, y], y] == 1, u, {x, y}]

Out[71]= u Function x,y [1] [2C ]]

,[2

xyC

C

Primer 15.34. Ako je u(x, y) nepoznata funkcija, naći opšte rešenje parcijalne

diferencijalne jednačine

22

4 4.

u uu

x y

Rešenje:

In[72] := DSolve[4 u[x, y] + D[u[x, y], x] ^ 2 + D[u[x, y], y] ^ 2 == 4, u, {x, y}]

Out[72]=

2 2 2 2 2

2

{{ [

1 2 [1] [1] [1] 2 [2] 2 [1][2] [2]]}}

u Functio

1 [

n x,y

1

,

]

y xyC C x C yC xC C C

C

Page 199: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

XV vežba – Mathematica za više kurseve matematike

199

Zadaci za vežbu

I grupa

Odrediti kompozicije f g i g f za

a) 2( ) 2 1, ( ) 1, f x x g x x

b) 2( ) 9 , ( ) 9. f x x x g x x

II grupa

Izračunati dvostruki integral funkcije 2( , ) 2 3 f x y x y na oblasti datoj sa

2 2, | 1 1, 1 3 . A x y y y x y

III grupa

Izračunati trostruki integral funkcije ( , , ) f x y z zy na oblasti datoj sa

, , | 0 2,0 2 ,0 2 . A x y z z y z x z

IV grupa

Odrediti zapreminu ograničenu površima 2 2 z x y i 5.z

V grupa

Izračunati površinski integral funkcije2 2( , ) f x y x y nad centralnom sferom

2 2 2 9. x y z

VI grupa

Ispitati konvergenciju reda

0

1.

1 2

n

n n n

Page 200: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi – Praktikum za laboratorijske vežbe

200

VII grupa

Ispitati konvergenciju i naći sumu reda

0

1.

3 1 3 4

n n n

VIII grupa

Razviti u Furijeov red funkciju

, 03

( ) .

,03

xx

f xx

x

IX grupa

Razviti u Furijeov red funkciju ( ) 2 , , . f x x x

X grupa

Neka je ( )y f t definisana sa 1,0 1

( )1,1 2

tf t

ti ( ) ( 2), 2. f t f t t Naći rešenja

diferencijalne jednačine 4 20 ( ). y y y f t

Page 201: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Literatura

1. Abell, M.L., Braselton, J.P., Mathematica by example, fourth edition, Elsevier Inc.,

2009.

2. Arnold, K., Gosling, J., Holmes, D., The Java Programming Language, fourth edition,

Addison Wesley Professional, 2005.

3. Došenović, T., Takači, A., Rakić, D., Zbirka zadataka iz Matematike I, Tehnološki

fakultet, Novi Sad, 2008.

4. Eckel, B., Thinking in Java, Second edition, Prentice Hall, New Jersey, 2000.

5. Flanagan, D., Java Examples in a Nutshell, third edition, O'Reilly, 2004.

6. Gocić, M., Algoritmsko rešavanje problema i objektno orijentisan pristup u Javi,

Mikro knjiga, Beograd, 2011.

7. Hartmann, D., Đorđević, Đ., Gocić, M., Osnovi inženjerske informatike I,

Građevinsko-arhitektonski fakultet, Niš, 2006.

8. Miličić, P., Ušćumlić, M., Zbirka zadataka iz više matematike I, Naučna knjiga,

Beograd, 1988.

9. Petković, Lj., Tričković, S., Rajković, P., Zbirka zadataka iz numeričke matematike,

Univerzitet u Nišu, Mašinski fakultet, 1997.

10. Poo, D., Kiong, D., Ashok, S., Object-Oriented Programming and Java, second

edition, Springer, 2008.

11. Petković, M., Algoritmi numeričke analize, Univerzitet u Nišu, Prirodno-matematički

fakultet, Niš, 2013.

12. Stanimirović, P. S., Milovanović, G. V., Programski paket Mathematica i primene,

Univerzitet u Nišu, Elektronski fakultet, 2002.

13. Stefanović, L., Matejić, M., Marinković, S., Diferencijalne jednačine: za studente

tehničkih fakulteta, Studentski kulturni centar, Niš, 2006.

Page 202: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Uvod u programiranje i softverski paketi - Praktikum za laboratorijske vežbe

202

14. Walnum, C., Java By Example, Que Corporation, Indianopolis, 1996.

15. Weisfeld, M., Objektno orijentisani način razmišljanja, CET Computer Equipment

and Trade, Beograd, 2003.

16. Wellin, P. R., Gaylord, R. J., Kamin, S. N., An Introduction to Programming with

Mathematica, third edition, Cambridge University Press, 2005.

17. Wolfram, S., The Mathematica Book, fifth edition, Wolfram media, 2003.

Page 203: Uvod u programiranje i softverski paketi - rc5.gaf.ni.ac.rsrc5.gaf.ni.ac.rs/dec/mgocic/UvodUProgramiranje/materijal/Uvod u... · obuhvaćen veliki broj primera koji se odnose na programski

Autori

Milan Lj. Gocić, doktor tehničkih nauka, docent Građevinsko-

arhitektonskog fakulteta Univerziteta u Nišu, rođen je 9. maja 1977.

godine u Nišu. Predaje grupu predmeta iz naučne oblasti

„Informacione tehnologije u građevinarstvu“. Autor je više od 90

naučnih i stručnih radova, koji su objavljeni u međunarodnim i

domaćim časopisima i zbornicima radova skupova međunarodnog i

nacionalnog značaja. Oblasti interesovanja su mu informacioni sistemi,

objektno orijentisano programiranje i modelovanje softvera.

Predrag M. Rajković, doktor matematičkih nauka, redovni profesor

Mašinskog fakulteta Univerziteta u Nišu, rođen je 9. juna 1959.

godine u Velikoj Plani kod Prokuplja. Godine 1983. diplomirao je na

Filozofskom fakultetu u Nišu, na Grupi za matematiku. Na istom

fakultetu, 1991. godine odbranio je magistarsku tezu, a 1998.

doktorsku disertaciju. U svojim naučnim radovima se bavi specijalnim

funkcijama, numeričkom analizom i programiranjem i njihovim

primenama u drugim naukama. Predavao je matematiku, optimizaciju,

programiranje i kompjutersku grafiku. Ima objavljenu monografiju

Diferencijalno-integralni račun bazičnih hipergeometrijskih funkcija

2008. godine, 25 naučnih radova na SCI listi i oko 90 naučnih radova

ukupno do sada.