Метод половинного деления
Отделение корней
Определение 2.8.Отделение корней - процедура нахождения отрезков, на которых уравнение (2.1) имеет только одно решение.
В большинстве случаев отделение корней можно провести графически. Для этого достаточно построить график функции F(x) и определить отрезки, на которых функция F(x) имеет только одну точку пересечения с осью абсцисс.
В сомнительных случаях графическое отделение корней необходимо подкреплять вычислениями. При этом можно использовать следующие очевидные положения:
1) если непрерывная функция принимает на концах отрезка [a,b] значения разных знаков (т.е. F(a)×F(b) <0), то уравнение (2.1) имеет на этом отрезке по меньшей мере один корень;
2) если функция F(x) к тому же и строго монотонна, то корень на отрезке единственный.
Пусть уравнение (2.1) имеет на отрезке [a,b] единственный корень, причем функция F(x) на данном отрезке непрерывна (рис. 2.1).
Разделим отрезок [a,b] пополам точкой с=(a+b)/2. Если F(c)¹0, то возможны два случая:
1) функция F(x) меняет знак на отрезке [a,c];
2) функция F(x) меняет знак на отрезке [c,b].
Выбирая в каждом случае тот отрезок, на котором функция меняет знак, и продолжая процесс половинного деления дальше, можно дойти до сколь угодно малого отрезка, содержащего корень уравнения.
Рис. 2.1
Пример 2.1. Решение в пакете MATLAB методом половинного деления уравнения
1. Создание файла Func.m, содержащего описание функции
% листинг файла Func.m
function z=Func(x)
z=x.^4-11*x.^3+x.^2+x+0.1;
2. Создание файла Div2.m, содержащего описание функции, возвращающей значение корня уравнения методом половинного деления
% листинг файла Div2.m
function z=Div2(f,x1,x2,eps);
% имя m-файла, содержащего описание функции
% x1 - левая граница отрезка, на котором ищется решение
% уравнения
% x2 - правая граница отрезка, на котором ищется решение
% уравнения
% eps - точность решения
L=x2-x1;
while L>eps
c=(x2+x1)/2;
if feval(f,c)*feval(f,x1)<0
% feval(f,c) - оператор вычисления в точке x=c значения функции,
% описание, которой находится в соответствующем файле.
% Имя файла хранится в строковой переменной f
x2=c;