четвртак, 25 априла, 2024
Како да...?

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

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

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

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

Типови и узроци нумеричке грешке

Када се ради обрада нумеричких података, односно било какво израчунавање на рачунару, уводе се различити типови грешака, а неки од њих су:

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

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

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

Пропагација грешака

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

Зашто је важна анализа грешке?

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

Ако софтвер не ради добро, често се поставља питање да ли је одређеним грешкама и „бубама” узрок лоша имплементација метода, или је лош сâм метод. Због овога је пре имплементације потребно детаљно анализирати добре и лоше стране метода који се користи и имплементацију радити постепено додавањем засебних делова и њиховим тестирањем на једноставним случајевима како би се проверила исправност имплементације.