Пусть[a,b] v отрезок локализации. Предположим, что функция f(x) непрерывна на [a,b] и на концах принимает значения разных знаков .
Алгоритм метода бисекции состоит в построении последовательности вложенных отрезков, на концах которых функция принимает значения разных знаков. Каждый последующий отрезок получают делением пополам предыдущего. Опишем один шаг итераций метода. Пусть на k-ом шаге найден отрезок такой, что . Найдем середину отрезка . Если , то - корень и задача решена. Если нет, то из двух половин отрезка выбираем ту, на концах которой функция имеет противоположные знаки:
, , если
, , если
Критерий окончания итерационного процесса: если длина отрезка локализации меньше 2, то итерации прекращают и в качестве значения корня с заданной точностью принимают середину отрезка.
Теорема о сходимости метода бисекций. Пусть функция f(x) непрерывна на [a,b] и на концах принимает значения разных знаков . Тогда метод сходится и справедлива оценка погрешности:
ПРИМЕР 2. Решение уравнения методом бисекции.
% Локализовать корни уравнения f(x)=0, где f(x)= x^3 - cos(x) + 1 (рис. 4.5.)
% Введём функцию f(x)
f = inline('x.^3 - cos(x) + 1');
% Нарисуем её график на отрезке [-10,10]
x = linspace(-10,10,100);
% Оси с градуировкой
figure('Name', '[-10,10]');
axes('NextPlot', 'Add');
grid on
plot(x, f(x));
Рис. 4.5. - Локализация корней уравнения f(x)=0, где f(x)= x^3 - cos(x) +1
% Нарисуем её график на отрезке [-1, 1] (рис. 4.6)
% Оси с градуировкой
figure('Name', '[-1,1]');
axes('NextPlot', 'Add');
grid on
x = linspace(-1,1,100);
plot(x, f(x))
Рис. 4.6. – График функции на отрезке [-1, 1]
% Из графика видно, что корни уравнения a находятся на отрезках [-0.6,-0.4] и [-0.2,0.2]
% Нарисуем её график на отрезке [-0.6,-0.4] (рис. 4.7)
figure('Name', '[-0.6,-0.4]');
axes('NextPlot', 'Add');
grid on
x = linspace(-0.6,-0.4,100);
plot(x, f(x));
Рис. 4.7. – График функции на отрезке [-0.6,-0.4]
% Нарисуем её график на отрезке [-0.2, 0.2] (рис. 4.8.)
figure('Name', '[-0.2,0.2]');
axes('NextPlot', 'Add');
grid on
x = linspace(-0.2,0.2,100);
plot(x, f(x));
Рис. 4.8. – График функции на отрезке [-0.2, 0.2]