Numerička obrada i simulacije (1. deo)
Autor: Stefan Nožinić
Samom pojavom računara nastala je mogućnost brzog izvršavanja velikog broja operacija. To znači da se omogućilo brzo rešavanje raznih jednačina i sličnih problema i na taj način su se mnogi problemi u prirodnim ali i društvenim naukama mogli brzo rešiti. To je brzo postalo popularno, postalo je jedna od glavnih primena računara, pa se izdvojilo kao zasebna oblast računarstva. Ta oblast se bavi raznim metodama za izračunavanje i simulaciju raznih fizičkih sistema, brzu obradu podataka i brzu vizualizaciju podataka. Ovo je omogućilo donošenje važnih zaključaka u vezi sa ponašanjem pojedinih sistema u određenim uslovima. Treba naglasiti da su ti sistemi uglavnom haotični i da se ne mogu rešiti analitički kako je to rađeno pre pojave računara i metoda za numerička izračunavanja.
Dok se skoro celo računarstvo bazira na činjenici da se operacije vrše u diskretnom domenu, ova oblast računarstva koristi kontinualne vrednosti kao što su vreme, pritisak i distanca. Iako se numerički metodi oslanjaju na kontinualne vrednosti i promenljive, ne smemo zaboraviti da računari i dalje imaju samo operacije za rad sa diskretnim vrednostima koje se „vrte ispod haube”. Zbog ovoga dolazi do gubitka tačnosti i, ako je sistem takav, može da pokaže neželjeno ponašanje. Pored ovog problema, ne smemo zaboraviti da izračunavanje može biti veoma sporo ako je broj trivijalnih računarskih operacija previše veliki. Između ova dva zahteva često treba pronaći kompromis jer veća tačnost zahteva i više operacija što dodatno usporava ukupno vreme izračunavanja. Takođe, računari su ograničeni i radnom memorijom čije zauzeće raste kada se i sami podaci za obradu povećaju.
Dok standardni računarski algoritmi koji rade sa diskretnim vrednostima imaju problem sa vremenom i memorijom, numerički algoritmi imaju i dodatni problem: tačnost rezultata.
Pored svega ovoga, numerički metodi imaju veliku primenu u današnje vreme — od kućnih računara, video igrica pa sve do predviđanja vremenskih uslova i svemirskih istraživanja i izrade opreme za te namene. Ovo je nateralo naučnike da se pozabave ključnim problemima koji se nameću prilikom numeričke obrade podataka i simulacije sistema.
Skoro svaki problem u numerici se može svesti na jednostavniji problem koji ima slično rešenje ili praktično približno isto kao očekivano rešenje. Ovaj proces se može videti kroz mnoge primere, a neki od njih su:
- Beskonačan broj iteracija se može zameniti konačnim brojem sve dok rešenje ne postane dovoljno blisko željenom;
- Zamena matrice matricom koja ima jednostavniju formu;
- Zamena komplikovanih funkcija funkcijama koje imaju jednostavniju formu kao što su to polinomi;
- Zamena nelinearnih problema linearnim problemima čije je rešenje isto ili dovoljno blisko;
- Zamena diferencijalnih jednačina algebarskim;
- Zamena sistema velikog reda sistemima manjeg reda;
- Zamena kontinualnog vremena diskretnim vremenskim koracima.
Ovde treba napomenuti da prilikom svakog koraka moramo paziti da rešenje ostane isto ili približno isto.
Na primer, sistem nelinearnih diferencijalnih jednačina možemo zameniti sistemom nelinearnih algebarskih jednačina pa taj sistem svesti na linearni sistem algebarskih jednačina za koji imamo metod kako da rešimo.
Softver
Pre nego što krenemo u dalje razmišljanje o konkretnim problemima, trebalo bi prvo da vidimo šta nam je na raspolaganju od softverskih alata. Ovde želimo da ukažemo na potrebu da se koriste postojeći alati i da nema potrebe praviti svoje osim ako vam nije cilj učenje kako ti alati funkcionišu. Uvek je bolje koristiti nešto što postoji i što je testirano kako bismo mogli da se fokusiramo na ključan problem koji rešavamo i koji je zapravo razlog korišćenja tog alata.
Evo i softvera koji izdvajamo:
Matlab: komercijalni softver za koji ste verovatno čuli od kolega, ili ste ga koristili u školi. Pošto je ovo časopis o slobodnom softveru, nećemo se previše udubljivati u njegovu funkcionalnost, ali ne možemo reći da ga ne vredi pomenuti, uz napomenu da postoje dobre slobodne alternative koje čak imaju i sličnu sintaksu.
Oktava (eng. Octave): slobodna alternativa Matlabu sa kompatibilnom sintaksom.
Pajton (eng. Python) sa Numpajem (eng. NumPy) i srodnim bibliotekama: Uz pomoć malo programiranja možete napraviti značajne rezultate u ovakvom okruženju. Ovo je strogo preporučljivo ako ste do sada radili sa Pajtonom.
Procesing (eng. Processing): okruženje namenjeno početnicima u programiranju koje nije bogato koliko gorenavedeni alati, ali pruža mogućnost brzog učenja pa je tako odličan izbor za nekoga ko se prvi put susreće sa programiranjem, a nije mu zanimljivo da počne sa učenjem tako što će praviti konzolne aplikacije.
Za kraj
U narednim brojevima ćemo pokazati primere numeričkih simulacija i obrade podataka u Pajtonu i diskutovati o raznim metodama. Nadamo se da ćemo na ovaj način podstaći deo naših čitalaca da počnu da se zanimaju za ovu oblast, pa i da krenu sa nekim svojim projektima koje će moći da predstave i u našem časopisu.
Ako imate pitanja ili predloge, tu smo da vas saslušamo! Kontaktirajte s nama preko Fejsbuka i Tvitera, ili nam pišite na našu adresu elektronske pošte.