уторак, 23 априла, 2024
Како да...?

Нумеричка обрада и симулације (1. део)

Аутор: Стефан Ножинић

Самом појавом рачунара настала је могућност брзог извршавања великог броја операција. То значи да се омогућило брзо решавање разних једначина и сличних проблема и на тај начин су се многи проблеми у природним али и друштвеним наукама могли брзо решити. То је брзо постало популарно, постало је једна од главних примена рачунара, па се издвојило као засебна област рачунарства. Та област се бави разним методама за израчунавање и симулацију разних физичких система, брзу обраду података и брзу визуализацију података. Ово је омогућило доношење важних закључака у вези са понашањем појединих система у одређеним условима. Треба нагласити да су ти системи углавном хаотични и да се не могу решити аналитички како је то рађено пре појаве рачунара и метода за нумеричка израчунавања.

Док се скоро цело рачунарство базира на чињеници да се операције врше у дискретном домену, ова област рачунарства користи континуалне вредности као што су време, притисак и дистанца. Иако се нумерички методи ослањају на континуалне вредности и променљиве, не смемо заборавити да рачунари и даље имају само операције за рад са дискретним вредностима које се „врте испод хаубе”. Због овога долази до губитка тачности и, ако је систем такав, може да покаже нежељено понашање. Поред овог проблема, не смемо заборавити да израчунавање може бити веома споро ако је број тривијалних рачунарских операција превише велики. Између ова два захтева често треба пронаћи компромис јер већа тачност захтева и више операција што додатно успорава укупно време израчунавања. Такође, рачунари су ограничени и радном меморијом чије заузеће расте када се и сами подаци за обраду повећају.

Док стандардни рачунарски алгоритми који раде са дискретним вредностима имају проблем са временом и меморијом, нумерички алгоритми имају и додатни проблем: тачност резултата.

Поред свега овога, нумерички методи имају велику примену у данашње време — од кућних рачунара, видео игрица па све до предвиђања временских услова и свемирских истраживања и израде опреме за те намене. Ово је натерало научнике да се позабаве кључним проблемима који се намећу приликом нумеричке обраде података и симулације система.

Скоро сваки проблем у нумерици се може свести на једноставнији проблем који има слично решење или практично приближно исто као очекивано решење. Овај процес се може видети кроз многе примере, а неки од њих су:

  • Бесконачан број итерација се може заменити коначним бројем све док решење не постане довољно блиско жељеном;
  • Замена матрице матрицом која има једноставнију форму;
  • Замена компликованих функција функцијама које имају једноставнију форму као што су то полиноми;
  • Замена нелинеарних проблема линеарним проблемима чије је решење исто или довољно блиско;
  • Замена диференцијалних једначина алгебарским;
  • Замена система великог реда системима мањег реда;
  • Замена континуалног времена дискретним временским корацима.

Овде треба напоменути да приликом сваког корака морамо пазити да решење остане исто или приближно исто.

На пример, систем нелинеарних диференцијалних једначина можемо заменити системом нелинеарних алгебарских једначина па тај систем свести на линеарни систем алгебарских једначина за који имамо метод како да решимо.

Софтвер

Пре него што кренемо у даље размишљање о конкретним проблемима, требало би прво да видимо шта нам је на располагању од софтверских алата. Овде желимо да укажемо на потребу да се користе постојећи алати и да нема потребе правити своје осим ако вам није циљ учење како ти алати функционишу. Увек је боље користити нешто што постоји и што је тестирано како бисмо могли да се фокусирамо на кључан проблем који решавамо и који је заправо разлог коришћења тог алата.

Ево и софтвера који издвајамо:

Матлаб: комерцијални софтвер за који сте вероватно чули од колега, или сте га користили у школи. Пошто је ово часопис о слободном софтверу, нећемо се превише удубљивати у његову функционалност, али не можемо рећи да га не вреди поменути, уз напомену да постоје добре слободне алтернативе које чак имају и сличну синтаксу.gambar17

Октава (енг. Octave): слободна алтернатива Матлабу са компатибилном синтаксом.octave

Пајтон (енг. Python) са Нумпајем (енг. NumPy) и сродним библиотекама: Уз помоћ мало програмирања можете направити значајне резултате у оваквом окружењу. Ово је строго препоручљиво ако сте до сада радили са Пајтоном.python

Процесинг (енг. Processing): окружење намењено почетницима у програмирању које није богато колико горенаведени алати, али пружа могућност брзог учења па је тако одличан избор за некога ко се први пут сусреће са програмирањем, а није му занимљиво да почне са учењем тако што ће правити конзолне апликације.

За крај

У наредним бројевима ћемо показати примере нумеричких симулација и обраде података у Пајтону и дискутовати о разним методама. Надамо се да ћемо на овај начин подстаћи део наших читалаца да почну да се занимају за ову област, па и да крену са неким својим пројектима које ће моћи да представе и у нашем часопису.

Ако имате питања или предлоге, ту смо да вас саслушамо! Контактирајте с нама преко Фејсбука и Твитера, или нам пишите на нашу адресу електронске поште.