Кіріспе
Функцияның экстремумын табу әдісі. Алтын қима іздеуі – функцияның экстремумын (минималды немесе максималды) белгіленген аралықта табу әдісі. Аралық ішінде экстремумы бар қатаң түрде бір модульді функция үшін, ол сол экстремумды табады, ал бірнеше экстремалы бар аралық үшін (мүмкін аралық шекараларын қоса алғанда) ол олардың біріне жақындайды. Егер аралықтағы жалғыз экстремалдық нүкте аралықтың шекарасында болса, ол сол шекаралық нүктеге жақындайды. Әдіс, белгіленген аралықтағы мәндер диапазонын біртіндеп тарылту арқылы жұмыс істейді, бұл оны салыстырмалы түрде баяу, бірақ өте сенімді етеді. Бұл техниканың аты, алгоритмнің функция мәндерін сақтайтын төрт нүктеге байланысты, олардың үш аралық ені φ:1:φ қатынасында болады, мұнда φ – алтын қатынас. Бұл қатынастар әр итерацияда сақталады және ең тиімді болып табылады. Шекаралық нүктелерді ескермегенде, минимумды іздегенде орталық нүкте әрқашан сыртқы нүктелерден кіші немесе тең болады, бұл сыртқы нүктелер арасында минимум болатынын қамтамасыз етеді. Максимумды іздегенде керісінше жағдай орындалады. Алгоритм көптеген функциялық бағалаулар үшін Фибоначчи іздеуінің лимиті болып табылады (төменде сипатталғандай). Фибоначчи іздеуі мен алтын қима іздеуін Кифер (1953) ашқан (сонымен қатар Авриэль мен Уайльд (1966) еңбектерін қараңыз).
The golden section search is a technique for finding an extremum (minimum or maximum) of a function inside a specified interval. For a strictly unimodal function with an extremum inside the interval, it will find that extremum, while for an interval containing multiple extrema (possibly including the interval boundaries), it will converge to one of them. If the only extremum on the interval is on a boundary of the interval, it will converge to that boundary point. The method operates by successively narrowing the range of values on the specified interval, which makes it relatively slow, but very robust. The technique derives its name from the fact that the algorithm maintains the function values for four points whose three interval widths are in the ratio φ:1:φ, where φ is the golden ratio. These ratios are maintained for each iteration and are maximally efficient. Excepting boundary points, when searching for a minimum, the central point is always less than or equal to the outer points, assuring that a minimum is contained between the outer points. The converse is true when searching for a maximum. The algorithm is the limit of Fibonacci search (also described below) for many function evaluations. Fibonacci search and golden section search were discovered by Kiefer (1953) (see also Avriel and Wilde (1966)).
Негізгі идея
Бұл жерде талқылау унимодальдық функцияның минимумдарын іздеу тұрғысынан қарастырылады (максимумды іздеу де ұқсас). Нөлді табудан айырмашылығы, онда түбірді жақшаға алу үшін қарама-қарсы белгісі бар екі функциялық бағалау жеткілікті, ал минимумды іздегенде үш мән қажет. Алтын қима іздеу – минимумды табу аралығын біртіндеп қысқартудың тиімді тәсілі. Бастысы, қанша нүкте бағаланғанына қарамастан, минимум осы уақытқа дейін бағаланған ең төменгі мәнге ие нүктеге жақын екі нүктемен шектесетін аралықта жатыр. Жоғарыдағы диаграммада минимумды табу әдісінің бір қадамы көрсетілген. Функционалдық мәндер тік осқа, ал көлденең ос – x параметріне тең. -нің мәні үш нүктеде бағаланған: , , және . -нің мәні ең үлкен немесе -ден кішкентай болғандықтан, минимум аралығында жатыр екені анық. Минимизация процесінің келесі қадамы – функцияны жаңа x мәнінде бағалау арқылы «тексеру», атап айтқанда. Ең тиімдісі – ең үлкен аралықтың ішіндегі бір жерді таңдау, яғни, және аралығында. Диаграммадан көрініп тұрғандай, егер функция мәнін берсе, онда минимум аралығында жатыр, ал жаңа үштік нүктелер болады , , және . Бірақ, егер функция мәнін берсе, онда минимум аралығында жатыр, ал жаңа үштік нүктелер болады , , және . Осылайша, екі жағдайда да функцияның минимумын қамтитынына кепілдік берілген жаңа тар іздеу аралығын құрастыруға болады.
The next step in the minimization process is to "probe" the function by evaluating it at a new value of x, namely It is most efficient to choose somewhere inside the largest interval, i. e. between and From the diagram, it is clear that if the function yields , then a minimum lies between and , and the new triplet of points will be , , and However, if the function yields the value , then a minimum lies between and , and the new triplet of points will be , , and Thus, in either case, we can construct a new narrower search interval that is guaranteed to contain the function's minimum.
Аяқтау шарты
Қолданылу жағдайына байланысты кез келген сандағы тоқтату шарттары қолданылуы мүмкін. ΔX = X4 − X1 аралығы – ең аз X мәнін бағалаудағы абсолютті қателік өлшемі және алгоритмді тоқтату үшін пайдаланылуы мүмкін. ΔX мәні әр итерацияда r = φ − 1 көбейткішімен азайтылады, сондықтан ΔX абсолютті қателігіне жетуге қажетті итерациялар саны шамамен ln(ΔX/ΔX0) / ln(r) тең, мұндағы ΔX0 – ΔX-тің бастапқы мәні. Жұмсақ функциялар минимумға жақын тегіс болғандықтан (олардың бірінші туындысы нөлге жақын), минимумды анықтауда тым жоғары дәлдік күтуге болмайды. C тіліндегі «Сандық рецепттер» кітабында келтірілген тоқтату шарты , , және арасындағы айырманы тексеруге негізделген, ал салыстырмалы дәлдік шегіне жеткенде тоқтатылады. мұндағы – алгоритмнің толеранттылық параметрі, ал – абсолютті мәні. Тексеру жақшаның орталық мәніне қатысты өлшеміне негізделген, себебі салыстырмалы қателік әдеттегі жағдайларда абсолютті қателіктің квадратына пропорционал. Осы себепті «Сандық рецепттер» кітабы , мұндағы – қажетті абсолютті дәлдік .
where is a tolerance parameter of the algorithm, and is the absolute value of The check is based on the bracket size relative to its central value, because that relative error in is approximately proportional to the squared absolute error in in typical cases. For that same reason, the Numerical Recipes text recommends that , where is the required absolute precision of .
Алгоритм
Ескерту! Мұнда келтірілген мысалдар функцияның ең кіші мәнін табу алгоритмін сипаттайды. Ең үлкен мән табу үшін салыстыру операторларын өзгерту керек.
Фибоначчи іздеу
Сондай-ақ, өте ұқсас алгоритмді бір ғана жергілікті минимум немесе жергілікті максимумға ие мәндер тізбегінің экстремумын (минималды немесе максимумды) табу үшін де қолдануға болады. Алтын қима іздеуінде тек бүтін санды тізбек индекстерін ғана тексеру кезінде зондтау позицияларын шамалау үшін, осы жағдайға арналған алгоритмнің түрі әдетте шешімді қамтитын аралықтың ұзындығы Фибоначчи саны болатын аралықты сақтайды. Осы себепті алтын қима іздеуінің тізбек түрі көбінесе Фибоначчи іздеуі деп аталады. Фибоначчи іздеуін алғаш рет Кифер (1953) аралықтағы унимодальды функцияның максимумын (минималын) табу үшін минимакс іздеу ретінде ұсынған.
Бөлшектеп алу әдісі
Бисекция әдісі функцияның нөлін табуға арналған ұқсас алгоритм. Нөлді табу үшін үш емес, тек екі нүкте ғана қажет екенін ескеріңіз. Интервалдық арақашықтық әр қадамда алтын арақашықтық емес, 2 есеге төмендейді.