Изменения

Перейти к: навигация, поиск

Вещественный двоичный поиск

479 байт убрано, 21:02, 22 мая 2014
Способы закончить поиск
== Способы закончить поиск ==
* Первый способ заключается в том, чтобы остановиться{| class="wikitable"! Способы || Плюсы || Минусы |-| 1) Окончание, когда рассматриваемый отрезок станет меньше заданного эпсилон. Но у этого подхода || Большая точность найденного значения. || Алгоритм может зациклиться. В компьютере мы работаем с конечным числом вещественных чисел. У чисел есть свои плюсы и минусы:точность. Соответственно при больших значениях функции, длина отрезка может никогда не уменьшиться до заданного значения.|-| 2) Окончание, когда значение функции на концах отрезках различается менее, чем на заданное эпсилон. || В отличие от предыдущего, не зацикливается при больших значениях функции. || Возможна большая погрешность, если функция будет очень медленно возрастать.|-: '''+''' Алгоритм | 3) «Абсолютно точный поиск» <br> Окончание, когда границы отрезка — два соседних по представлению значения в типе данных. Утверждается, что два числа — соседние, если середина их отрезка совпадает или с левой, или с большой точностью найдет значение аргументаправой границей. || Максимально возможная точность найденного значения. || Возможно плохое поведение, если искомый аргумент равен 0.|-| 4) «Итеративный способ» <br> Выполнение конечного числа итераций. || У способа фиксированная погрешность. || Довольно плохая точность, если границы отрезка находятся на большом расстоянии.|}
: &ndash; Алгоритм может зациклиться. В компьютере мы работаем с конечным числом вещественных чисел. У чисел есть точность. Соответственно при больших значениях функции, длина отрезка может никогда не уменьшиться до заданного значения
* Второй способ менее точен. Предлагается заканчивать алгоритм, когда значение функции на концах отрезках различается менее, чем на заданное эпсилон.
: '''+''' В отличии от предыдущего, не зацикливается при больших значениях функции.
 
: &ndash; Возможна большая погрешность, если функция будет очень медленно возрастать
* Абсолютно точный поиск. Вспомним о том, что вещественный числа в компьютере дискретным. Будем завершать поиск, когда границы отрезка {{---}} два соседних по представлению значения в типе данных. Утверждается, что два числа {{---}} соседние, если середина их отрезка совпадает или с левой, или с правой границей.
: '''+''' Алгоритм найдет число с максимально возможной точностью.
: &ndash; Возможно плохое поведение, если искомый аргумент равен 0.
* Итеративный способ. В этом способе выполнится только конечное число число итераций.
: '''+''' Плюсом этого способа является фиксированная погрешность.
: &ndash; Довольно плохая точность, если границы отрезка находятся на большом расстоянии.
== Выбор границы отрезка для поиска==
Для начала найдем правую границу. Выберем произвольную положительную точку (например <tex>1</tex>). Будем удваивать ее до тех пор, пока значение функции в этой точке меньше заданного. Для того, чтобы найти левую границу выберем произвольную отрицательную точку (например <tex>-1</tex>). Будем удваивать ее до тех пор, пока значение в ней будет больше заданного значения.
333
правки

Навигация