Итерација

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу
Итерација петоугла. Повезивање наизменичних углова првог петоугла даје пентаграм који обухвата мањи обрнути петоугао. Процес итерације ствара низ уметнутих петоуглова и пентаграма и такође демонстрира рекурзију.[1]

Итерација је чин процеса понављања са циљем да се приближимо жељеном циљу, мети или резултату. Свако понављање поступка се такође назива „итерација“, и резултати једне итерације се користи као полазна тачка за следећу итерацију. Петоугао са десне стране је такође добар пример како се итерација односи на рекурзију. Иако се користи итерација, на пример, да рашчлани повезане листе, рекурзија је потребна када прелазимо на бинарна стабала. Петоугао показује оба.[2]

Математика[уреди]

Итерација у математици се може односити на процес итерације функције, односно применом функције у више наврата, користећи излаз из једне итерације као улаз у другу. Итерација наизглед једноставних функција може да произведе комплексна понашања и тешке проблеме - на пример, погледајте Колацову претпоставку и жонглерове секвенце.

Друга употреба итерације у математици је у итеративним методама које се користе за производњу приближних нумеричких решења за одређене математичке проблеме. Њутнов метод је пример итеративног метода. Ручно израчунавање квадратног корена неког броја се често користи и познат је пример.

Рачунарство[уреди]

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

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

Међутим, када се користи у другом (више ограниченом) смислу, итерација описује стил програмирања који се користи у императивним програмским језицима. Ово је у супротности са рекурзијом, која има више декларативни приступ.

Коришћена у трећем смислу, понављање користи while или for петљe исто као што оне користе map или fold функције и ово се може сматрати итерацијом.

Ево једног примера итерације који се ослања на разоран задатак, у императивном псеудокоду:

a = 0
for i from 1 to 3        // пролази кроз петљу 3 пута
{
  a = a + i              // повећава тренутну вредност а за i
}
print a                  // штампа број 6 (0 + 1; 1 + 2; 3 + 3)

У овом делу програма, вредност променљиве i се мења кроз време узимајући вредности 1,2 и 3. Ова промена вредности—или променљиво стање—је карактеристика итерације.

Итерација се може приближавати помоћу рекурзивне технике у функционалним програмским језицима. Следећи пример је у Scheme програмском језику. Имајте на уму да је оно што следи рекурзивна итерација (посебан случај итерације)због дефиниције „како поновити“, и њена функција, позива сама себе како би решила проблем инстанце. Конкретно користи реп рекурзију па тако не користи велике количине стек простора.

(let iterate ((i 1) (a 0))
  (if (<= i 3)
    (iterate (+ i 1) (+ a i))
    (display a)))

Итератор је објекат који пружа итерацију као генерички сервис, омогућавајући да се итерација уради на исти начин за низ различитих структура података. Супротно томе, итератее је апстракција која прихвата или одбија податке током процеса итерације (контролисан споља од стране пописивача - па за разлику од кода који користи итераторе, итератее код није „задужен“ за процес итерације).

Итерација се врши помоћу радног листа, или помоћу solver или goal seek функција које су доступне у Екселу. Многе имплицитне једначине као што је Colebrook једначина могу се решити у удобности радног листа пројектовањем одговарајућих алгоритама израчунавања.[3]

Многи од инжењерских проблема, као што су решавање Colebrook једначине достиже 8 цифарну прецизност у малих 12 итерација и максимално 100 итерација је довољно да се постигне 15 цифарна прецизност.[4]

Пројектни менаџмент[уреди]

Iterations in agile project management

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

Образовање[уреди]

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

Види још[уреди]

Референце[уреди]

  1. ^ B. Green (2012). Programming Problems. San Bernardino: CreateSpace. стр. 25. ISBN 978-1475071962. 
  2. ^ Roberts, Eric (2006). Thinking Recursively with Java. New York: Wiley. стр. 171. ISBN 978-0471701460. 
  3. ^ „Solve Implicit Equations Inside Your Worksheet”. Архивирано из оригинала на датум 17. 08. 2009. Приступљено 11. 11. 2015. 
  4. ^ „Colebrook Equation”. 
  5. ^ Helen Timperley; Aaron Wilson; Heather Barrar; Irene Fung. „Teacher Professional Learning and Development: Best Evidence Synthesis Iteration [BES]” (PDF). OECD. стр. 238. Приступљено 4. 04. 2013.