Seminarski Rad-Primena Matematica Paketa

Embed Size (px)

Citation preview

UNIVERZITET U NIU

PRIRODNO-MATEMATIKI FAKULTET

Departman za raunarske nauke

Seminarski radPredmet: Simbolika i algebarska izraunavanjaTema: "Primena Mathematica paketa u procesiranju slika i radu sa bazom podataka"Student: Mentor:

Msc Faruk Selimovi Prof.dr. Predrag Stanimirovi Ni

Januar, 2013. god.

Sadraj

31.Uvod

31.1. Matematike aplikacije baza podataka

41.2. DatabaseLink tehnologija

42.Povezivanje sa bazom

42.1 Podeavanje baze podataka

42.2. Uspostavljanje veze

62.3. Informacije o konekciji

72.4. JDBC Konekcija

92.5. ODBC Konekcija

92.5.1. Podeavanje konekcije

112.5.1. Korienje konekcije

123.Osnovne komande za rad za bazom podataka - Comand line interface

123.1. Uitavanje paketa

123.2. Konekcija sa bazom

133.3. Prikaz podataka iz baze

143.4. Unos podataka u bazu

153.5. Auriranje podataka iz baze

163.6. Brisanje podataka iz baze

173.7. Paketske komande

183.8. Explorer baze podataka.

194. Uporeivanje paketa Matematica i SQL upita

194.1. Matematica-Stil upita.

194.2. SQL-Stil upita.

195. Procesiranje slike

195.1. Kreiranje i prezentacija slike.

235.2. Osnovne oprecije za manupulaciju sa slikama.

266.Dinamiko programiranje u programskom paketu MATHEMATICA i DatabaseLink-u

276.1. Problem ranca

296.2. Problem maksimalnog zbira u matrici (tabeli baze podataka)

316.3. Najbre stepenovanje

326.4. Problem trgovakog putnika

356.5. Najdui zajdniki podniz

377. Zakljuak

378. Literatura

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. 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 podatakaPostoji 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)2.Povezivanje sa bazomPrvi 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 vezeNaveemo sada funkcije koje se koriste za konekciju sa Bazom podataka.OpenSQLConnection[name]Povezivanje sa imenom SQL izvorom podataka

OpenSQLConnection[JDBC[driver,url]]Povezivanje sa izvorom podataka URL koristei JDBC

OpenSQLConnection[args,opts]Podeavane opcija za povezivanje

OpenSQLConnection[]Korienje alata za povezivanje za ovaranje konekcije

CloseSQLConnection[conn]Zatvaranje konekcije

SQLConnections[]Lista SQL konekcija

SQLConnectionInformation[conn]Opirnije informacije o SQL konekciji.

Tabela 1. Funkcije za povezivanje sa bazom podatakaSada 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 funkcijom CloseSQLConnectionIn[5]:= CloseSQLConnection[conn]

In[6]:= conn

Out[6]= SQLConnection[demo, 1, Closed, ]

Predstaviemo Vam jedan broj opcija koje se mogu dobiti upotrebom funkcije OpenSQLConnection.

Ime opcijeDefault vrednostOpis opcije

"Description"" "Tekstualni opis konekcije

"Name"" "Ime konekcije

"Username"" "Username koji se koristi za konekciju

"Password"" "Pasword koji se koristi za konekciju

"Catalog"AutomaticLokacija kataloga baze podataka

"ReadOnly"AutomaticPostavljanje konekcije da bude samo itljiva

"TransactionIsolationLevel"AutomaticPostavljanje izolacije za transakciju veze

Tabela 2. Opcije funkcije OpenSQLConnectionOve opcije mogu biti koriene kada otvorimo konkeciju. U prateem primeru dozvoljeno vam je da koristite razliite "username" i "pasword" za povezivanje.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"Lokacija kataloga baze podataka

"ReadOnly"Da li da bude otvorena samo za itanje

"TransactionIsolationLevel"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]]

Out[16]=

MaxUserNameLength 0

NullPlusNonNullIsNull True

NullsAreSortedAtEnd False

NullsAreSortedAtStart False

NullsAreSortedHight False

NullsAreSortedLow True

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]Podeavanje JDBC-a

JDBC[classname,url]JDBC podeavanje koje daje eksplicitno ime klase za drajvere (program pokreta)

JDBCDriverNames[]Lista imena koja su dostupna JDBC drajverima.

JDBCDrivers[]Detalji za sve JDBC drajvere

JDBCDrivers[name]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"]],

"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 DatabaseLink-a. 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 DatabaseResources direktorijum. Sledea tabela predstavlja neke mogue lokacije koje moete koristiti za instalaciju drajvera za konekciju za Oracle bazom podataka.

$UserBaseDirectory/Applications/Oracle/JavaLokacija za instalaciju drajvera za Oracle bazu podataka

$BaseDirectory/Applications/Oracle/JavaLokacija 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 KonekcijaOpen 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 konekcijeU 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\Examples

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). 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 AdministratorKlikom na Add buton otvorie se prozor Create New Data Source.

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

Slika 3. ODBC Microsoft Access Setup prozorIspinite 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 konekcijeSada 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]:= True] // TableFormOut[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 interfaceComand-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 bazomDetalji 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[];

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]]]

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.

In[11]:= SQLSelect[conn, "SAMPLETABLE1", "ShowColumnHeadings" -> True] // TableForm

ENTRY VALUE NAME

1 5.6 Day1

2 5.9 Day2 Out[11]= 3 7.2 Day3

4 6.2 Day4

5 6. Day5

6 8.2 Day6

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]= 1Druga 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]= 1U 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}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 VALUE NAME

1 5.6 Day1

2 5.9 Day2

3 7.2 Day3

Out[16]= 4 6.2 Day4

5 6. Day5

7 6.9 Day7

6 7. Day6

8 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 bazePomou 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]= 6Da bismo se uverili u novo-nastale promene upotrebiemo komandu SQLSelect

In[20]:= SQLSelect[conn, "SAMPLETABLE1", "ShowColumnHeadings" -> True] // TableForm

ENTRY VALUE NAME

1 5.6 Day1

Out[20]= 2 5.9 Day2Kao 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]= 1Obzirom 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}}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]= -GUIObject-Kada 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 ExplorerMoemo onda videti podatke u bazi klikom na Result tab. Evo primera.

Slika 5. Database Explorer podaci iz bazeExplorer baze podataka podrava mnogo vie mogunosti, kao to su formiranje komplikovanijih upita, uvanje upita i kreiranje izvetaja sa rezultatom upita (sauvani kao Matematica notebook)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

SQLStringMatchQPrvih 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-i-nalepi metode (cut-and-paste) metode, i iz eksternih uvoza putem uvozaImage[data]raster slika sa vrednostima piksela daje podatke

Import["file"]importovanje podataka iz fajla

Tabela 5. Funkcije za kreiranje slikeNajjednostavniji metod za kreiranje image objekta (slike) je da pedstavimo sliku kao matricu sa realnim vrednostima od 0 do1.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 funkcijeImageDimensions[image]daje dimenzije piksela rastera u vezi sa slikom

ImageChannels[image]daje broj kanala prisutan u podacima za sliku

ImageType[image]daje tip vrednosti koji se koristi za svaki piksel element u slici

ImageQ[image]daje True ako slika ima validnu formu Image objekta i False u suprotnom

Options[symbol]daje listu podrazumevanih opcija dodeljenih simbolu

ImageData[image]niz vrednosti piksela u slici

Tabela 6. Funkcije za properties slike

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}]] // MatrixFormOut[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.701961Ovde su isti fragmenti slike predstavljeni matrino kao celobrojne vrednosti u opsegu od o do 255In[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"]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]

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]daje sliku koja se sastoji od prvih n redova slike

ImageCrop[image]crop slike uklanjanjem granica jedinstvene boje.

ImagePad [image,m]uvlaenje slike sa svih strana sa m pozadinskih piksela.

Tabela7. Croping i pading operacije nad slikom.

Primer ove selekcije slike predstavlja njenih prvih 50 redovaIn[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}]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]daje promenjenu veliinu slike koja je w piksela irine.

Thumbnail[image]daje minijaturnu verziju slike

ImageRotate[image]rotira sliku u smeru suprotnom od 900

ImageReflect[image]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]}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 300In[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]]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 programskom paketu MATHEMATICA i DatabaseLink-u 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 struk-

turom 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 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 DatabaseLink-a 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 S1