logo
Вычислительная математика

2.3 Метод деления отрезка пополам (метод дихотомии, метод бисекции)

Метод деления отрезка пополам является самым простым и надежным способом решения нелинейного уравнения.

Пусть из предварительного анализа известно, что корень уравнения (2.1) находится на отрезке [a0, b0], т. е. x*[a0, b0], так, что f(x*) = 0.

Пусть функция f(x) непрерывна на отрезке [a0, b0] и принимает на концах отрезка значения разных знаков, т.е.

f(a0)f(b0) < 0. (2.2)

Разделим отрезок [a0, b0] пополам. Получим точку x0 = . Вычислим значение функции в этой точке: f(x0). Если f(x0) = 0, то x0 - искомый корень, и задача решена. Если f(x0)0, то f(x0) - число определенного знака: f(x0) > 0, либо f(x0) < 0. Тогда либо на концах отрезка [a0, x0], либо на концах отрезка [x0, b0] значения функции f(x) имеют разные знаки. Обозначим такой отрезок [a1, b1]. Очевидно, что x*[a1, b1], и длина отрезка [a1, b1] в два раза меньше, чем длина отрезка [a0, b0]. Поступим аналогично с отрезком [a1, b1]. В результате получим либо корень x*, либо новый отрезок [a2, b2], и т.д. (рис. 2.2).

Рис. 2.2

Середина n-го отрезка xn = . Очевидно, что длина отрезка [an, bn] будет равна , а т. к. x*[an, bn], то

| xn - x*| . (2.3)

Погрешность метода. Оценка (2.3) характеризует погрешность метода деления отрезка пополам и указывает на скорость сходимости: метод сходится со скоростью геометрической прогрессии, знаменатель которой q = 1/2. Заметим, что оценка (2.3) является априорной.

Критерий окончания. Из соотношения (2.3) следует, что при заданной точности приближения вычисления заканчиваются, когда будет выполнено неравенство bn - an < 2 или неравенство n > log2((b0 - a0)/) - 1. Таким образом, количество итераций можно определить заранее. За приближенное значение корня берется величина xn.

Пример 2.1.

Найдем приближенно x = с точностью ??= 0.01. Эта задача эквивалентна решению уравнения x5 - 2 = 0, или нахождению нуля функции f(x) = x5 - 2. В качестве начального отрезка [a0, b0] возьмем отрезок [1, 2]. На концах этого отрезка функция принимает значения с разными знаками: f(1) < 0, f(2) > 0.

Найдем число n делений отрезка [1, 2], необходимых для достижения требуемой точности. Имеем:

| xn - x*| = 10-2,

n6.

Следовательно, не позднее 6-го деления найдем с требуемой точностью, 1.1484. Результаты вычислений представлены в таблице 2.1.

Таблица 2.1

n

0 1 2 3 4 5 6

an

1.0000 1.0000 1.0000 1.1250 1.1250 1.1406 1.1406

bn

2.0000 1.5000 1.2500 1.2500 1.1875 1.1875 1.1562

xn

1.5000 1.2500 1.1250 1.1875 1.1406 1.1562 1.1484

Зн f(an)

- - - - - - -

Зн f(bn)

+ + + + + + +

f(xn)

5.5938 0.7585 -0.2959 0.1812 -0.0691 0.0532 -0.0078

bn - an

1.0000 0.5000 0. 2500 0.1250 0.0625 0.0312 0.0156