You are on page 1of 38

UNIVERZITET U NIU

PRIRODNO-MATEMATIKI FAKULTET Departman za raunarske nauke

Seminarski rad
Predmet: Simbolika i algebarska

izraunavanja

Tema: "Primena Mathematica paketa u procesiranju slika i radu sa bazom podataka"

Student: Mentor: Msc Faruk Selimovi Predrag Stanimirovi

Prof.dr.

Ni
1

Januar, 2013. god.

Sadraj
Sadraj................................................................................................................... 2 1.Uvod................................................................................................................... 3 1.1. Matematike aplikacije baza podataka........................................................4 1.2. DatabaseLink tehnologija............................................................................ 4 2.Povezivanje sa bazom......................................................................................... 5 2.1 Podeavanje baze podataka.........................................................................5 2.2. Uspostavljanje veze..................................................................................... 5 2.3. Informacije o konekciji................................................................................. 7 2.4. JDBC Konekcija............................................................................................ 8 2.5. ODBC Konekcija......................................................................................... 10 2.5.1. Podeavanje konekcije........................................................................10 2.5.1. Korienje konekcije............................................................................12 3.Osnovne komande za rad za bazom podataka - Comand line interface...........13 3.1. Uitavanje paketa...................................................................................... 13 3.2. Konekcija sa bazom................................................................................... 13 3.3. Prikaz podataka iz baze............................................................................. 14 3.4. Unos podataka u bazu...............................................................................15 3.5. Auriranje podataka iz baze......................................................................16 3.6. Brisanje podataka iz baze.........................................................................17 3.7. Paketske komande.................................................................................... 18 3.8. Explorer baze podataka.............................................................................19 4. Uporeivanje paketa Matematica i SQL upita..................................................20 4.1. Matematica-Stil upita................................................................................. 20 2

4.2. SQL-Stil upita............................................................................................. 20 5. Procesiranje slike............................................................................................. 20 5.1. Kreiranje i prezentacija slike.............................................................20 5.2. Osnovne oprecije za manupulaciju sa slikama..........................................24 6.Dinamiko programiranje u programskom paketu MATHEMATICA i DatabaseLink-u.................................................................................................... 27 6.1. Problem ranca .......................................................................................... 28 ................................................................................................................... 30 Out[90]=24...................................................................................................... 30 In[90]:=total[%,mat]........................................................................................ 30 Out[90]=153..................................................................................................... 30 6.2. Problem maksimalnog zbira u matrici (tabeli baze podataka)...................31 6.3. Najbre stepenovanje................................................................................ 32 6.4. Problem trgovakog putnika......................................................................33 6.5. Najdui zajdniki podniz............................................................................ 36 7. Zakljuak......................................................................................................... 38 8. Literatura......................................................................................................... 38

1.Uvod Skladitenje podataka, indeksiranje i pronalaenje su ve dugo kljuni zadaci u mnogim velikim organizacijama kao to su vlade, banke, bolnice i biblioteke. Kako ljudsko drutvo ima tendenciju rasta, tako su porasli i zahtevi za upravljenjem bazama podataka.
3

Neki od novih izazova ukljuuju sloenost koju podaci predstavljaju, kako se podaci koriste kao i sama koliina podataka. Od razvoja modernih elektronskih raunara u drugoj polovini dvadesetog veka, alati kao to su sistem za upravljanje relacionim bazama podataka (RDBMS) i Strukturirani jezik upita (SQL) postali su standardi koji se iroko koriste za prenos i rukovanje podacima u razliitim vrstama organizacija. U ovom trenutnu postoji mnogo razliitih baza podataka.One se kreu od velikih, skupih komercijalnih aplikacija koje su pogodne za visoke svrhe do slobodno dostupnih Open Source alata koji rade na linim raunarima sa operativnim sistemima kao to su Microsoft Windows i Linux. DatebaseLink je jedna Matematika aplikacija koja obezbeuje skup alata koji omoguavaju pogodnu integraciju Matematica sa sistemom za upravljanje bazom podataka. Matematica sada obezbeuje i ugraenu podrku za programsku i interaktivnu obradu slike koja je u potpunosti integrisana sa monim matematikim i algoritamskim mogunostima.Moemo kreirati i uvesti slike, manipulisati njima pomou ugraenih funkcija, primenjivati linearne i nelinearne filtere za njih i zamisliti ih na bezbroj naina.

1.1. Matematike aplikacije baza podataka Postoji niz znaajnih porednosti koje se mogu postignuti integracijom Matematica u sistem baze podataka.Matematica sadri veliku kolekciju funkcija za numerike i simbolike obraune koji se mogu primeniti na podacima uzetim iz baze podatka. Nakon to se proraini zavre, rezultati se mogu uvati u aplikaciji baza podataka, omoguavajui da Matematica obradi rezultate u nekom kasnijem trenutku. Ona se moe koristiti za statistiku obradu, modelovanje ili u neku optimalnu konfiguraciju raunarstva.Sve ove proraune obino zahtevaju i proizvodi podataka koji mogu povoljno da se uvaju u bazi podataka aplikacije. Aplikacije baza podataka mogu biti integrisane sa mnogim drugim tipovima aplikacija, pruajui vaan oblik interoperabilnosti (zajedniki rad razliiti, heterogenih sistema, tehnika ili organizacija). Podaci dobijeni iz jedne aplikacije mogu se uvati u bazi podataka. Zatim elementi ovih podataka mogu biti preuzeti od Matematike, korieni za izraunavanje, a rezultati se uvaju u bazi podataka. Konano jo jedna aplikacija moe da izvue ove rezultate i koristi ih za neku dalju svrhu.Centralna baza podataka aplikacija je sedite ove raunarske mree; njenaa interakcija sa Matematica je mogua posredstvom DatabaseLink-a. 1.2. DatabaseLink tehnologija DatabaseLink se zasniva na uobiajenom Java database connectivity (JDBC) tehnologijom. java.sun.com/products/jdbc/. Paket omoguava iroku upotrebu Mathematica Java toolkit, J/Link www.wolfram.com/solutions/mathlink/jlink/ mada nije potrebno Java poregramiranje. Baza Explorer koristi Matematica grafiki korisniki interfejs toolkit GUIKit, www.wolfram.com/solutions/guikit. DatabaseLink dolazi sa izborom drajvera za vie baza podataka. Ako ne zadri upravljaki program za baze podataka, moete da instalirate svoj porgram, kao to je opisano u Database Connections. (JDBC Conestions)
4

2.Povezivanje sa bazom Prvi korak u korienju baze podataka je povezivanje sa njom. U ovom poglavlju objasniemo kako se to radi. Ako ste upravo sada poeli sa korienjem DatabaseLink, vi moda elite da vidite neke osnovne primere korienja u ovom radu. Zatim ako elite, moete da nauite kako DatabaseLink postaje program pokreta za bazu podataka, moda elite da studirate JDBC konekciju, koja sadri budue informacije o dodavanju novih programa pokretaa. Konano ako elite da date ime vae konekcije moete da studirate Named Connections. 2.1 Podeavanje baze podataka Mnogi korisnici DatabaseLink-a ve imaju postojeu bazu podataka sa kojom e se povezati i koju e koristiti. Ako Vi imate jednu bazu podataka trebate proitati ovu dokumentaciju i modifikovati vau konekciju sa linom bazom podataka. Ako ve nemate bazu podataka, moete koristiti HSQLDB (ukljuujui u DatabaseLink). Ako elite da instalirate razliite tipove podataka, vama je potreban izvetaj specifinih informacija za tu bazu podataka.Kada jednom podesite bazu podataka, moete da nastavite sa korienjem ovog uputstva i nauite kako da se poveete sa njom.

2.2. Uspostavljanje veze Naveemo sada funkcije koje se koriste za konekciju sa Bazom podataka. Povezivanje sa imenom SQL izvorom podataka Povezivanje sa izvorom podataka URL koristei JDBC Podeavane opcija za povezivanje Korienje alata za povezivanje za ovaranje konekcije Zatvaranje konekcije Lista SQL konekcija Opirnije informacije o SQL konekciji.

OpenSQLConnection[name] OpenSQLConnection[JDBC[driver,url]] OpenSQLConnection[args,opts] OpenSQLConnection[] CloseSQLConnection[conn] SQLConnections[] SQLConnectionInformation[conn]

Tabela 1. Funkcije za povezivanje sa bazom podataka

Sada emo pokrenuti DatabaseLink funkcijom Needs["DatabaseLink"]. In[1]:= Needs["DatabaseLink`"] Sada moete da se poveete sa imenom baze, nazvanom demo koja je obezbeena od DatabaseLink-a za dokumetaciju.Resursi baze podataka: Konfiguracija konekcije pokazuje vam kako da postavite ime konekcije. OpenSQLConnection funkcija vraa Matemetica izraz koji nas obavetava o konekciji. To moe biti korieno za pravljenje upita nad bazom podataka. In[2]:= conn = OpenSQLConnection["demo"] Out[2]= SQLConnection[demo, 1, Open, TransactionIsolationLevel> ReadCommitted] SQLConnections funkcija vraa listu svih otvorenih konekcija. In[3]:= SQLConnections[] Out[3]= {SQLConnection[demo, 1, Open, TransactionIsolationLevel->ReadCommittedD]} U sledeem prmeru tabele su pronaene u bazi i vraene kao rezultat. In[4]:= SQLTables[conn] Out[4]= {SQLTable[SAMPLETABLE1, TableType -> TABLED]} Kada ste zavrili sa konekcijom, moete je zatvoriti sa CloseSQLConnection In[5]:= CloseSQLConnection[conn] In[6]:= conn Out[6]= SQLConnection[demo, 1, Closed, <>] funkcijom

Predstaviemo Vam jedan broj opcija koje se mogu dobiti upotrebom funkcije OpenSQLConnection. Ime opcije "Description" "Name" Opis opcije Tekstualni opis konekcije Ime konekcije Username koji se koristi za "Username" "" konekciju Pasword koji se koristi za "Password" "" konekciju Lokacija kataloga baze "Catalog" Automatic podataka Postavljanje konekcije da "ReadOnly" Automatic bude samo itljiva Postavljanje izolacije za "TransactionIsolationLevel" Automatic transakciju veze Tabela 2. Opcije funkcije OpenSQLConnection Ove opcije mogu biti koriene kada otvorimo konkeciju. U prateem primeru dozvoljeno vam je da koristite razliite "username" i "pasword" za povezivanje.
6

Default vrednost "" ""

In[7]:= conn = OpenSQLConnection["demo", "Username" -> "sa", "Password" -> ""] Out[7]= SQLConnection[demo, 2, Open, TransactionIsolationLevel -> ReadCommitted] In[8]:= CloseSQLConnection[conn] Ako ste uneli "$Prompt" kao password, dijalog boks koji e Vas upitati za lozinku. Ovo pomae da password (lozinka) bude sigurnija. In[9]:= conn = OpenSQLConnection["demo", "Username" -> "sa", "Password" -> "$Prompt"] Out[9]= SQLConnection[demo, 3, Open, TransactionIsolationLevel -> ReadCommitted] Kada konekcija bude kreirana, odreene opcije mogu biti promenjene korienjem opcije SetOptions. "Catalog" "ReadOnly" "TransactionIsolationLevel" Lokacija kataloga baze podataka Da li da bude otvorena samo za itanje Da li e dodati izolacije transakcije

Tabela 3. Opcije povezivanja koje mogu biti promenjene kada je veza uspostavljena. Ove promene u konekciji dozvoljavaju samo pristup i itanje bazi podataka. In[10]:= SetOptions[conn, "ReadOnly" -> True] Out[10]= SQLConnection[demo, 3, Open, ReadOnly -> True, TransactionIsolationLevel -> ReadCommitted] In[11]:= CloseSQLConnection[conn]

2.3. Informacije o konekciji Detaljne informacije o konekciji mogu biti predstavljene korienjem funkcije SQLConnectionInformation. Ovo moe biti demonstrirano na sledei nain. In[12]:= Needs["DatabaseLink`"] Sledea linija koda otvara konekciju jedne proste baze podataka In[13]:= conn = OpenSQLConnection["demo"]

Out[14]= SQLConnection[demo, 4, Open, TransactionIsolationLevel -> ReadCommitted] Zatim, se kreiraju informacije o konekciji. In[15]:= data = SQLConnectionInformation[conn]; Ova tampa daje uredne informacije o vezi. In[16]:= TableForm[Transpose[data]] MaxUserNameLength 0 NullPlusNonNullIsNull True NullsAreSortedAtEnd False NullsAreSortedAtStart False NullsAreSortedHight False NullsAreSortedLow True

Out[16]=

Zbog duine koda nisu predstavljeni svi rezultati tampe.Pored osnovnih informacija postoje informacije o tome da li je baza samo itljiva koji tipovi podataka se mogu koristiti za definisanje podataka itd.

2.4. JDBC Konekcija Ako nemate ime konekcije baze podataka, vi se moete povezati sa bazom koristei JDBC podeavanja.Naveemo nekoliko funkcija koje se koriste u JDBC konekciji. JDBC[name,url] JDBC[classname,url] JDBCDriverNames[] JDBCDrivers[] JDBCDrivers[name] Podeavanje JDBC-a JDBC podeavanje koje daje eksplicitno ime klase za drajvere (program pokreta) Lista imena koja su dostupna JDBC drajverima. Detalji za sve JDBC drajvere Detalji za sve JDBC drajvere sa dodatkom name

Tabela 4. Funkcije koje se koriste u JDBC konekciji. Uitaemo najpre paket. In[17]:= Needs["DatabaseLink`"] Propratiemo otvaranje konekcije sa HSQLDB-om koristei fajl $UserBaseDirectory/DatabaseResources/Examples/demo.Ovo radi zato to paket zna ta JDBC drajver koristi za konekciju sa HSQLDB. In[18]:= conn = OpenSQLConnection[JDBC["hsqldb", ToFileName[{$UserBaseDirectory, "DatabaseResources", "Examples"}, "demo"]],
8

"Name" -> "manualA", "Username" -> "sa"] Out[18]= SQLConnection[manualA, 5, Open, TransactionIsolationLevel-> ReadCommitted] In[19]:= CloseSQLConnection[conn] JDBCDriverNames komanda vraa lako listu ugraenih drajvera. HSQLDB u listi , dakle moete koristiti HSQLDB podeavanja kao argument u JDBC. In[20]:= JDBCDriverNames[] Out[20]= {Microsoft Access(ODBC), hsqldb, HSQL(Memory), HSQL(Server), HSQL(Server+TLS),HSQL(Standalone), HSQL(Webserver), HSQL(Webserver+TLS), jtds_sqlserver, jtds_sybase, mysql, MySQL(Connector/J), ODBC(DSN), odbc, Oracle(thin), Microsoft SQL Server(jTDS), Sybase(jTDS)} Vi moete dobiti vie kompletnih informacija o svim ugraenim drajverima koristei JDBCDrivers bez parametara. Ako elite d dobijete informacije o samo jednom drajveru, moete to uraditi dodavanjem imena drajvera u kao argumenta u funkciju JDBCDrivers. Pronalaenje protokola koji je predvien za dati drajver pomae vam da koristite OpenSQLConnection. In[21]:= JDBCDrivers["ODBCHDSNL"] Out[21]= JDBCDriver[Name -> ODBC(DSN), Driver -> sun.jdbc.odbc.JdbcOdbcDriver, Protocol->jdbc:odbc:, Version->2., Description-> JDBC-ODBC Bridge distributed with the Sun JVM. This driver only works on Windows., Location -> C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\DatabaseLink\ DatabaseResources\odbcdsn.m] Ako DatabaseLink ve ne sadri drajver za vau bazu podataka, moete dodati svoj lini drajver.Drajveri su ustvari kolekcija Java classes, i oni moraju biti dodati u Matematica programski paket koristei standardne J/link -a obezbeeni za dodavanje Java slasses. Tipino ovo se moe uraditi dodavanjem class fajla ili jar fajla u Java pod direktorijum u Matematica aplikaciji. Jedna mogua lokacija je unutar samog DatabaseLinka. Mana je ako aurirate Matematica onda ete morati da kopirate novi materijal. Druge lokacije bi mogle da budu unutar $UserBaseDirectory ili $BaseDirectory; u ovom sluaju ne zahtevaju da bude promenjeni ako se softver aurira. Na primer vi moete kreirati jednu aplikaciju za konekciju sa Oracle bazom podataka. Ovo se moete uraditi kreiranjem aplikacije nazvane Oracle unutar $UserBaseDirectory/Applications ili $BaseDirectory/Applications. Vi ete morati kreirati neke direktorijume runo ali nemate potrebu promeniti bilo ta ako aurirate softver. Druga prednost je da moete koristiti iste lokaciju da zadite
9

DatabaseResources direktorijum. Sledea tabela predstavlja neke mogue lokacije koje moete koristiti za instalaciju drajvera za konekciju za Oracle bazom podataka. $UserBaseDirectory/Applications/Oracle/Java $BaseDirectory/Applications/Oracle/Java Lokacija za instalaciju drajvera za Oracle bazu podataka Lokacija za instalaciju drajvera za Oracle bazu podataka

Tabela 5. Lokacije za instalaciju drajvera za konekciju sa Oracle bazom. Kada ste isntalirali drajvere , moete kreirati konekciju. Treba napomenuti da URL ardesa (argument) koji koristite zavisi od servera koji koristite. U prateem primeru koji nije aktuelno konfigurisan, konekcija je napravljena za Oracle bazu podataka korienjem drajvera instaliranim u jednu od lokacijja koje su predloene. Dokumentacija za JDBC drajver e vam rei koja class i URL se koriste. In[22]:= OpenSQLConnection[JDBC["oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@server.business.com:1999"], "Name"->"manualOracle", "Username"->"server1"] Tipino , ovo je najvei opirniji oblik OpenSQLConnection. Upotrebljava se kada elite da koristite informacije koje su prethodno sauvane.

2.5. ODBC Konekcija Open Database Connectivity (ODBC) je opti nain za konekciju sa bazom podataka koji je podran u velikom broju operativnih sistema, naroito Microsoft Windows-u. DatabaseLink dolazi konfigurisan sa drajverima za ODBC konekciju. Ovaj primer koji radi samo u Windows-u, pokazuje kako se konektujemo a prodtom bazom koristei ODBC. 2.5.1. Podeavanje konekcije U ovom primeru koristi se jednostavan fajl baze podataka publisher.mdb koji je lociran unutar DatabaseLink paketne strukture. Vi moete pronai lokaciju koristei sledeu liniju koda. In[23]:= Needs["DatabaseLink`"]; ToFileName[{$DatabaseLinkDirectory}, "Examples"] Out[23]= C:\Program Files\Wolfram Research\Mathematica\7.0\SystemFiles\Links\DatabaseLink\Exam ples Obino nije dobra ideja da se modifikuju fajlovi koji su unutar DatabaseLink, koje moda elite da kopirate u druge lokacije.Jedna mogua lokacija e biti unutar DatabaseRe/sources/Examples direktorijumu unutar $UserBaseDirectory (to moe bit potrebno za kreiranje ovih direktorijima).
10

In[24]:= ToFileName[{$UserBaseDirectory, "DatabaseResources"}, "Examples"] Out[24]= C:\Documents and Settings\WRI\Application Data\Mathematica\DatabaseResources\Examples Traeni publisher.mdb fajl je pronaen unutar Examples pod direktorijuma. Sada moete da koristite ODBC kontrolni panel za registraciju izvora podataka. Obino se on nalazi u Administrative Tools folderu u Windows Control Panel. Pokretanjem ODBC Data Source Administrator-a dobijamo dojalog prozor koji je predstavljen na Slici 1.

Slika 1. ODBC Data Source Administrator Klikom na Add buton otvorie se prozor Create New Data Source.

Slika 2. Create New Data Source prozor Selektujte Microsoft Access Driver i kliknite Finish. Otvorie se ODBC Microsoft Access Setup prozor sa Slike 3.

11

Slika 3. ODBC Microsoft Access Setup prozor Ispinite tekstualno polje Data Source Name koristei ime "publisher" (ovo je ime ODBC-a koje ete koristiti).Onda kliknite na Select button, koji e vam dozvoliti da pronaete i selektujete publisher.mdb fajl.

Slika 3. Select Database prozor Kliknite na OK u svakom sledeem prozoru dok se kontrolni panel ne zatvori.Imajte na umu da se "publiser" i njegov drajver sada pojavljuju u listi dostupnih fajlova u ODBC Data Source Administrator prozoru. 2.5.1. Korienje konekcije Sada bi trebalo da ste u mogunosti da se poveete sa ODBC izvorom podataka koga ste konfigurisali. U sledeem linijama koda propratite uitavanje DtabaseLink-a i povezivanje sa ODBC data source "publisher-a". In[25]:= << DatabaseLink`; conn = OpenSQLConnection[JDBC["odbc", "publisher"]]; Sada moete koristiti konekciju za kreiranje upita nad bazom podataka. In[26]:= SQLTableNames[conn]
12

Out[26]= {authors, editors, publishers, roysched, sales, salesdetails, titleauthors, titleditors, titles} In[27]:= SQLSelect[conn, "publishers", "ShowColumnHeadings" -> True] // TableForm Out[27]= pub_id pub_name address city state 0736 Second Galaxy Books 100 1st St . Boston MA 0877 Boskone & Helmuth 201 2nd Ave. Washington DC 1389 NanoSoft Book Publishers 302 3rd Dr. Berkeley CA Na kraju moete zatvoriti konekciju In[28]:= CloseSQLConnection[conn] 3.Osnovne komande za rad za bazom podataka - Comand line interface Comand-line interface je moan i fleksibilan interfejs, posebno pogodan kada elite da piete programe koji koriste funkcije baze podataka. U ovom poglavlju govoriemo o broju razliitih operacija koje se koriste za predstavljanje baze podataka. 3.1. Uitavanje paketa DatabaseLink je dodatak u aplikacijama Matemetike. Prije korienja bilo koje funkcije iz paketa, on mora biti prvo uitan korienjem funkcije Needs["DatabaseLink`"] In[1]:= Needs["DatabaseLink`"]; 3.2. Konekcija sa bazom Detalji o konekciji sa bazom podataka su opisani u poglavlju Konekcija sa bazom podataka. Metoda komandne linije koristi funkciju OpenSQLConnection koja vraa podatke i barata njima. U prateem otvaranju veze ukljuena je jedna prosta baza. In[2]:= conn = OpenSQLConnection["demo"] Out[2]= SQLConnection[demo, 7, Open, TransactionIsolationLevel -> ReadCommitted] Tu je GUI metoda za konekciju sa bazom podataka koja se poziva izvravanjem OpenSQLConnection bez argumenata.Kada je ona pozvana, Connection Tool (alat za konekciju ) prikazuje; u tom trenutku konekcija mora biti uspostavljena ili alat treba biti braen u prethodno stanje prije nego to operacija bude nastavljena. In[3]:= conn1 = OpenSQLConnection[];

13

3.3. Prikaz podataka iz baze Jedna relaciona baza podataka sadri odreeni broj tabela; svaka tabela sadri podatke u razliitim kategorijama (obino nazvane kolonama podataka). Svaki red u tabeli sadri vrednosti podataka za svaku razliitu kategoriju. Aplikacije baze podataka obezbeuju funkcije za upravljanje tim podacima podravajui funkcije upite, unos, auriranje ili brisanje podataka. Tabele su fundamentalne za relacione baze podataka, i vano je da postoji praktian nain da ih predstavimo. To se moe postii sa SQLTables komandom, kao na primer. In[4]:= SQLTables[conn] Out[4]= {SQLTable[SAMPLETABLE1, TableType -> TABLED]} Korienjem ove komandedobie te informacije o specifinim kolonama u tabeli. U sledeem primeru predstaviemo Vam informacije o kolonama u bazi SAMPLETABLE1 In[5]:= SQLColumns[conn, "SAMPLETABLE1"] Out[5]= {SQLColumn[{SAMPLETABLE1, ENTRY}, DataTypeName -> INTEGER, Nullable -> 1, DataLength -> Null], SQLColumn[{SAMPLETABLE1, VALUE}, DataTypeName -> DOUBLE, Nullable -> 1, DataLength -> Null], SQLColumn[{SAMPLETABLE1, NAME}, DataTypeName ->VARCHAR, Nullable ->1, DataLength ->2 147 483 647]} Moete da preuzmete podatke iz tabele SAMPLETABLE1 izvravanjem jedne SQLSelect komande kao na primer. In[6]:= data = SQLSelect[conn, "SAMPLETABLE1"] Out[6]= {{1, 5.6, Day1}, {82, 5.9, Day2}, {3, 7.2, Day3}, {4, 6.2, Day4}, {5, 6., Day5}} Rezultat upita nad bazom podataka je Matematika lista, koja moe biti koriena u bilo kojoj Matematica komandi. U sledeem primeru poslednji element svakog reda je iscrtan. In[7]:= ListLinePlot[data[[All, 2]]]

14

Naredni primer preuzima podatke iz tabele SALES, ali dodaje naslove kolona i ispisuje rezultat u tabelarnom obliku. In[8]:= SQLSelect[conn, "SAMPLETABLE1", "ShowColumnHeadings"-> True] // TableForm Out[8]= ENTRY VALUE NAME 1 5.6 Day1 2 5.9 Day2 3 7.2 Day3 4 6.2 Day4 5 6. Day5 DatabaseLink dozvoljava takoe da unesete SQL komandu; ovo moe biti korisno , ako ste ve upoznati sa SQL-om i ne elite da uite nove jezike. Naveemo jo jedan primer koji pokazuje kako se mogu predstaviti svi podaci u tabeli SALES. In[9]:= SQLExecute[conn, "SELECT * FROM SAMPLETABLE1"] Out[9]= {{1, 5.6, Day1}, {82, 5.9, Day2}, {3, 7.2, Day3}, {4, 6.2, Day4}, {5, 6., Day5}}

3.4. Unos podataka u bazu Vi moete koristiti SQLInsert komandu za unos podataka u tabela. Na primer,pomou sledee linije koda dodaemo jedan red u tabeli. In[10]:= SQLInsert[conn, "SAMPLETABLE1", {"ENTRY", "VALUE", "NAME"}, {6, 8.2, "Day6"}] Out[10]= 1 Sada emo videti pomou komande SQLSelect red koji smo prethodno dodali.

15

In[11]:= SQLSelect[conn, "SAMPLETABLE1", "ShowColumnHeadings" -> True] // TableForm ENTRY VALUE NAME 1 5.6 Day1 2 5.9 Day2 3 7.2 Day3 4 6.2 Day4 5 6. Day5 6 8.2 Day6

Out[11]=

Takoe je mogue koristiti jedno rednu SQL komandu za unos vie podataka. Zapazite kako je string bio unesen, Day7, koristei navodnike sa jednom crtom ('). Takoe je mogue koristiti i duple navodnike. I ako Matamatica zahteva u svom stringu naveenje backslash karaktera (\), izbegavajte ga. In[12]:= SQLExecute[conn, "INSERT INTO SAMPLETABLE1(ENTRY, VALUE, NAME) VALUES (7, 6.9, 'Day7')"] Out[12]= 1 Druga verzija jednoredne SQL komande obuhvata korienje takozvanih placeholder (nosilac poloaja) da predstave gde e argumenti ii i onda daje pomou SQLExecute komande listu argumenata koji sadre aktuelne argumente. Ovo je posebno korisno jer se izbegava potreba spajanja stringova iz jednoredne komande. In[13]:= SQLExecute[conn, "INSERT INTO SAMPLETABLE1 ( ENTRY, VALUE, NAME) VALUES (`1`, `2`, `3`)", {8, 10.5, "Day8"}] Out[13]= 1 U sledeim linijama koda predstaviemo vam podatke tekue podatke u tabeli. In[14]:= SQLExecute[conn, "SELECT * FROM SAMPLETABLE1"] Out[14]= {{1, 5.6, Day1}, {2, 5.9, Day2}, {3, 7.2, Day}, {4, 6.2, Day4},{5, 6., Day5}, {6, 8.2, Day6}, {7, 6.9, Day7}, {8, 10.5, Day8}}

3.5. Auriranje podataka iz baze Takoe pomou SQL Update komande moemo aurirati podatke u tabeli.esto je to kombinacija sa uslovom, tako da se samo neki podaci modifikuju. Na primer ako je vrednost kolone VALUE>8 aitiraemo tu kolonu i postaviti tu vrednost na 7. In[15]:= SQLUpdate[ conn, "SAMPLETABLE1", {"VALUE"}, {7}, SQLColumn{"VALUE"}> 8}
16

Out[15]= 2 Da biste se uverili da smo airirali colonu VALUE pomou ve opisane komande predstaviemo trenutne podatke iz tabele. In[16]:= SQLSelect[ conn, "SAMPLETABLE1", "ShowColumnHeadings" -> True] // TableForm ENTRY 1 2 3 Out[16]= 4 5 7 6 8 VALUE NAME 5.6 Day1 5.9 Day2 7.2 Day3 6.2 Day4 6. Day5 6.9 Day7 7. Day6 7. Day8

Takoe je mogue koristiti jedno rednu SQL komandu za auriranje podataka.Naredne linije koda opisuju auriranje svih redova ija je vrednost u koloni VALUE vea ili jednaka sa brojevima 6 i 7. In[17]:= SQLExecut[conn,"UPDATE SAMPLETABLE1 SET VALUE = `1` WHERE VALUE >= `2`", {7, 6}] Out[17]= 6 In[18]:= SQLExecute[conn, "SELECT * FROM SAMPLETABLE1"] Out[18]= {{1, 5.6, Day1}, {2, 5.9, Day2}, {3, 7., Day3}, {4, 7., Day4}, {5, 7., Day5}, {7, 7., Day7}, {6, 7., Day6}, {8, 7., Day8}}

3.6. Brisanje podataka iz baze Pomou SQLDelete komande mogue je brisati podatke u tebeli. esto je ova komanda data uslovom tako da samo neki podaci bivaju izbrisani. Na primer izbrisaemo sve redove koji u koloni VALUE imaju veu ili jednaku vrednost sa brojem 7. In[19]:= SQLDelete[ conn, "SAMPLETABLE1", SQLColumn["VALUE"] >= 7] Out[19]= 6 Da bismo se uverili u novo-nastale promene upotrebiemo komandu SQLSelect In[20]:= SQLSelect[conn, "SAMPLETABLE1", "ShowColumnHeadings" -> True] // TableForm
17

ENTRY VALUE NAME 1 5.6 Day1 Out[20]= 2 5.9 Day2 Kao i u prethodnim sluajevima mogue je koristiti jednorednu SQL komandu za brisanje podataka.Potretanjem sledee linije koda izbrisaemo sve podatke iz kolone VALUE koji su veii od 5.7. In[21]:= SQLExecute[ conn, "DELETE FROM SAMPLETABLE1 WHERE VALUE > 5.7"] Out[21]= 1 Obzirom da je postojao samo jedan red sa datom vrednou, preostao je samo jedan red u koloni VALUE koga emo prikazati In[22]:= SQLExecute[ conn, "SELECT * FROM SAMPLETABLE1"] Out[22]= {{1, 5.6, Day1}} 3.7. Paketske komande Ako elite da ponovite istu komandu vie puta, moete to uraditi obezbeujui ponavljanje argumenata u listi.Prevoenje iste komande na ovaj nain je mnogo bre nego da se to radi odbvojeno za svaku komandu. Pratea komada unosi 2 reda. In[23]:= SQLInsert[ conn, "SAMPLETABLE1", {"ENTRY", "VALUE", "NAME"}, {{2, 5.9, "Day2"}, {3, 7.2, "Day3"}}] Out[23]= {1, 1} Naredna jednoredna funkcija unosi vie od dva reda. In[24]:= SQLExecute[ conn, "INSERT INTO SAMPLETABLE1(ENTRY, VALUE, NAME) VALUES (`1`, `2`,`3`)",{{4, 6.2, "Day4"}, {5, 6., "Day5"}}] Out[24]= {1, 1} Predstaviemo sada rezultat unosa podataka u bazu komandom SQLInsert. In[25]:= SQLExecute [ conn, "SELECT * FROM SAMPLETABLE1"] Out[25]= {{1, 5.6, Day1}, {2, 5.9, Day2}, {3, 7.2, Day3}, {4, 6.2, Day4}, {5, 6., Day5}}

18

3.8. Explorer baze podataka. Explorer baze podataka je grafiki interfejs za funkcionalnost baze podataka. On moe biti pokrenut uitavanjem DatabaseLink-a i izvravanjem komande DatabaseExplorer[]. In[27]:= Needs["DatabaseLink`"]; DatabaseExplorer[] Out[28]= -GUIObjectKada se otvori Explorer baze podataka, moete se povezati sa razliitim bazama podataka koje su konfigurisane za va sistem. Takoe je mogue kreirati novu konekciju.Nakon konekcije sa bazom podataka moemo videti tabele i kolone ako u sledeem primeru.

Slika 4. Database Explorer Moemo onda videti podatke u bazi klikom na Result tab. Evo primera.

Slika 5. Database Explorer podaci iz baze Explorer baze podataka podrava mnogo vie mogunosti, kao to su formiranje komplikovanijih upita, uvanje upita i kreiranje izvetaja sa rezultatom upita (sauvani kao Matematica notebook)
19

4. Uporeivanje paketa Matematica i SQL upita DatabaseLink omoguava dva stila komandi za rad sa podacima.Jedan slit je iz familije Matematica programskog paketa a drugi stil je iz familije SQL.Matematica stil zahteva manje znanja od SQL. bilo kako bilo Matematica komande na daju kompletne izvetaje.Za vie, napredne upite, SQL komande mogu biti preporuljivije. Takoe je bolje se preporuuje SQL ako ve imate pred znanja o njenu. 4.1. Matematica-Stil upita. DatabaseLink nudi jedan borj funkcija za Matematica-stil upita, i to su: SQLSelect SQLUpdate SQLInsert SQLDelete SQLCreateTable SQLDropTable SQLMemberQ SQLStringMatchQ

Prvih est funkcija slue za interakciju sa bazom podataka . SQLMemberQ i SQLStringMatchQ se koriste za testiranje podataka u upitima sa uslovima. 4.2. SQL-Stil upita. DatabaseLink moe koristiti SQL izjave prilikom rada sa bazom podataka.To je korisno ako ve poznajete SQL.Izjave mogu biti koriene da selektuju podatke, kreiraju tabele, unose podatke, auriraju podatke, briu podatke i briu tebele.Obino se ove izjave odnose na komandu SQLExecute. Izjave koriene od strane SQLExecute su stringovi koji mogu sadrati sve argumente. Kako god bilo, takoe je mogue dati argumente pojedinano, to ini izjavu kao pripremljnu. SQLExecute moe biti takoe koriena pri izvravanju serije pripremljenih izvetaja sa razliitim argumentima. 5. Procesiranje slike 5.1. Kreiranje i prezentacija slike. Slike mogu biti kreirane od numerikih nizova, iz Matematica grafije preko iseci-inalepi metode (cut-and-paste) metode, i iz eksternih uvoza putem uvoza Image[data] Import["file"] raster slika sa vrednostima piksela daje podatke importovanje podataka iz fajla

Tabela 5. Funkcije za kreiranje slike Najjednostavniji metod za kreiranje image objekta (slike) je da pedstavimo sliku kao matricu sa realnim vrednostima od 0 do1.
20

Predstaviemo vam sliku stvorenu iz matrice. In[1]:= Image[{{0., 1., 0.}, {1., 0., 1.}, {0., 1., 0.}}]

Out[29]= Takoe moete da kopirate i nalepite ili prevuete i ispustite slike iz drugih aplikacija.Moete koristiti Import (uvoz) funkciju da biste dobili sliku iz datoteke sa lokalnog sistema ili sa bilo koje dostupne udaljene lokacije. Evo jedne importovane slike iz Matematica dokumentacionog direktorijuma ExampleData. In[10]:= i = Import["ExampleData/ocelot.jpg"]

Out[10]= Korisne osobine slike mogu se dobiti pozivom na sledee funkcije ImageDimensions[image ] ImageChannels[image] ImageType[image] ImageQ[image] Options[symbol] ImageData[image] daje dimenzije piksela rastera u vezi sa slikom daje broj kanala prisutan u podacima za sliku daje tip vrednosti koji se koristi za svaki piksel element u slici daje True ako slika ima validnu formu Image objekta i False u suprotnom daje listu podrazumevanih opcija dodeljenih simbolu niz vrednosti piksela u slici Tabela 6. Funkcije za properties slike
21

Pratea linija koda vraa kao rezultat dimenziju slike In[11]:= ImageDimensions[i] Out[11]= {200, 200} Dok naredna linija koda predstavlja osobine ColorSpace opcije In[12]:= Options[i, ColorSpace] Out[12]= {ColorSpace -> Grayscale} Slika je u stvari niz vrednosti piksela i moe se lako izdvojiti koristeu funkciju ImageData. Po default-u funkcija vraa realne vrednoti, ali moemo "pitati" za odreenu vrednost koristei opcioni "type" argument. Naredne linije koda vraaju fragment slike kao matricu realnih vrednosti podeenih u opsegu od 0 do 1. In[14]:= ImageData[ImageTake[i, {94, 97}, {54, 59}]] // MatrixForm Out[14]//MatrixForm= 0.772549 0.392157 0.0627451 0.203922 0.352941 0.372549 0.560784 0.0.164706 0.415686 0.415686 0.458824 0.278431 0.0352941 0.286275 0.435294 0.427451 0.368627 0.184314 0.0666667 0.32549 0.443137 0.54902 0.701961 Ovde su isti fragmenti slike predstavljeni matrino kao celobrojne vrednosti u opsegu od o do 255 In[13]:= ImageData[ImageTake[i, {94, 97}, {54, 59}], "Byte"] // MatrixForm Out[13]//MatrixForm= 197 100 16 52 90 95 143 0 42 106 106 117 71 9 73 111 109 94 47 17 83 113 140 179 U sluaju viekanalnih slika, sirovi podaci piksela se predstavljaju kao 3D nizovi ureeni na jedan od dva mogua naina odreenim opciom Interleaving Predstaviemo vam Importovanje slike: In[1]:= i = Import["ExampleData/lena.tif"]

22

Out[1]= Po podrazumevanim osobinama Interleaving -> True podaci su organizovani kao 2D nizovi lista vrednosti boja, a trojke u zajednikom sluaju kao slike u RGB prostoru boja. Sada emo vam predstaviti podrazumevanu organizaciju podataka. In[22]:= MatrixForm@ImageData[ImageTake[i, {90, 93}, {50, 53}], "Byte"]

Out[22]//MatrixForm= Opcija podeavanja Interleaving -> False moe da se koristi za uvanje i preuzimanje sirovih podataka kao lista matrica, jadna za svaku od boja kanala. Ovde je fragment primera slike resporeene kao spisak kanala matrica. In[23]:= MatrixForm /@ ImageData[ImageTake[i, {90, 93}, {50, 53}], "Byte", Interleaving -> False] Out[23]= { 30 35 37 43 24 22 24 27 30 23 1619 33 34 40 49 28 24 26 33 33 23 18 22 31 32 38 53 28 23 24 37 32 22 16 24 33 34 35 55, 31 27 21 38, 35 25 13 27 }

Viekanalna slika moe se podeliti u listu pojedinanih kanalnih slika i obratno, a viekanalne slike mogu biti kreirane od bilo kog broja jednokanalnih slika.Pomou naredne linije koda predstaviemo vam primer podeljene slike u RGB color modu u tri crnobele slike. In[2]:= ColorSeparate[i]
23

Out[2]= {

In[3]:= First[Options[#, "ColorSpace"] & /@ %] Out[3]= {ColorSpace -> Grayscale}

5.2. Osnovne oprecije za manupulaciju sa slikama. Razmislite da manipuluete slikom tako to ete promijeniti njenu dimenziju pomou operacija crop ili pading (isecanje i uvlaenje slike od datih margina). Ove operacije slue u razne korisne svrhe. Crop-ovanje slike vam omoguava da kreirate novu sliku od ve postojee slike, a padding se obino koristi da se proiri slika na po ivicama i obezbedi ravnomerno tretiranje graninih piksela u mnogim zadacima obrade slike. ImageTake [image,n] ImageCrop[image] ImagePad [image,m] daje sliku koja se sastoji od prvih n redova slike crop slike uklanjanjem granica jedinstvene boje. uvlaenje slike sa svih strana sa m pozadinskih piksela.

Tabela7. Croping i pading operacije nad slikom. Primer ove selekcije slike predstavlja njenih prvih 50 redova In[24]:= ImageTake[i, 50]

Out[24]= ImageCrop povoljno dopunjuje ImageTake.Umesto navoenja tanog broja redova ili kolona koje e se izdvojiti, omoguava vam da definiete eljenje dimezije nastale slike tj. broj redova i kolona koje e biti zadrane. Na osnovu podrazumevanih vrednosti, operacija crop-ovanja je usresreenja tako da brie jednak broj redova i kolona od ivica slike. Evo jednog 100x100 regiona koji je izveden iz centra slike. In[27]:= ImageCrop[i, {100, 100}]

24

Out[27]= Dok se ImageCrop prvenstveno koristi za smanjenje dimenzije izvorne slike, esto je poeljna pad funkcija za poveanje njene dimenzije.U Matemtatici su sve padding metode podrane. Evo primera koji pokazuje etiri razliita metoda primene ImagePad funkcije nad desnom ivicom slike. In[33]:= Grid@Partition[ ImagePad[i, {{0, 50}, {0, 0}}, #] & /@ {0, "Reflected", "Fixed", "Periodic"}, 2]

Out[33]= esto je potrebno da promenite dimeziju slike ili njen poloaj ili da je transformiete u nekom drugom obliku.Funkcije koje obavljaju ove osnovne geometrijske zadatke su vam lako dostupne. ImageResize[image,w] Thumbnail[image] ImageRotate[image] ImageReflect[image] daje promenjenu veliinu slike koja je w piksela irine. daje minijaturnu verziju slike rotira sliku u smeru suprotnom od 900 reflekcija slike sa vrha ka dnu.

Tabela8. Funkcije za obavljanje geometrijskih zadataka nad slikom. U ovom primeru ImageResize funkcija se koristi da povea i umanji veliinu originalne slike, respektivno. In[38]:= Row@{ImageResize[i, 200], Spacer[10], ImageResize[i, 50]}

25

Out[38]= ImageRotate je druga uobiajena prostorna operacija.Ona rezultira time da se svi njeni pikseli rotiraju u suprotnom smeru u odnosu na centralnu taku n slici. U ovom primeru slika je rotirana za 300 In[39]:= ImageRotate[i, /6]

Out[39]= Nekoliko korisnih zadataka procesiranja slika zahteva nita vie od jednostavnih aritmetikih operacija izmeu dve slike ili slika I jedna konstanta.Na prImer moete da promenite svetlinu mnoenjem slike sa konstantnim faktorom ili dodavanjem (oduzimanjem) konstante (sa) slike. Jo interesantnije, razlika izmeu dve slike moe biti koriena za detekciju promena.Proizvod dve slike moe biti korien da sakrije ili istakne regione u slici u procesu nazvanom maskiranje.Za ovu svrhu tri osnovne funkcije su na raspolaganju. ImageAdd[image,x] dodavanje iznosa x za svaku kanalnu vrednost u slici ImageSubtract[image,x] oduzimenja vrednosti konstante za svaku kanalnu vrednost slike ImageMultiply[image,x] umnoavanje svake vrednosti kanala u slici od faktora x Tabela 8. Aritmetike operacije. Evo primera meanja slike koristei sabiranjje i oduzimanje.

In[17]:= ImageAdd[ImageMultiply[i, 2 / 3], ImageMultiply[ 1 / 3]]

,
26

Out[17]= Pored osnovnih funkcija za procesiranje slika postoje i napredne tehnike kao to su procesiranje slike po point operaciji i procesiranje slika po operaciji oblasti. Takoe je mogue pomou ovih naprednih opcija sliku predstaviti u RGB modu i ostalim color modovima. 6.Dinamiko programiranje u MATHEMATICA i DatabaseLink-u programskom paketu

Naveemo opte karakteristike dinamikog programiranja: -Ralanjivanje na etape globalnog modela (problema) tako to se u okviru svake etape vri optimizacija ciljne funkcije (maksimizacija dobiti, minimizacija trokova, i slino) -Faza ili etapa se definie kao ureeni skup stanja. -Prilikom izbora procesa upravljanja, transformacija svakog stanja tekue etape je povezana sa sledeom etapom, tako da ako se problem DP interpretira kao mreni model, svaki vor u mrei odgovara jednom stanju. -Optimalno upravljanje poinje sa prvom ili poslednjom etapom u zavisnosti od prirode modela. Dinamiko programiranje je tehnika za reavanje problema sa rekurzivnom strukturom koja poseduje sledee karakteristike: 1. Optimalne podstrukture (Belmanov princip optimalnosti): neko optimalno reenje na proizvoljnoj instanci sadri optimalno renje svih svojih podin- stanci. 2. Mali broj podproblema ukupan broj podproblema koji e se reavati je mali. 3. Preklapanje podproblema: u toku rekurzije pojavljuju se isti podproblemi vie puta. Dinamiko programiranje se obino primenjuje u problemima optimizacije: problem moe imati mnogo reenja, svako reenje ima vrednost, a trai se reenje koje ima optimalnu (najveu ili najmanju) vrednost. U sluaju da postoji vie reenja koja imaju optimalnu vrednost, obino se trai bilo koje od njih. Sama re "programiranje" ovde se (kao i u linearnom programiranju) odnosi na popunjavanje tabele pri reavanju problema, a ne na upotrebu kompjutera i programskih jezika. Tehnike optimizacije koje imaju elemente dinamikog programiranja su bile poznate i ranije, ali tvorcem metoda danas se smatra profesor Riard E.Belman. Belman je prouavao dinamiko programiranje i dao vrstu matematiku osnovu za ovaj nain reavanja problema. Uopteno govorei, problem se
27

reava tako to se uoi hijerarhija problema istog tipa, sadranih u glavnom problemu, i reavanje se pone od najjednostavnijih problema. U nasvaku, predstaviemo vam nekoliko primera primene MATHEMATICA i DatabaseLinka u dinamikom programiranju koristei preteno tehnike optimizacije pri reavanju problema. 6.1. Problem ranca Problem: Jedan od najpoznatijih problema dinamikog programiranja jeste problem ranca (knapsack problem). Problem ima nekoliko poznatih varijanti.Provalnik sa rancem u koji moe da stane N zapreminskih jedinica, upao je u prostoriju u kojoj se uvaju vredni predmeti. U prostoriji ima ukupno M tipova predmeta, pri emu je svaki tip predmeta raspoloiv u vrlo velikoj koliini (vie nego to moe da stane u ranac). Za svaki tip predmeta poznata je njegova vrednost V (k) i njegova zapremina Z(k), k = 1..M. Sve navedene veliine su celobro-jne. Provalnik eli da napuni ranac najvrednijim sadrajem. Potrebno je odrediti predmete koje treba staviti u ranac, i njihovu zbirnu vrednost. Reenje: Postoji puno reenja i ovog problema, u nastavku predstaviemo vam program u Mathematica paketu gde problem ranca sada mo\e dati formalno kao maksimiziranje vrednosti.

Sa veliinom ogranienja

Sada predpostavimo da su predmeti poreani po veliini kao S 1<=S2<=..<=Sn.Lako je videti da dva razliita objekta iste veliine samo jedan e biti vrednoat kao optimalno reenje.Zato moemo ak predpostaviti S1<S2<..<Sn.Takoe moemo predpostaviti da vrednosti V1<V2<..<Vn Problem ranca moe biti reen rekurzivno. Funkcija Knapsack[{{S1,V1},{Sn, Vn}},S] Pronalazi reenje (i vraa optimalne vrednosti) za date Si,Vi i S po preteem razmatranju: 1.Ako ne postoje objekti onda je n=0 i reenje je 0 Knapsack[{},S] 2a. U suprotnom moemo rekurzivno pronai reenje koje ne podrazumeva poslednju vrstu objekata k1= Knapsack[{{S1,V1},{Sn-1, Vn-1}},S]
28

2b. Ako je S>=Sn moemo uslovno smestiti jedan objekat tipa n u ranac i pokuati da ispunimo preostali kapacitet S-Sn optimalno: k2= Knapsack[{{S1,V1},{Sn, Vn}},S-Sn]+ Vn Imajte na umu da ne smemo iskljuiti tipa n u ovom rekurzivnom pozivu, jer moda postoji vie od jednog objekta tipa n u optimalno reenje 3. Optimalno reenje je vee od k1 i k2 Budite sigurni u to da se rekurzija uvek zavrava. Ispravnost sledi iz opteg naela da je bilo koji deo optimalnog reenja i sam optimalan. Ako optimalno reenje sadri jedan objekat tipa i, reenje bez ovog objekta je optimalno za problem ranca veliine S-Si. U suprotnom postoji bolje renje za ceo problem ranca.Prosto emo dodati jedan objekat tipa i odnosto vratiti optimalno reenje za veliine S-Si. U programu koji je implementiran funkcija Knapsack[] ne vraa optimalne vrednosti ali packing list je lista objekata u optimalnoj soluciji.Obraun ukupnih vrednosti dobijamo pomou funkcije total[ ] Objekti su dati kao lista parova veliina/vrednost U ovom primeru veliine su (3,4,7,8,9); a vrednosti su (4,5,10,11,13). Optimlna reenja sadre jedan objekat tipa 1 i dva objekta tipa 3. Ovde je optimalna vrednost postignuta sa reenjem 24. Pored ovog primera dat je jo jedan primer gde su veliine i vrednosti date iz baze podataka.Dakle funkcijom Needs["DatabaseLink`"]; pokreemo DatabaseLink I u nastavku pomou ODBC konekcije pristupamo bazi podataka a pomou SQL upita izlistavamo podatke iz odgovarajue tabele VIRTUAL_TABLE I unosimo ih kao vrednosti I veliine, kao optimalno reenje dobijamo 153.

29

Out[90]=24

In[90]:=total[%,mat] Out[90]=153

30

6.2. Problem maksimalnog zbira u matrici (tabeli baze podataka) Problem: Neka je dat pravougaonik A sa M vrsta i N kolona, popunjen celim brojevima. Iz svakog polja je dozvoljeno prei samo na polje ispod ili na polje desno od tog polja. Potrebno je izabrati put od gornjeg levog polja do donjeg desnog polja, tako da zbir brojeva u poljima preko kojih se prolazi, bude maksimalan. Ispisati vrednost optimalnog puta, a zatim i put kao niz koordinata polja preko kojih se prolazi. Reenje: Problem maksimalnog zbira moe se reti u na vie naina. U svakoj varijanti podrazumevaemo (ako se drugaije ne napomene) da je potrebno kretanjem kroz matricu postii najvei zbir i da se na svako polje moe stati najvie jednom. Jedan od naina jeste pronalaenje maksimalnog elementa u svakoj koloni matice i sumiranje tih elemenata to emo i uiniti u sledeim linijama koda. Kao to je navedeno ranije matrica e u stvari predstavljati tabelu iz baze podataka. Pomou fukncije Needs["DatabaseLink`"]; pokreemo DatabaseLink i u nastavku pomou ODBC konekcije pristupamo bazi podataka a pomou SQL upita izlistavamo podatke iz odgovarajue tabele VIRTUAL_TABLE dobijene podatke predstavljamo matrino pomou funkcije MatrixForm [] a zatim je predstavljamo kao tabelu. Pomou funkcije Max/@Transponce@ pronalazimo iz svake kolone date tabele maksimalni element I smestamo ga u niz (listu). Na kraju pomou Total[Max/@Transponce@] sabiramo dobijene vrednosti. U navedenom primeru maksimalni zbir matrice je 32.

31

Na primer: Za datu matricu odnosno tabelu iz baze podataka maksimalni zbir je 32. 6.3. Najbre stepenovanje Problem:Dat je prirodan broj N i promenljiva K. Koristei operacije mnoenja i ste penovanja,male zagrade i promenljivu K, napisati izraz koji je jednak KN, a u kome uetvuje minimalan broj operacija. Mnoenje se smatra jednom operacijom. a raunanje Q-tog
stepena smatra se za Q-I operacija. Prilikom ispisivanja izraza stepenovanje oznaiti sa dve zvezdice. Primer: za N = 5, potrebne su tri operacije: K5 = (K *K)2 * K.,

32

Reenje: Kada je u pitanju stepenovanje brojeva Mathematica ima ve ugraenu funkciju kojom se stepenuju ili eksponenciraju brojevi, odnosno ima funkciju kojom se exponenciraju elementi matrice. U sledeem primeru prikazeemo eksponenciranje matrice dobijene iz tabele baze podataka. Kao i u prethodnim zadacima pomou fukncije Needs["DatabaseLink`"]; pokreemo DatabaseLink i u nastavku pomou ODBC konekcije pristupamo bazi podataka a pomou SQL upita izlistavamo podatke iz odgovarajue tabele VIRTUAL_TABLE. Zatim pomou ugraene fuknkcije MatrixExp[] eksponenciramo matricu.

6.4. Problem trgovakog putnika Problem: Zadatak nalaenja najkrae Hamiltonove konture na zadatoj mrei naziva se problem trgovakog putnika (Traveling Salesman Problem, TSP). Hamiltonova kontura je put koji kroz sve vorove grafa prolazi jednom i samo jednom i zavrava se u poetnom voru:

33

Nalaenje najkrae Hamiltonove konture lii na realni zadatak trgovakog putnika koji planira obilazak vie gradova, pri emu polazi iz jednog grada i vraa se u isti. Reenje: Postoji takoe puno naina za reenje ovog problema. Programski paket Mathematica ima niz ugraenih funkcija za reenje ovog problema. U nastavku vam predstavljamo reenje problema u Mathematica i DatabaseLink-u korienjem matrice dobijene iz tabele baze podataka. Pomou fukncije Needs["DatabaseLink`"]; pokreemo DatabaseLink i u nastavku pomou ODBC konekcije pristupamo bazi podataka a pomou SQL upita izlistavamo podatke iz odgovarajue tabele VIRTUAL_TABLE, Svaka taka na graficma predstavlja potencijalni grad gde putnik preba da proe. Za date vrednosti iz tabe Hamiltonova kontura je tana. Pomou funkcije TravelingSalesman[g] reava se problem putnika odreivanjem potencijalnih taaka (gradova) kroz koje putnik treba da pore I vrati se na poetnu taku (grad)

34

35

6.5. Najdui zajdniki podniz Problem: Niz A je podniz niza B, ako se precrtavanjem nekih elemenata niza B moe dobiti niz A. Na primer (1,3,3,5) je podniz od (1,2,3,3,4,5), a nije podniz ni od (1,5,2,3,3,4) ni od (1,2,3,4,5). Data su dva niza: P od M i Q od N elemenata. Nai niz najvee mogue duine koji je podniz i za P i za Q. Reenje: to se tie reavanja problema najdueg zajdnikog podniza, Mathematica takoe ima ugraenu funkciju za ovaj problem. Sledi implementacija problema korienjem niza ko tabele iz baze podataka. Pomou fukncije Needs["DatabaseLink`"]; pokreemo DatabaseLink i u nastavku pomou ODBC konekcije pristupamo bazi podataka a pomou SQL upita izlistavamo podatke iz odgovarajue tabele VIRTUAL_TABLE. Kao i u prethodnim primerima dobijamo podatke iz baze, samo sto u ovom sluaju transponujemo matricu u jdnodimenzionalni niz. Pomou funkcije LongestContiguousIncreasingSubsequence[] koju smo mi kreirali (ona u
36

sebi sadri funkcije Last, Split, Sort itd koje pronalaze najdui podniz od zadatog) dobijamo odgovarajui rezultat.

37

7. Zakljuak U dananjem drutvu gotovo da i nema profesije koja u svom svakodnevnom radu ne koristi raunare i Internet. Suvremena tehnologija postala je dio nae svakodnevice. Postoji razliiti softwari za rjeavanje odreene vrste problema te ogromne baze podataka koje nam u svakom trenutku mogu pruiti razliite informacije. Iako je pojava Wolfram Matematica u informatikom svijetu odjeknula kao revolucija rijetko je koji informatiar koristi. Mautiim, korist ovog programskog paketa u rjeavanju matematikih kao i informatikih problema je velika. Osim to moe posluiti za razliita izraunavanja, upporeivanja, provjeru i interpretaciju rezultata u nekim situacijama pokazuje i predlae postupak rjeavanja. Stoga je Wolfram Matematica izuzetno koristan programski paket svakom ko rjeava matematike i informatike zadatke.

8. Literatura [1] Wolfram Mathematica Tutorial Collection DATABASELINK USER GUIDE - 2008 Wolfram Research, Printed in the United States of America. [3] Harmut F.W. Hoft, Margret H.Hoft COMPUTING WITH MATHEMATICA- Eastern Michigan University Ypsilanti, MI, University of Michigan-Dearborn Dearborn, MI. 2003,Elsevier Science (USA) [4] Predrag S. Stanimirovi, Gradimir V. Milovanovi "MATEMATIKO PROGRAMIRANJE" Ni 2007 godine. [5] Predrag S. Stanimirovi, Neboja Stojkovi, Marko Petkovi "PROGRAMSKI PAKET MATHEMATICA I PRIMENE" Ni 2002 godine. [6] Roman E.Maeder "COMPUTER SCIENCE WITH MATHEMARICA" 2000, Cambridge Univerzity Press (USA). [7] Nataa Petek Lonari i Sanja Lopari Wolfram Alpha matematika za sve i svakog 2008, Tehnika kola akovec

[8] http://mathworld.wolfram.com/

38

You might also like