Метод бісекції або метод поділу відрізка навпіл — найпростіший чисельний метод для вирішення виду f(x)=0. Передбачається тільки безперервність функції f(x). Пошук ґрунтується на теоремі про проміжні значення.
Обґрунтування
Алгоритм заснований на наступному наслідку з теореми Больцано — Коші:
|
Таким чином, якщо ми шукаємо нуль, то на кінцях відрізка функція повинна бути протилежних знаків. Розділимо відрізок навпіл і візьмемо ту з половинок, на кінцях якої функція як і раніше приймає значення протилежних знаків. Якщо значення функції в серединній точці виявилося потрібним нулем, то процес завершується.
Точність обчислень задається одним з двох способів:
- по осі , що ближче до умови з опису алгоритму; або
- , по осі , що може виявитися зручним в деяких випадках.
Процедуру слід продовжувати до досягнення заданої точності.
Для пошуку довільного значення досить відняти від значення функції шукане значення і шукати нуль функції що вийшла.
Опис алгоритму
Завдання полягає в знаходженні коренів
Для початку ітерацій необхідно знати відрізок значень , на кінцях якого функція приймає значення протилежних знаків. Протилежність знаків значень функції на кінцях відрізка можна визначити багатьма способами. Один з безлічі цих способів — множення значень функції на кінцях відрізка і визначення знака похідної шляхом порівняння результату множення з нулем:
в дійсних обчисленнях такий спосіб перевірки протилежності знаків при крутих функціях призводить до передчасного переповнення.
Для усунення переповнення і зменшення витрат часу, тобто для збільшення швидкодії, на деяких програмно-комп'ютерних комплексах протилежність знаків значень функції на кінцях відрізка потрібно визначати за формулою:
так як одна операція порівняння двох знаків двох чисел вимагає меншого часу ніж дві операції: множення двох чисел (особливо з плаваючою комою і подвійною довжиною) і порівняння результату з нулем. При даному порівнянні, значення функції в точках і можна не обчислювати, досить обчислити тільки знаки функції в цих точках, що вимагає меншого машинного часу.
З безперервності функції і умови (2.2) випливає, що на відрізку існує хоча б один корінь рівняння (в разі не монотонної функції функція має кілька коренів і метод призводить до знаходження одного з них).
Знайдемо значення в середині відрізка:
в дійсних обчисленнях, для зменшення числа операцій, на початку, поза циклом, обчислюють довжину відрізка за формулою:
а в циклі обчислюють довжину чергових нових відрізків за формулою: і нову середину за формулою:
Обчислимо значення функції в середині відрізка :
- Якщо або, в дійсних обчисленнях, , де — задана точність по осі , то корінь знайдений.
- Інакше або, в дійсних обчисленнях, , то розіб'ємо відрізок на два рівних відрізка: і .
Тепер знайдемо новий відрізок, на якому функція змінює знак:
- Якщо значення функції на кінцях відрізка мають протилежні знаки на лівому відрізку, або , то, відповідно, корінь знаходиться всередині лівого відрізка . Тоді візьмемо лівий відрізок присвоєнням , і повторимо описану процедуру до досягнення необхідної точності по осі .
- Інакше значення функції на кінцях відрізка мають протилежні знаки на правому відрізку, або , то, відповідно, корінь знаходиться всередині правого відрізка . Тоді візьмемо правий відрізок присвоєнням , і повторимо описану процедуру до досягнення необхідної точності по осі .
За кількість ітерацій поділ навпіл здійснюється раз, тому довжина кінцевого відрізка в разів менше довжини вихідного відрізка.
Існує схожий метод, але з критерієм зупинки обчислень по осі , в цьому методі обчислення тривають до тих пір, поки, після чергового поділу навпіл, новий відрізок більше заданої точності по осі : . У цьому методі відрізок на осі може досягти заданої величини , а значення функцій (особливо крутих) на осі можуть дуже далеко стояти від нуля, при пологих же функціях цей метод призводить до великої кількості зайвих обчислень.
У дискретних функціях і — це номера елементів масиву, які не можуть бути дробовими, і, в разі другого критерію зупину обчислень, різниця не може бути менше .
Псевдокод
Нехай
- xn — початок відрізка по х;
- xk — кінець відрізка по х;
- xi — середина відрізка по х;
- epsy — необхідна точність обчислень по y (задане наближення інтервалу [xn; xk]: xk — xn до нуля).
Тоді алгоритм методу бісекції можна записати в псевдокоді наступним чином:
- Початок.
- Введення xn, xk, epsy.
- Якщо F(xn) = 0, то висновок (корінь рівняння — xn).
- Якщо F(xk) = 0, то висновок (корінь рівняння — xk).
- Поки xk — xn > epsy повторювати:
- dx := (xk — xn)/2
- xi := xn + dx;
- якщо sign(F(xn)) ≠ sign(F(xi)), то xk := xi;
- інакше xn := xi.
- кінець повторювати
- Висновок (Знайдено корінь рівняння — xi з точністю по y — epsy).
- Кінець.
Пошук значення кореня монотонної дискретної функції
Пошук найбільш наближеного до кореня значення в монотонної дискретної функції, заданої таблично і записаної в масиві, полягає в розбитті масиву навпіл (на дві частини), виборі з двох нових частин тієї частини, в якій значення елементів масиву змінюють знак шляхом порівняння знаків серединного елемента масиву зі знаком граничного значення і повторенні алгоритму для половини в якій значення елементів масиву змінюють знак.
Нехай змінні ліваГраниця і праваГраниця містять, відповідно, ліву лівГран и праву правГран межі масиву, в якій знаходиться наближення до кореня. Дослідження починається з розбиття масиву навпіл (на дві частини) шляхом знаходження номера середнього елемента масиву середина .
Якщо знаки значень масиву масив[ліваГраниця] та масив[середина] протилежні, то наближення до кореня шукають в лівій половині масиву, тобто значенням праваГраниця стає середина і на наступній ітерації досліджується тільки ліва половина масиву. Якщо знаки значень масив[ліваГраниця] і масив[середина] однакові, то здійснюється перехід до пошуку наближення до кореня в правій половині масиву, тобто значенням змінної ліваГраниця стає середина і на наступній ітерації досліджується тільки права половина масиву. Т.о., в результаті кожної перевірки область пошуку звужується вдвічі.
Наприклад, якщо довжина масиву дорівнює 1023, то після першого порівняння область звужується до 511 елементів, а після другого — до 255. Т.о. для пошуку наближення до кореня в масиві з 1023 елементів досить 10 проходів (ітерацій).
ліваГраниця = лівГран праваГраниця = правГран while (праваГраниця - ліваГраниця > 1) { довжинаВідрізка = правГран - лівГран половинаВідрізка = int(довжинаВідрізка / 2) середина = ліваГраниця + половинаВідрізка if (sign(масив[ліваГраниця]) ≠ sign(масив[середина])) праваГраниця = середина else ліваГраниця = середина } printf середина
Див. також
Примітки
- Ю. Губарь, Курс «Введение в математическое моделирование» Лекция 4: Численные методы решения нелинейных уравнений: Метод половинного деления // , 15.03.2007
- Burden та Faires, 1985, с. 29
Джерела
- Волков Е. А. Глава 4. Методы решения нелинейных уравнений и систем. § 26. Метод деления отрезка пополам // Численные методы. — Учеб. пособие для вузов. — 2-е изд., испр. — М. : Наука, 1987. — С. 190.
- Burden, Richard L.; Faires, J. Douglas (1985), 2.1 The Bisection Algorithm, Numerical Analysis (вид. 3rd), PWS Publishers, ISBN
Посилання
Вікіпідручник Програмні реалізації методу бисекции має сторінку на тему Програмні реалізації методу бисекции |
- Рішення рівнянь методом бісекції онлайн
- Метод бісекції на сервері застосування Mathcad.
- Метод бісекції Mathcad, Maple, Matlab, Mathematica
- вільно поширювана програма для обчислення ізоелектричної точки.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ne plutati z dvijkovij poshuk Ne plutati z Dihotomiya Metod bisekciyi abo metod podilu vidrizka navpil najprostishij chiselnij metod dlya virishennya vidu f x 0 Peredbachayetsya tilki bezperervnist funkciyi f x Poshuk gruntuyetsya na teoremi pro promizhni znachennya ObgruntuvannyaAlgoritm zasnovanij na nastupnomu naslidku z teoremi Bolcano Koshi Nehaj f x C a b displaystyle f x in mathrm C a b todi yaksho s i g n f a s i g n f b displaystyle sign f a neq sign f b to c a b f c 0 displaystyle exists c in a b f c 0 Takim chinom yaksho mi shukayemo nul to na kincyah vidrizka funkciya povinna buti protilezhnih znakiv Rozdilimo vidrizok navpil i vizmemo tu z polovinok na kincyah yakoyi funkciya yak i ranishe prijmaye znachennya protilezhnih znakiv Yaksho znachennya funkciyi v seredinnij tochci viyavilosya potribnim nulem to proces zavershuyetsya Tochnist obchislen zadayetsya odnim z dvoh sposobiv e f x displaystyle varepsilon f x po osi y displaystyle y sho blizhche do umovi f x 0 displaystyle f x 0 z opisu algoritmu abo e x displaystyle varepsilon x po osi x displaystyle x sho mozhe viyavitisya zruchnim v deyakih vipadkah Proceduru slid prodovzhuvati do dosyagnennya zadanoyi tochnosti Dlya poshuku dovilnogo znachennya dosit vidnyati vid znachennya funkciyi shukane znachennya i shukati nul funkciyi sho vijshla Opis algoritmuZavdannya polyagaye v znahodzhenni koreniv f x 0 1 displaystyle f x 0 qquad 1 Dlya pochatku iteracij neobhidno znati vidrizok x L x R displaystyle x L x R znachen x displaystyle x na kincyah yakogo funkciya prijmaye znachennya protilezhnih znakiv Protilezhnist znakiv znachen funkciyi na kincyah vidrizka mozhna viznachiti bagatma sposobami Odin z bezlichi cih sposobiv mnozhennya znachen funkciyi na kincyah vidrizka i viznachennya znaka pohidnoyi shlyahom porivnyannya rezultatu mnozhennya z nulem f x L f x R lt 0 2 1 displaystyle f x L cdot f x R lt 0 qquad 2 1 v dijsnih obchislennyah takij sposib perevirki protilezhnosti znakiv pri krutih funkciyah prizvodit do peredchasnogo perepovnennya Dlya usunennya perepovnennya i zmenshennya vitrat chasu tobto dlya zbilshennya shvidkodiyi na deyakih programno komp yuternih kompleksah protilezhnist znakiv znachen funkciyi na kincyah vidrizka potribno viznachati za formuloyu s i g n f x L s i g n f x R 2 2 displaystyle sign f x L neq sign f x R qquad 2 2 tak yak odna operaciya porivnyannya dvoh znakiv dvoh chisel vimagaye menshogo chasu nizh dvi operaciyi mnozhennya dvoh chisel osoblivo z plavayuchoyu komoyu i podvijnoyu dovzhinoyu i porivnyannya rezultatu z nulem Pri danomu porivnyanni znachennya funkciyi f x displaystyle f x v tochkah x L displaystyle x L i x R displaystyle x R mozhna ne obchislyuvati dosit obchisliti tilki znaki funkciyi f x displaystyle f x v cih tochkah sho vimagaye menshogo mashinnogo chasu Z bezperervnosti funkciyi f x displaystyle f x i umovi 2 2 viplivaye sho na vidrizku x L x R displaystyle x L x R isnuye hocha b odin korin rivnyannya v razi ne monotonnoyi funkciyi f x displaystyle f x funkciya maye kilka koreniv i metod prizvodit do znahodzhennya odnogo z nih Znajdemo znachennya x displaystyle x v seredini vidrizka x M x L x R 2 3 displaystyle x M x L x R 2 qquad 3 v dijsnih obchislennyah dlya zmenshennya chisla operacij na pochatku poza ciklom obchislyuyut dovzhinu vidrizka za formuloyu x D x R x L displaystyle x D x R x L a v cikli obchislyuyut dovzhinu chergovih novih vidrizkiv za formuloyu x D x D 2 displaystyle x D x D 2 i novu seredinu za formuloyu x M x L x D displaystyle x M x L x D Obchislimo znachennya funkciyi f x M displaystyle f x M v seredini vidrizka x M displaystyle x M Yaksho f x M 0 displaystyle f x M 0 abo v dijsnih obchislennyah f x M e f x displaystyle f x M leq varepsilon f x de e f x displaystyle varepsilon f x zadana tochnist po osi y displaystyle y to korin znajdenij Inakshe f x M 0 displaystyle f x M neq 0 abo v dijsnih obchislennyah f x M gt e f x displaystyle f x M gt varepsilon f x to rozib yemo vidrizok x L x R displaystyle x L x R na dva rivnih vidrizka x L x M displaystyle x L x M i x M x R displaystyle x M x R Teper znajdemo novij vidrizok na yakomu funkciya zminyuye znak Yaksho znachennya funkciyi na kincyah vidrizka mayut protilezhni znaki na livomu vidrizku f x L f x M lt 0 displaystyle f x L cdot f x M lt 0 abo s i g n f x L s i g n f x M displaystyle sign f x L neq sign f x M to vidpovidno korin znahoditsya vseredini livogo vidrizka x L x M displaystyle x L x M Todi vizmemo livij vidrizok prisvoyennyam x R x M displaystyle x R x M i povtorimo opisanu proceduru do dosyagnennya neobhidnoyi tochnosti e f x displaystyle varepsilon f x po osi y displaystyle y Inakshe znachennya funkciyi na kincyah vidrizka mayut protilezhni znaki na pravomu vidrizku f x M f x R lt 0 displaystyle f x M cdot f x R lt 0 abo s i g n f x M s i g n f x R displaystyle sign f x M neq sign f x R to vidpovidno korin znahoditsya vseredini pravogo vidrizka x M x R displaystyle x M x R Todi vizmemo pravij vidrizok prisvoyennyam x L x M displaystyle x L x M i povtorimo opisanu proceduru do dosyagnennya neobhidnoyi tochnosti e f x displaystyle varepsilon f x po osi y displaystyle y Za kilkist iteracij N displaystyle N podil navpil zdijsnyuyetsya N displaystyle N raz tomu dovzhina kincevogo vidrizka v 2 N displaystyle 2 N raziv menshe dovzhini vihidnogo vidrizka Isnuye shozhij metod ale z kriteriyem zupinki obchislen e x displaystyle varepsilon x po osi x displaystyle x v comu metodi obchislennya trivayut do tih pir poki pislya chergovogo podilu navpil novij vidrizok bilshe zadanoyi tochnosti po osi x displaystyle x x R x L gt e x displaystyle x R x L gt varepsilon x U comu metodi vidrizok na osi x displaystyle x mozhe dosyagti zadanoyi velichini e x displaystyle varepsilon x a znachennya funkcij f x displaystyle f x osoblivo krutih na osi y displaystyle y mozhut duzhe daleko stoyati vid nulya pri pologih zhe funkciyah f x displaystyle f x cej metod prizvodit do velikoyi kilkosti zajvih obchislen U diskretnih funkciyah x L x M displaystyle x L x M i x R displaystyle x R ce nomera elementiv masivu yaki ne mozhut buti drobovimi i v razi drugogo kriteriyu zupinu obchislen riznicya x R x L displaystyle x R x L ne mozhe buti menshe e x 1 displaystyle varepsilon x 1 PsevdokodNehaj xn pochatok vidrizka po h xk kinec vidrizka po h xi seredina vidrizka po h epsy neobhidna tochnist obchislen po y zadane nablizhennya intervalu xn xk xk xn do nulya Todi algoritm metodu bisekciyi mozhna zapisati v psevdokodi nastupnim chinom Pochatok Vvedennya xn xk epsy Yaksho F xn 0 to visnovok korin rivnyannya xn Yaksho F xk 0 to visnovok korin rivnyannya xk Poki xk xn gt epsy povtoryuvati dx xk xn 2 xi xn dx yaksho sign F xn sign F xi to xk xi inakshe xn xi kinec povtoryuvati Visnovok Znajdeno korin rivnyannya xi z tochnistyu po y epsy Kinec Poshuk znachennya korenya monotonnoyi diskretnoyi funkciyiPoshuk najbilsh nablizhenogo do korenya znachennya v monotonnoyi diskretnoyi funkciyi zadanoyi tablichno i zapisanoyi v masivi polyagaye v rozbitti masivu navpil na dvi chastini vibori z dvoh novih chastin tiyeyi chastini v yakij znachennya elementiv masivu zminyuyut znak shlyahom porivnyannya znakiv seredinnogo elementa masivu zi znakom granichnogo znachennya i povtorenni algoritmu dlya polovini v yakij znachennya elementiv masivu zminyuyut znak Nehaj zminni livaGranicya i pravaGranicya mistyat vidpovidno livu livGran i pravu pravGran mezhi masivu v yakij znahoditsya nablizhennya do korenya Doslidzhennya pochinayetsya z rozbittya masivu navpil na dvi chastini shlyahom znahodzhennya nomera serednogo elementa masivu seredina Yaksho znaki znachen masivu masiv livaGranicya ta masiv seredina protilezhni to nablizhennya do korenya shukayut v livij polovini masivu tobto znachennyam pravaGranicya staye seredina i na nastupnij iteraciyi doslidzhuyetsya tilki liva polovina masivu Yaksho znaki znachen masiv livaGranicya i masiv seredina odnakovi to zdijsnyuyetsya perehid do poshuku nablizhennya do korenya v pravij polovini masivu tobto znachennyam zminnoyi livaGranicya staye seredina i na nastupnij iteraciyi doslidzhuyetsya tilki prava polovina masivu T o v rezultati kozhnoyi perevirki oblast poshuku zvuzhuyetsya vdvichi Napriklad yaksho dovzhina masivu dorivnyuye 1023 to pislya pershogo porivnyannya oblast zvuzhuyetsya do 511 elementiv a pislya drugogo do 255 T o dlya poshuku nablizhennya do korenya v masivi z 1023 elementiv dosit 10 prohodiv iteracij Psevdokod livaGranicya livGran pravaGranicya pravGran while pravaGranicya livaGranicya gt 1 dovzhinaVidrizka pravGran livGran polovinaVidrizka int dovzhinaVidrizka 2 seredina livaGranicya polovinaVidrizka if sign masiv livaGranicya sign masiv seredina pravaGranicya seredina else livaGranicya seredina printf seredinaDiv takozhLinijnij poshuk Dvijkovij poshuk Metod dihotomiyi Metod zolotogo peretinu Ternarnij poshuk Metod NyutonaPrimitkiYu Gubar Kurs Vvedenie v matematicheskoe modelirovanie Lekciya 4 Chislennye metody resheniya nelinejnyh uravnenij Metod polovinnogo deleniya 15 03 2007 Burden ta Faires 1985 s 29DzherelaVolkov E A Glava 4 Metody resheniya nelinejnyh uravnenij i sistem 26 Metod deleniya otrezka popolam Chislennye metody Ucheb posobie dlya vuzov 2 e izd ispr M Nauka 1987 S 190 Burden Richard L Faires J Douglas 1985 2 1 The Bisection Algorithm Numerical Analysis vid 3rd PWS Publishers ISBN 0 87150 857 5PosilannyaVikipidruchnik Programni realizaciyi metodu bisekcii maye storinku na temu Programni realizaciyi metodu bisekcii Rishennya rivnyan metodom bisekciyi onlajn Metod bisekciyi na serveri zastosuvannya Mathcad Metod bisekciyi Mathcad Maple Matlab Mathematica vilno poshiryuvana programa dlya obchislennya izoelektrichnoyi tochki