Кіріспе
Функциялардың нөлдерін табу алгоритмдері
Сандық талдауда түбірді табу алгоритмі – үздіксіз функциялардың нөлдерін, сондай-ақ «түбірлер» деп аталатын алгоритм. f функциясының нөлі, нақты сандардан нақты сандарға немесе кешенді сандардан кешенді сандарға, x санының f(x) = 0 теңдігін қанағаттандыруымен сипатталады. Жалпы, функцияның нөлдерін дәл есептеу немесе жабық түрде көрсету мүмкін болмайтындықтан, түбірді табу алгоритмдері нөлдерге жуықтама ұсынады. Бұл жуықтамалар қозғалмалы нүктелі сандар түрінде, немесе шағын оқшауланған интервалдар, немесе кешенді түбірлер үшін дискілер түрінде беріледі (интервал немесе дискілік нәтиже жуықтама нәтижемен және қателік шегімен эквивалентті). f(x) = g(x) теңдеуін шешу, f(x) – g(x) функциясының түбірлерін табумен бірдей. Осылайша, түбірді табу алгоритмдері үздіксіз функциялармен анықталған кез келген теңдеуді шешуге мүмкіндік береді. Дегенмен, көптеген түбірді табу алгоритмдері барлық түбірлерді табуға кепілдік бермейді. Атап айтқанда, егер алгоритм түбір таппаса, онда түбірдің жоқ екенін білдірмейді. Көптеген сандық түбірді табу әдістері итерацияны қолданады, сандар тізбегін құрады, ол түбірге жақындап, оның лимітіне айналады деп үміттенеді. Олар түбірдің бастапқы шамалауын бірінші немесе бірнеше бастапқы мән ретінде қажет етеді. Алгоритмнің әрбір итерациясы түбірге жақындаған, дәлірек жуықтаманы береді. Итерация белгілі бір уақытта тоқтатылғандықтан, бұл әдістер нақты шешім емес, түбірге жуықтама береді. Көптеген әдістер келесі мәндерді есептеу үшін алдыңғы мәндерде көмекші функцияны бағалайды. Лимит – бұл көмекші функцияның тұрақты нүктесі, ол түпнұсқа теңдеудің түбірлерін тұрақты нүктелер ретінде таңдалады және осы тұрақты нүктелерге жылдам конвергенция үшін таңдалады. Жалпы түбірді табу алгоритмдерінің мінез-құлқы сандық талдауда зерттеледі. Алайда, полиномдар үшін түбірді табуды зерттеу көбінесе компьютерлік алгебра саласына жатады, себебі полиномдардың алгебралық қасиеттері ең тиімді алгоритмдер үшін маңызды. Алгоритмнің тиімділігі берілген функциялардың ерекшеліктеріне байланысты болуы мүмкін. Мысалы, көптеген алгоритмдер кіріс функциясының туындысын пайдаланады, ал басқалары кез келген үздіксіз функциямен жұмыс істейді. Жалпы, сандық алгоритмдер функцияның барлық түбірлерін табуға кепілдік бермейді, сондықтан түбірді таба алмау түбірдің жоқ екенін дәлелдемейді. Алайда, полиномдар үшін алгебралық қасиеттерді пайдаланып, түбірдің жоғалмағанын растайтын және сандық әдістердің (әдетте Ньютон әдісі) осылай орналасқан бірегей түбірге конвергенциясын қамтамасыз ету үшін жеткілікті кішкентай интервалдарда (немесе кешенді түбірлер үшін дискілерде) түбірлерді орналастыруға мүмкіндік беретін арнайы алгоритмдер бар.
In numerical analysis, a root finding algorithm is an algorithm for finding zeros, also called "roots", of continuous functions. A zero of a function f, from the real numbers to real numbers or from the complex numbers to the complex numbers, is a number x such that 1=f(x) = 0. As, generally, the zeros of a function cannot be computed exactly nor expressed in closed form, root finding algorithms provide approximations to zeros, expressed either as floating point numbers or as small isolating intervals, or disks for complex roots (an interval or disk output being equivalent to an approximate output together with an error bound). Solving an equation 1=f(x) = g(x) is the same as finding the roots of the function 1=h(x) = f(x) – g(x). Thus root finding algorithms allow solving any equation defined by continuous functions. However, most root finding algorithms do not guarantee that they will find all the roots; in particular, if such an algorithm does not find any root, that does not mean that no root exists. Most numerical root finding methods use iteration, producing a sequence of numbers that hopefully converges towards the root as its limit. They require one or more initial guesses of the root as starting values, then each iteration of the algorithm produces a successively more accurate approximation to the root. Since the iteration must be stopped at some point, these methods produce an approximation to the root, not an exact solution. Many methods compute subsequent values by evaluating an auxiliary function on the preceding values. The limit is thus a fixed point of the auxiliary function, which is chosen for having the roots of the original equation as fixed points, and for converging rapidly to these fixed points. The behavior of general root finding algorithms is studied in numerical analysis. However, for polynomials, root finding study belongs generally to computer algebra, since algebraic properties of polynomials are fundamental for the most efficient algorithms. The efficiency of an algorithm may depend dramatically on the characteristics of the given functions. For example, many algorithms use the derivative of the input function, while others work on every continuous function. In general, numerical algorithms are not guaranteed to find all the roots of a function, so failing to find a root does not prove that there is no root. However, for polynomials, there are specific algorithms that use algebraic properties for certifying that no root is missed, and locating the roots in separate intervals (or disks for complex roots) that are small enough to ensure the convergence of numerical methods (typically Newton's method) to the unique root so located.
Брактерлеу әдістері
Қалқалау әдістері тамырды қамтитын, біртіндеп кішірейтілген аралықтарды (қапшаларды) анықтайды. Аралық жеткілікті кішкентай болғанда, тамыр табылады. Олар көбінесе аралық мән теоремасын қолданады, ол үздіксіз функцияның аралықтың соңғы нүктелерінде қарама-қарсы таңбалы мәндері болса, онда функция сол аралықта кем дегенде бір тамырға ие болады деп тұжырымдайды. Сондықтан, функция аралықтың соңғы нүктелерінде қарама-қарсы таңбалы мәндерді қабылдайтын аралықты бастапқы ретінде таңдау қажет. Дегенмен, полиномдар үшін аралықтағы тамырлар саны туралы ақпарат алуға мүмкіндік беретін басқа да әдістер бар (Декарттың таңбалар ережесі, Будан теоремасы және Штурм теоремасы). Олар полиномдардың нақты тамырларын анықтау үшін тиімді алгоритмдерге негізделген, бұл барлық нақты тамырларды кепілдік берілген дәлдікпен табуға мүмкіндік береді.
Бөлшектеп алу әдісі
Тамырды табудың ең қарапайым алгоритмі – екіге бөлу әдісі. f – үздіріссіз функция болсын, онда [a, b] аралығында f(a) және f(b) қарама-қарсы таңбалы екені белгілі (аралық шегерілген). 1=c = (a + b)/2 – аралықтың ортасы болсын (орталық нүкте немесе аралықты екіге бөлетін нүкте). Онда f(a) және f(c), немесе f(c) және f(b) қарама-қарсы таңбалы болады, соның нәтижесінде аралықтың мөлшері екі есеге азаяды. Екіге бөлу әдісі сенімді болғанымен, әр итерацияда тек бір ғана дәлдік бітіміне жетеді. Сондықтан, ε жуықтап алған түбірді табу үшін қажетті функция бағалауларының саны басқа әдістерге қарағанда, тиісті жағдайларда, жылдамдатылуы мүмкін.
ITP әдісі
ITP әдісі – тамырды бөлшеу әдісімен салыстырылатын ең нашар жағдайдағы кепілдіктермен қамтамасыз ететін, сонымен қатар тегіс функциялардың тамырына суперлинейлі конвергенцияны кепілдейтін жалғыз белгілі әдіс. Бұл сондай-ақ, тамыр орналасқан жерінің кез келген үздіксіз таралуы үшін орташа есеп бойынша бөлшеу әдісінен жақсы нәтиже беруі кепілдік берілген жалғыз әдіс (ITP әдісі#талдау қараңыз). Ол мұны бөлшеу әдісімен салыстырылатын жылдамдықпен кез келген нүктеде конвергенциялайтын бөлшеу аралығын және minmax аралығын қадағалап жүзеге асырады. Сұралатын c нүктесін құру үш қадамнан тұрады: интерполяция (регула фальсиге ұқсас), уақытша тоқтату (регула фальсиді Регула фальси § Регула фальсидегі жақсартуларға ұқсас реттеу) және содан кейін minmax аралығына проекциялау. Бұл қадамдардың үйлесімі тегіс функциялар үшін интерполяцияға негізделген әдістерге ұқсас кепілдіктермен бір мезгілде minmax бойынша оңтайлы әдіс береді және тәжірибеде тегіс де, тегіс емес те функциялар үшін бөлшеу әдісінен және интерполяцияға негізделген әдістерден артық нәтижелерді қамтамасыз етеді.
Интерполяция
Тамыр табу процесінің көптеген түрлері интерполяция арқылы жұмыс істейді. Бұл, функцияны төмен дәрежелі полиноммен жуықтау үшін, тамырдың соңғы есептелген шамамен алынған мәндерін пайдаланудан тұрады, бұл полином осы шамамен алынған түбірлерде бірдей мәндерді қабылдайды. Содан кейін полиномның түбірі есептеледі және функция түбірінің жаңа шамалық мәні ретінде қолданылады, және процесс қайталанады. Екі мән функцияны бірінші дәрежелі полиноммен интерполяциялауға, яғни функция графигін түзу сызықпен жуықтауға мүмкіндік береді. Бұл секант әдісінің негізі. Үш мән квадраттық функцияны анықтайды, ол функция графигін параболамен жуықтайды. Бұл Мюллер әдісі. Regula falsi де интерполяциялық әдіс, ол секант әдісінен түзу сызық арқылы интерполяциялау үшін міндетті түрде соңғы екі есептелген нүкте емес, кез келген екі нүктені пайдалануымен ерекшеленеді.
Итерациялық әдістер
Барлық түбірді табу алгоритмдері итерация арқылы жұмыс істесе де, итеративті түбірді табу әдісі әдетте белгілі бір итерация түрін қолданады, ол түбірдің соңғы есептелген жуықтамаларына қолданылатын қосалқы функцияны анықтаудан тұрады, жаңа жуықтама алу үшін. Итерация, егер қосалқы функцияның белгіленген нүктесіне (қажетті дәлдікпен) жетілсе, яғни жаңа есептелген мән алдыңғы мәндерге жеткілікті жақын болса, тоқтатылады.
Ньютон әдісі (және ұқсас туындыға негізделген әдістер)
Ньютон әдісі f функциясының үздіксіз туындысы бар екенін қабылдайды. Ньютон әдісі түбірден тым алыс басталса, жинақталуы мүмкін емес. Бірақ, ол жинақталса, екіге бөлу әдісінен жылдамырақ болады және әдетте квадраттық жинақталуға ие. Ньютон әдісі жоғары өлшемді мәселелерге оңай обобщаемады, сондықтан да маңызды. Ньютонға ұқсас, жоғары дәрежелі жинақталуға ие әдістер – Хаусхолдер әдістері. Ньютон әдісінен кейінгі біріншісі – кубикалық дәрежеде жинақталатын Галлей әдісі.
Секанттық әдіс
Ньютон әдісіндегі туындыны шекті айырмамен алмастырсақ, секант әдісін аламыз. Бұл әдіс туындыны есептеуді (немесе оның болуын) қажет етпейді, бірақ мұның бағасы – баяурақ конвергенция (дәрежесі шамамен 1,6 (алтын қатынас)). Секант әдісінің жоғары өлшемдердегі жалпыламасы – Бройден әдісі.
Стеффенсен әдісі
Егер біз секант әдісінде қолданылатын шекті айырманың квадраттық бөлігін жою үшін полиномдық регрессияны қолдансақ, осылайша ол туындыға жақын мән беретін болса, онда Стеффенсен әдісін аламыз. Бұл әдіс квадраттық конвергенцияға ие, ал оның қасиеттері (жақсы да, жаман да) Ньютон әдісіне ұқсас, бірақ туынды есептеуді қажет етпейді.
Кері интерполяция
Интерполяциялық әдістерде күрделі мәндердің пайда болуын f функциясының керісін интерполяциялау арқылы болдырмауға болады, соның нәтижесінде кері квадраттық интерполяция әдісі туындайды. Қайтадан, жуықтасу секант әдісіне қарағанда асимптотикалық тұрғыдан жылдам, бірақ кері квадраттық интерполяция итерациялар түбірге жеткілікті жақын болмағанда көбінесе нашар жұмыс істейді.
Брент әдісі
Брент әдісі – екіге бөлу әдісі, секант әдісі және кері квадраттық интерполяцияның үйлесімі. Әрбір итерацияда Брент әдісі осы үш әдістің қайсысы ең жақсы нәтиже беретінін шешіп, сол әдіс бойынша қадам жасайды. Осының арқасында әдіс сенімді әрі жылдам болады, демек, кеңінен танымал.
Атшылар әдісі
Риддерс әдісі – интервалдың орта нүктесіндегі функцияның мәнін пайдаланып, түбірді табу үшін экспоненциалды интерполяция жасайтын гибридтік әдіс. Бұл әдіс жылдам конвергенцияны қамтамасыз етеді, сонымен қатар екіге бөлу әдісінен екі есе көп итерацияда түбірге жететініне кепілдік береді.
Жоғары өлшемдегі тамырларды табу
Бөлiп алу әдiсi жоғары өлшемдерге жалпыландырылды; бұл әдiстер жалпыландырылған бөлiп алу әдiстерi деп аталады. Әр итерацияда домен екі бөлiкке бөлiнедi, ал алгоритм функцияның шамалы сандағы есептеулерiне сүйене отырып, осы екі бөлiктiң қайсысында түбiр жатыр екенiн анықтайды. Бiр өлшемде шешiм қабылдау шарты – функцияның қарама-қарсы таңбалары болуы. Әдiстi көп өлшемдi кеңейтудегi басты қиындық – оңай есептелiп, түбiрдің бар екендiгiне кепiлдiк беретiн шартты табу. Пуанкаре-Миранда теоремасы төртбұрышта түбiр бар екенiн анықтауға мүмкiндiк бередi, бiрақ оны тексеру қиын, себебi функцияны төртбұрыштың барлық шекарасында есептеу қажет. Тағы бiр шартты Кронекер теоремасы ұсынады. Оған сәйкес, егер төртбұрыштағы f функциясының топологиялық дәрежесi нөлден өзгеше болса, онда төртбұрышта кем дегенде бiр f түбiрi болуы керек. Бұл шарт Стенгер мен Керфотт сияқты түбiр табу әдiстерiнiң негiзi болып табылады. Дегенмен, топологиялық дәреженi есептеу көп уақытты қажет етедi. Үшiншi шарт – сипаттамалық көпжаққа негiзделген. Бұл шартты сипаттамалық бөлiп алу деп аталатын әдiс қолданады. Анықтаңыз, қайтадан сұраулардың максималды саны көрсетiлмеген.