Секант ыкмасы
Секант методу - бул сандык анализде колдонулган тамыр табуу процедурасы, ал f функциясынын болжолдуу тамырын secant сызыктарынын бир катар тамырларын колдонуу менен жакшыртат. Секант методун концептуалдаштыруунун бир жолу - Ньютондун ыкмасынын чексиз айырмалык жакындатуусу. Бирок секант ыкмасы Ньютондун ыкмасынан үч миң жылдыкка эски.
Ыкма
түзөтүүf функциясынын нөлүн табуу үчүн секант ыкмасы кайталануу байланышы менен аныкталат.
Бул формуладан көрүнүп тургандай, эки баштапкы маанилер x 0 жана x 1 талап кылынат. Идеалында, алар каалаган нөлгө жакын тандалган болушу керек.
Методдун туундусу
түзөтүүx 0 жана x 1 баштапкы маанилеринен баштап, жогорудагы сүрөттө көрсөтүлгөндөй (x 0, f ( x 0 )) жана (x 1, f ( x 1 )) чекиттери аркылуу сызык курабыз. Эңкейүү-кесилген формада бул сызыктын теңдемеси болот
Бул сызыктуу функциянын тамыры, башкача айтканда, y = 0 болгон x мааниси
Андан кийин биз x бул жаңы маанисин x 2 катары колдонобуз жана x 0 жана x 1дин ордуна x 1 жана x 2 колдонуп, процессти кайталайбыз. Биз бул процессти x 3 x x x , x .
Конвергенция
түзөтүүкайталайт секант ыкмасынын тамырына жакындайт баштапкы маанилер болсо жана тамырга жетишерлик жакын. Конвергенция тартиби болуп саналат , кайда
алтын катышы болуп саналат. Атап айтканда, конвергенция супер сызыктуу, бирок анчалык квадраттык эмес.
Бул натыйжа белгилүү бир техникалык талаптарга ылайык гана жарактуу, алар маселедеги тамыр жөнөкөй болушу керек (б.а. көптүгү 1) жана эки жолу үзгүлтүксүз дифференциалдаштырылышы керек.
Эгерде баштапкы маанилер тамырга жетишерлик жакын болбосо, анда секант ыкмасы жакындайт деген кепилдик жок. "Жетиштүү жакын" деген жалпы аныктама жок, бирок критерий функциянын интервалда канчалык "кыбырап" турганына байланыштуу. . Мисалы, эгерде ошол аралыкта дифференциалданат жана кайсы жерде бир чекит бар аралыкта, анда алгоритм жакындабашы мүмкүн.
Башка тамыр табуу ыкмалары менен салыштыруу
түзөтүүСекант ыкмасы эки бөлүү ыкмасы сыяктуу тамырдын кашаада калышын талап кылбайт, демек ал дайыма эле жакындай бербейт. Жалган позиция ыкмасы (же regula falsi</link> ) секант ыкмасы сыяктуу эле формуланы колдонот. Бирок, ал боюнча формула колдонулбайт жана , секант ыкмасы сыяктуу, бирок жана акыркы итерацияда ушундай жана башка белгиси бар. Бул жалган позиция ыкмасы дайыма жакындайт дегенди билдирет; бирок, бир гана жакындашуу сызыктуу тартиби менен. Секант ыкмасы катары конвергенциянын супер-сызыктуу тартиби менен кашаага ITP методу же Иллинойс ыкмасы сыяктуу жалган позиция ыкмасын жакшыртуу менен жетишүүгө болот ( Regula falsi § <i id="mwYg">Regula falsiди</i> жакшыртуу ).
Секант методунун кайталануу формуласын Ньютон ыкмасынын формуласынан алууга болот
кичинекей үчүн чектүү-айырмалык жакындоону колдонуу менен :
Квази-Ньютон методу катары, секант методу туунду болжолдоо менен алмаштырылган метод катары түшүнүүгө болот.
Эгерде Ньютондун ыкмасын секант методу менен салыштырсак, Ньютондун ыкмасы тезирээк жакындай турганын көрөбүз ( φга каршы 2-тартип ≈ 1.6). Бирок Ньютондун ыкмасы экөөнө тең баа берүүнү талап кылат жана анын туундусу ар бир кадамда, ал эми секант ыкмасы баа берүүнү гана талап кылат . Ошондуктан, секант ыкмасы кээде иш жүзүндө тезирээк болушу мүмкүн. Мисалы, эгерде биз баалоо деп ойлосок анын туундусун баалоо үчүн көп убакыт талап кылынат жана биз башка бардык чыгымдарды этибарга албайбыз, биз секанттык ыкманын эки кадамын жасай алабыз (катанын логарифминин φ 2 факторуна кыскартуу) ≈ 2.6) Ньютон ыкмасынын бир кадамы менен бирдей чыгым үчүн (ката логарифминин коэффициентин азайтуу) 2), ошондуктан секант ыкмасы ылдамыраак. Бирок, эгерде туунду баалоо үчүн параллелдүү иштетүүнү карай турган болсок, Ньютондун ыкмасы дагы эле көп кадамдарды жумшаса да, убакыттын өтүшү менен тезирээк болуп, өзүнүн баалуулугун далилдейт.
Жалпылоо
түзөтүүБройден методу – секант ыкмасын бирден ашык өлчөмгө жалпылоо.
Төмөнкү графикте f функциясы кызыл түс менен, ал эми акыркы сызык коюу көк менен көрсөтүлгөн. Графикте секант сызыгынын х кесилиши f тамырынын жакшы жакындыгы болуп көрүнөт.
Эсептөөчү мисал
түзөтүүТөмөндө секант ыкмасы Python программалоо тилинде ишке ашырылат.
Андан кийин ал f ( x ) = x 2 − 612 функциясынын баштапкы чекиттери менен тамырын табуу үчүн колдонулат. жана
def secant_method(f, x0, x1, iterations):
"""Секант ыкмасын колдонуу менен эсептелген тамырды кайтарыңыз."""
for i in range(iterations):
x2 = x1 - f(x1) * (x1 - x0) / float(f(x1) - f(x0))
x0, x1 = x1, x2
#Бул жерде токтотуу критерийин колдонуңуз (төмөндө караңыз)
return x2
def f_example(x):
return x ** 2 - 612
root = secant_method(f_example, 10, 30, 5)
print(f"Root: {root}") # Тамыры: 24.738633748750722
Жогорудагы жакшы токтотуу критерийине ээ болуу абдан маанилүү, антпесе калкыма чекиттердин сандык тактыгына байланыштуу, алгоритм өтө көп итерациялар үчүн иштетилсе, так эмес жыйынтыктарды кайтарышы мүмкүн. Мисалы, жогорудагы цикл булардын бирине биринчи жеткенде токтошу мүмкүн: abs(x0 - x1) < tol, же abs(x0/x1-1) < tol, же abs(f(x1)) < tol. [1]
Эскертүүлөр
түзөтүү- Papakonstantinou, Joanna; Tapia, Richard (2013). "Origin and evolution of the secant method in one dimension". American Mathematical Monthly 120 (6): 500–518. doi:10.4169/amer.math.monthly.120.06.500. JSTOR 10.4169/amer.math.monthly.120.06.500. https://www.jstor.org/stable/10.4169/amer.math.monthly.120.06.500.
- MATLAB TUTORIAL for the First Course. Part 1.3: Secant Methods.