Кіріспе

Функцияның экстремумын табу әдісі. Алтын қима іздеуі – функцияның экстремумын (минималды немесе максималды) белгіленген аралықта табу әдісі. Аралық ішінде экстремумы бар қатаң түрде бір модульді функция үшін, ол сол экстремумды табады, ал бірнеше экстремалы бар аралық үшін (мүмкін аралық шекараларын қоса алғанда) ол олардың біріне жақындайды. Егер аралықтағы жалғыз экстремалдық нүкте аралықтың шекарасында болса, ол сол шекаралық нүктеге жақындайды. Әдіс, белгіленген аралықтағы мәндер диапазонын біртіндеп тарылту арқылы жұмыс істейді, бұл оны салыстырмалы түрде баяу, бірақ өте сенімді етеді. Бұл техниканың аты, алгоритмнің функция мәндерін сақтайтын төрт нүктеге байланысты, олардың үш аралық ені φ:1:φ қатынасында болады, мұнда φ – алтын қатынас. Бұл қатынастар әр итерацияда сақталады және ең тиімді болып табылады. Шекаралық нүктелерді ескермегенде, минимумды іздегенде орталық нүкте әрқашан сыртқы нүктелерден кіші немесе тең болады, бұл сыртқы нүктелер арасында минимум болатынын қамтамасыз етеді. Максимумды іздегенде керісінше жағдай орындалады. Алгоритм көптеген функциялық бағалаулар үшін Фибоначчи іздеуінің лимиті болып табылады (төменде сипатталғандай). Фибоначчи іздеуі мен алтын қима іздеуін Кифер (1953) ашқан (сонымен қатар Авриэль мен Уайльд (1966) еңбектерін қараңыз).

Негізгі идея

Бұл жерде талқылау унимодальдық функцияның минимумдарын іздеу тұрғысынан қарастырылады (максимумды іздеу де ұқсас). Нөлді табудан айырмашылығы, онда түбірді жақшаға алу үшін қарама-қарсы белгісі бар екі функциялық бағалау жеткілікті, ал минимумды іздегенде үш мән қажет. Алтын қима іздеу – минимумды табу аралығын біртіндеп қысқартудың тиімді тәсілі. Бастысы, қанша нүкте бағаланғанына қарамастан, минимум осы уақытқа дейін бағаланған ең төменгі мәнге ие нүктеге жақын екі нүктемен шектесетін аралықта жатыр. Жоғарыдағы диаграммада минимумды табу әдісінің бір қадамы көрсетілген. Функционалдық мәндер тік осқа, ал көлденең ос – x параметріне тең. -нің мәні үш нүктеде бағаланған: , , және . -нің мәні ең үлкен немесе -ден кішкентай болғандықтан, минимум аралығында жатыр екені анық. Минимизация процесінің келесі қадамы – функцияны жаңа x мәнінде бағалау арқылы «тексеру», атап айтқанда. Ең тиімдісі – ең үлкен аралықтың ішіндегі бір жерді таңдау, яғни, және аралығында. Диаграммадан көрініп тұрғандай, егер функция мәнін берсе, онда минимум аралығында жатыр, ал жаңа үштік нүктелер болады , , және . Бірақ, егер функция мәнін берсе, онда минимум аралығында жатыр, ал жаңа үштік нүктелер болады , , және . Осылайша, екі жағдайда да функцияның минимумын қамтитынына кепілдік берілген жаңа тар іздеу аралығын құрастыруға болады.

Аяқтау шарты

Қолданылу жағдайына байланысты кез келген сандағы тоқтату шарттары қолданылуы мүмкін. ΔX = X4 − X1 аралығы – ең аз X мәнін бағалаудағы абсолютті қателік өлшемі және алгоритмді тоқтату үшін пайдаланылуы мүмкін. ΔX мәні әр итерацияда r = φ − 1 көбейткішімен азайтылады, сондықтан ΔX абсолютті қателігіне жетуге қажетті итерациялар саны шамамен ln(ΔX/ΔX0) / ln(r) тең, мұндағы ΔX0 – ΔX-тің бастапқы мәні. Жұмсақ функциялар минимумға жақын тегіс болғандықтан (олардың бірінші туындысы нөлге жақын), минимумды анықтауда тым жоғары дәлдік күтуге болмайды. C тіліндегі «Сандық рецепттер» кітабында келтірілген тоқтату шарты , , және арасындағы айырманы тексеруге негізделген, ал салыстырмалы дәлдік шегіне жеткенде тоқтатылады. мұндағы – алгоритмнің толеранттылық параметрі, ал – абсолютті мәні. Тексеру жақшаның орталық мәніне қатысты өлшеміне негізделген, себебі салыстырмалы қателік әдеттегі жағдайларда абсолютті қателіктің квадратына пропорционал. Осы себепті «Сандық рецепттер» кітабы , мұндағы – қажетті абсолютті дәлдік .

Алгоритм

Ескерту! Мұнда келтірілген мысалдар функцияның ең кіші мәнін табу алгоритмін сипаттайды. Ең үлкен мән табу үшін салыстыру операторларын өзгерту керек.

Фибоначчи іздеу

Сондай-ақ, өте ұқсас алгоритмді бір ғана жергілікті минимум немесе жергілікті максимумға ие мәндер тізбегінің экстремумын (минималды немесе максимумды) табу үшін де қолдануға болады. Алтын қима іздеуінде тек бүтін санды тізбек индекстерін ғана тексеру кезінде зондтау позицияларын шамалау үшін, осы жағдайға арналған алгоритмнің түрі әдетте шешімді қамтитын аралықтың ұзындығы Фибоначчи саны болатын аралықты сақтайды. Осы себепті алтын қима іздеуінің тізбек түрі көбінесе Фибоначчи іздеуі деп аталады. Фибоначчи іздеуін алғаш рет Кифер (1953) аралықтағы унимодальды функцияның максимумын (минималын) табу үшін минимакс іздеу ретінде ұсынған.

Бөлшектеп алу әдісі

Бисекция әдісі функцияның нөлін табуға арналған ұқсас алгоритм. Нөлді табу үшін үш емес, тек екі нүкте ғана қажет екенін ескеріңіз. Интервалдық арақашықтық әр қадамда алтын арақашықтық емес, 2 есеге төмендейді.