Jump to content

Метод бисекции

(Перенаправлено из алгоритма Bisection )
Несколько шагов метода пополам, примененного к начальному диапазону [a 1 ;b 1 ]. Большая красная точка — это корень функции.

В математике метод деления пополам — это метод поиска корня , который применяется к любой непрерывной функции , для которой известны два значения с противоположными знаками. Метод заключается в многократном делении пополам интервала , определенного этими значениями, а затем выборе подинтервала, в котором функция меняет знак и, следовательно, должна содержать корень . Это очень простой и надежный метод, но он также относительно медленный. По этой причине его часто используют для получения грубого приближения к решению, которое затем используется в качестве отправной точки для более быстро сходящихся методов. [1] Этот метод еще называют методом деления интервала пополам . [2] метод двоичного поиска , [3] или метод дихотомии . [4]

Для многочленов существуют более сложные методы проверки существования корня в интервале ( правило знаков Декарта , теорема Штурма , теорема Будана ). Они позволяют расширить метод деления пополам до эффективных алгоритмов поиска всех действительных корней многочлена; см . Изоляция реального корня .

Метод применим для численного решения уравнения f ( x ) = 0 для действительной переменной x , где f непрерывная функция, определенная на интервале [ a , b ] и где f ( a ) и f ( b ) имеют противоположные знаки. . В этом случае говорят, что a и b заключают в скобки корень, поскольку по теореме о промежуточном значении непрерывная функция f должна иметь хотя бы один корень в интервале ( a , b ).

На каждом этапе метод делит интервал на две части/половины, вычисляя среднюю точку c = ( a + b )/2 интервала и значение функции f ( c ) в этой точке. Если c сам является корнем, то процесс завершился успешно и остановился. В противном случае теперь есть только две возможности: либо f ( a ) и f ( c ) имеют противоположные знаки и заключают в скобки корень, либо f ( c ) и f ( b ) имеют противоположные знаки и заключают в скобки корень. [5] Метод выбирает подинтервал, который гарантированно будет скобкой, в качестве нового интервала, который будет использоваться на следующем шаге. Таким образом, интервал, содержащий ноль f, уменьшается на 50% на каждом шаге. Процесс продолжается до тех пор, пока интервал не станет достаточно малым.

Явно, если f ( c )=0, то c можно принять за решение, и процесс останавливается. В противном случае, если f ( a ) и f ( c ) имеют противоположные знаки, то метод устанавливает c как новое значение для b , а если f ( b ) и f ( c ) имеют противоположные знаки, то метод устанавливает c как новое значение. а . В обоих случаях новые f ( a ) и f ( b ) имеют противоположные знаки, поэтому метод применим к этому меньшему интервалу. [6]

Итерационные задачи

[ редактировать ]

Входными данными для метода является непрерывная функция f , интервал [ a , b ] и значения функции f ( a ) и f ( b ). Значения функции имеют противоположный знак (в пределах интервала имеется хотя бы одно пересечение нуля). Каждая итерация выполняет следующие шаги:

  1. Вычислите c , середину интервала, c = а + б / 2 .
  2. Вычислите значение функции в средней точке f ( c ).
  3. Если сходимость удовлетворительная (т. е. c a достаточно мала или | f ( c ) | достаточно мала), верните c и прекратите итерацию.
  4. Проверьте знак f ( c ) и замените либо ( a , f ( a )) или ( b , f ( b )) на ( c , f ( c )) так, чтобы в новом интервале произошло пересечение нуля. Я = бфе

При реализации метода на компьютере могут возникнуть проблемы с конечной точностью, поэтому часто существуют дополнительные тесты на сходимость или ограничения на количество итераций. Хотя f является непрерывным, конечная точность может помешать тому, чтобы значение функции когда-либо было равным нулю. Например, рассмотрим f ( x ) = cos x ; не существует значения с плавающей запятой, аппроксимирующего x = π /2 , которое давало бы ровно ноль. Кроме того, разница между a и b ограничена точностью чисел с плавающей запятой; т. е. по мере уменьшения разницы между a и b в какой-то момент средняя точка [ a , b ] будет численно идентична (в пределах точности с плавающей запятой) либо a, либо b .

Алгоритм

[ редактировать ]

Метод можно записать в псевдокоде следующим образом: [7]

input: Function f, 
       endpoint values a, b, 
       tolerance TOL, 
       maximum iterations NMAX
conditions: a < b, 
            either f(a) < 0 and f(b) > 0 or f(a) > 0 and f(b) < 0
output: value which differs from a root of f(x) = 0 by less than TOL
 
N ← 1
while NNMAX do // limit iterations to prevent infinite loop
    c ← (a + b)/2 // new midpoint
    if f(c) = 0 or (ba)/2 < TOL then // solution found
        Output(c)
        Stop
    end if
    NN + 1 // increment step counter
    if sign(f(c)) = sign(f(a)) then ac else bc // new interval
end while
Output("Method failed.") // max number of steps exceeded

Пример: поиск корня многочлена

[ редактировать ]

Предположим, что метод деления пополам используется для нахождения корня многочлена

Сначала два числа и надо найти такое, что и имеют противоположные знаки. Для вышеуказанной функции и удовлетворяют этому критерию, так как

и

Поскольку функция непрерывна, в интервале [1, 2] должен быть корень.

В первой итерации конечные точки интервала, заключающего в скобки корень, равны и , поэтому середина

Значение функции в средней точке равно . Потому что является отрицательным, заменяется на для следующей итерации, чтобы гарантировать, что и имеют противоположные знаки. Поскольку это продолжается, интервал между и будет становиться все меньше, сходясь к корню функции. Посмотрите, как это происходит, в таблице ниже.

Итерация
1 1 2 1.5 −0.125
2 1.5 2 1.75 1.6093750
3 1.5 1.75 1.625 0.6660156
4 1.5 1.625 1.5625 0.2521973
5 1.5 1.5625 1.5312500 0.0591125
6 1.5 1.5312500 1.5156250 −0.0340538
7 1.5156250 1.5312500 1.5234375 0.0122504
8 1.5156250 1.5234375 1.5195313 −0.0109712
9 1.5195313 1.5234375 1.5214844 0.0006222
10 1.5195313 1.5214844 1.5205078 −0.0051789
11 1.5205078 1.5214844 1.5209961 −0.0022794
12 1.5209961 1.5214844 1.5212402 −0.0008289
13 1.5212402 1.5214844 1.5213623 −0.0001034
14 1.5213623 1.5214844 1.5214233 0.0002594
15 1.5213623 1.5214233 1.5213928 0.0000780

После 13 итераций становится очевидным, что наблюдается сходимость примерно до 1,521: корня многочлена.

Метод гарантированно сходится к корню f, если f непрерывная функция на интервале [ a , b ] и f ( a ) и f ( b ) имеют противоположные знаки. Абсолютная ошибка уменьшается вдвое на каждом шаге, поэтому метод сходится линейно . В частности, если c 1 = a + b / 2 — середина начального интервала, а c n — середина интервала на n -м шаге, то разность между c n и решением c ограничена соотношением [8]

Эту формулу можно использовать для заранее определения верхней границы числа итераций, необходимых методу деления пополам для сходимости к корню с точностью до определенного допуска. Число n итераций, необходимых для достижения требуемого допуска ε (т. е. ошибки, гарантированно не превышающей ε), ограничено

где начальный размер кронштейна и необходимый размер кронштейна Основная мотивация использования метода деления пополам заключается в том, что на множестве непрерывных функций ни один другой метод не может гарантировать получение оценки c n для решения c, которое в худшем случае имеет абсолютная ошибка с менее чем n 1/2 итерациями. [9] Это также верно при нескольких общих предположениях о функции f и поведении функции в окрестности корня. [9] [10]

Однако, несмотря на то, что метод деления пополам является оптимальным в отношении производительности в худшем случае при критериях абсолютной ошибки, он неоптимален в отношении средней производительности при стандартных предположениях. [11] [12] а также асимптотическая производительность . [13] Популярные альтернативы методу деления пополам, такие как метод секущего , метод Риддерса или метод Брента (среди прочих), обычно работают лучше, поскольку они идут на компромисс с производительностью в худшем случае для достижения более высоких порядков сходимости к корню. И строгое улучшение метода деления пополам может быть достигнуто с более высоким порядком сходимости без ущерба для производительности в худшем случае с помощью метода ITP . [13] [14]

Обобщение на более высокие измерения

[ редактировать ]

Метод деления пополам был обобщен на многомерные функции. Такие методы называются обобщенными методами деления пополам . [15] [16]

Методы, основанные на вычислении степеней

[ редактировать ]

Некоторые из этих методов основаны на вычислении топологической степени . [17]

Метод характеристического деления пополам

[ редактировать ]

Метод характеристического деления пополам использует только знаки функции в разных точках. Пусть f — функция из R д в Р д , для некоторого целого d ≥ 2. Характеристический многогранник [18] (также называемый допустимым многоугольником ) [19] f R является многогранником в д , имея 2 д вершины, такие, что в каждой вершине v комбинация знаков f ( v ) единственна. Например, для d = 2 характеристический многогранник f представляет собой четырехугольник с вершинами (скажем) A, B, C, D, такой что:

  • , то есть f 1 (A)<0, f 2 (A)<0.
  • , то есть f 1 (B)<0, f 2 (B)>0.
  • , то есть f 1 (C)>0, f 2 (C)<0.
  • , то есть f 1 (D)>0, f 2 (D)>0.

Правильное ребро характеристического многоугольника — это ребро между парой вершин, вектор знаков которого отличается только одним знаком. В приведенном выше примере собственные ребра характеристического четырехугольника — это AB, AC, BD и CD. Диагональю d пара вершин, вектор знаков которой отличается всеми называется знаками. В приведенном выше примере диагонали — AD и BC.

На каждой итерации алгоритм выбирает правильное ребро многогранника (скажем, A-B) и вычисляет знаки f в его средней точке (скажем, M). Дальше все происходит следующим образом:

  • Если , то A заменяется на M, и мы получаем характеристический многогранник меньшего размера.
  • Если , то B заменяется на M, и мы получаем характеристический многогранник меньшего размера.
  • В противном случае мы выбираем новое правильное ребро и пробуем еще раз.

Предположим, что диаметр (= длина самого длинного собственного ребра) исходного характеристического многогранника равен D . Тогда, по крайней мере необходимо разделить ребра пополам так, чтобы диаметр оставшегося многоугольника был не более ε . [19] : 11, Лемма.4.7.

См. также

[ редактировать ]
  1. ^ Burden & Faires 1985 , с. 31
  2. ^ «Интервальное сокращение пополам (бисекция)» . Архивировано из оригинала 19 мая 2013 г. Проверено 7 ноября 2013 г.
  3. ^ Burden & Faires 1985 , с. 28
  4. ^ «Метод дихотомии — Математическая энциклопедия» . www.энциклопедияofmath.org . Проверено 21 декабря 2015 г.
  5. ^ Если функция имеет одинаковый знак в конечных точках интервала, конечные точки могут или не могут заключать в скобки корни функции.
  6. ^ Burden & Faires 1985 , с. 28 для раздела
  7. ^ Burden & Faires 1985 , с. 29. Эта версия пересчитывает значения функции на каждой итерации, а не переносит их на следующие итерации.
  8. ^ Burden & Faires 1985 , с. 31, теорема 2.1
  9. ^ Jump up to: а б Сикорский, К. (1 февраля 1982 г.). «Биссекция оптимальна» . Численная математика . 40 (1): 111–117. дои : 10.1007/BF01459080 . ISSN   0945-3245 . S2CID   119952605 .
  10. ^ Сикорский, К. (1 декабря 1985 г.). «Оптимальное решение нелинейных уравнений». Журнал сложности . 1 (2): 197–209. дои : 10.1016/0885-064X(85)90011-1 . ISSN   0885-064X .
  11. ^ Граф, Зигфрид; Новак, Эрих; Папагеоргиу, Анаргирос (1 июля 1989 г.). «В среднем бисекция не оптимальна» . Нумерическая математика . 55 (4): 481–491. дои : 10.1007/BF01396051 . ISSN   0945-3245 . S2CID   119546369 .
  12. ^ Новак, Эрих (1 декабря 1989 г.). «Результаты среднего случая для нулевого результата» . Журнал сложности . 5 (4): 489–501. дои : 10.1016/0885-064X(89)90022-8 . ISSN   0885-064X .
  13. ^ Jump up to: а б Оливейра, IFD; Такахаши, RHC (06 декабря 2020 г.). «Улучшение средней производительности метода бисекции с сохранением минмаксной оптимальности» . Транзакции ACM в математическом программном обеспечении . 47 (1): 5:1–5:24. дои : 10.1145/3423597 . ISSN   0098-3500 . S2CID   230586635 .
  14. ^ Иво, Оливейра (14 декабря 2020 г.). «Улучшенный метод деления пополам» . дои : 10.1145/3423597 . S2CID   230586635 .
  15. ^ Моррен, Б.; Врахатис, Миннесота; Якубсон, JC (1 июня 2002 г.). «О сложности выделения действительных корней и достоверного вычисления топологической степени» . Журнал сложности . 18 (2): 612–640. дои : 10.1006/jcom.2001.0636 . ISSN   0885-064X .
  16. ^ Врахатис, Майкл Н. (2020). «Обобщения теоремы о промежуточном значении для аппроксимации неподвижных точек и нулей непрерывных функций» . У Сергеева Ярослав Д.; Квасов, Дмитрий Евгеньевич (ред.). Численные вычисления: теория и алгоритмы . Конспекты лекций по информатике. Том. 11974. Чам: Springer International Publishing. стр. 223–238. дои : 10.1007/978-3-030-40616-5_17 . ISBN  978-3-030-40616-5 . S2CID   211160947 .
  17. ^ Кирфотт, Бейкер (1 июня 1979 г.). «Эффективный метод вычисления степени для обобщенного метода деления пополам» . Нумерическая математика . 32 (2): 109–127. дои : 10.1007/BF01404868 . ISSN   0945-3245 . S2CID   122058552 .
  18. ^ Врахатис, Майкл Н. (1 июня 1995 г.). «Эффективный метод поиска и вычисления периодических орбит нелинейных отображений» . Журнал вычислительной физики . 119 (1): 105–119. Бибкод : 1995JCoPh.119..105V . дои : 10.1006/jcph.1995.1119 . ISSN   0021-9991 .
  19. ^ Jump up to: а б Врахатис, Миннесота; Иорданидис, К.И. (1 марта 1986 г.). «Быстрый обобщенный метод деления пополам для решения систем нелинейных уравнений» . Нумерическая математика . 49 (2): 123–138. дои : 10.1007/BF01389620 . ISSN   0945-3245 . S2CID   121771945 .

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ae12d6752909720484fcaca35d3d599a__1721592720
URL1:https://arc.ask3.ru/arc/aa/ae/9a/ae12d6752909720484fcaca35d3d599a.html
Заголовок, (Title) документа по адресу, URL1:
Bisection method - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)