Простое деление пополам это способ

Метод деления пополам — Bisection method

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

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

СОДЕРЖАНИЕ

Метод

Метод применим для численного решения уравнения 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 ) иметь противоположные знаки и заключать в скобки корень. Метод выбирает подинтервал, который гарантированно будет скобкой, в качестве нового интервала, который будет использоваться на следующем шаге. Таким образом, интервал, содержащий ноль f , уменьшается по ширине на 50% на каждом шаге. Процесс продолжается до тех пор, пока интервал не станет достаточно малым.

Читайте также:  Способы быстро избавиться от заложенности носа

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

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

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

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

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

Алгоритм

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

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

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

ж ( Икс ) знак равно Икс 3 — Икс — 2 . <\ Displaystyle е (х) = х ^ <3>-x-2 \ ,.>

Во-первых, должны быть найдены два числа и, у которых и есть противоположные знаки. Для указанной выше функции и удовлетворяют этому критерию, поскольку а <\ displaystyle a> б <\ displaystyle b> ж ( а ) <\ Displaystyle f (а)> ж ( б ) <\ displaystyle f (b)> а знак равно 1 <\ displaystyle a = 1> б знак равно 2 <\ displaystyle b = 2>

Читайте также:  Как избавиться от ячменя народный способ

ж ( 1 ) знак равно ( 1 ) 3 — ( 1 ) — 2 знак равно — 2 <\ Displaystyle f (1) = (1) ^ <3>— (1) -2 = -2>

ж ( 2 ) знак равно ( 2 ) 3 — ( 2 ) — 2 знак равно + 4 . <\ Displaystyle f (2) = (2) ^ <3>— (2) -2 = + 4 \ ,.>

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

В первой итерации конечными точками интервала, заключенного в скобки корня, являются и , поэтому средняя точка равна а 1 знак равно 1 <\ displaystyle a_ <1>= 1> б 1 знак равно 2 <\ displaystyle b_ <1>= 2>

c 1 знак равно 2 + 1 2 знак равно 1.5 <\ displaystyle c_ <1>= <\ frac <2 + 1><2>> = 1,5>

Значение функции в средней точке равно . Поскольку отрицательно, заменяется на для следующей итерации, чтобы гарантировать, что и имеют противоположные знаки. По мере того, как это продолжается, интервал между и будет становиться все меньше и больше, приближаясь к корню функции. Посмотрите, как это произошло в таблице ниже. ж ( c 1 ) знак равно ( 1.5 ) 3 — ( 1.5 ) — 2 знак равно — 0,125 <\ Displaystyle f (c_ <1>) = (1,5) ^ <3>— (1,5) -2 = -0,125> ж ( c 1 ) <\ displaystyle f (c_ <1>)> а знак равно 1 <\ displaystyle a = 1> а знак равно 1.5 <\ displaystyle a = 1,5> ж ( а ) <\ Displaystyle f (а)> ж ( б ) <\ displaystyle f (b)> а <\ displaystyle a> б <\ displaystyle b>

Итерация а п <\ displaystyle a_ > б п <\ displaystyle b_ > c п <\ displaystyle c_ > ж ( c п ) <\ displaystyle f (c_ )>
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 = а + б / 2 — середина начального интервала, а c n — середина интервала на n- м шаге, тогда разница между c n и решением c ограничена

| c п — c | ≤ | б — а | 2 п . <\ displaystyle | c_ -c | \ leq <\ frac <| ba |><2 ^ >>.>

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

п ≤ п 1 / 2 ≡ ⌈ бревно 2 ⁡ ( ϵ 0 ϵ ) ⌉ , <\ Displaystyle п \ Leq N_ <1>\ Equiv \ left \ lceil \ log _ <2>\ left (<\ frac <\ epsilon _ <0>> <\ epsilon>> \ right) \ right \ rceil ,>

где начальный размер скобок и требуемый размер скобок.Основная мотивация для использования метода деления пополам состоит в том, что по набору непрерывных функций никакой другой метод не может гарантировать получение оценки c n для решения c, которое в худшем случае имеет абсолютную ошибка с менее чем n 1/2 итераций. Это также верно при нескольких общих предположениях относительно функции f и поведения функции в окрестности корня. ϵ 0 знак равно | б — а | <\ displaystyle \ epsilon _ <0>= | ba |> ϵ ≤ ϵ 0 . <\ displaystyle \ epsilon \ leq \ epsilon _ <0>.> ϵ <\ displaystyle \ epsilon>

Однако, несмотря на то, что метод деления пополам является оптимальным в отношении производительности в наихудшем случае при критериях абсолютной ошибки, он неоптимален в отношении средней производительности при стандартных предположениях, а также асимптотической производительности . Популярные альтернативы методы бисекций, такие как секущий метод , метод Ridders’ или метод Брента (среди других), как правило , работают лучше , так как они Компромисс худшего случая производительности для достижения более высоких порядков сходимости к корню. И строгое улучшение метода деления пополам может быть достигнуто за счет более высокого порядка сходимости без потери производительности в худшем случае с помощью метода ITP .

Источник

Читайте также:  Индикаторы стерильности способы контроля качества стерилизации
Оцените статью
Разные способы