Метод половинного деления

Отделение корней

Определение 2.8.Отделение корней - процедура нахождения отрезков, на которых уравнение (2.1) имеет только одно решение.

В большинстве случаев отделение корней можно провести графически. Для этого достаточно построить график функции F(x) и определить отрезки, на которых функция F(x) имеет только одну точку пересечения с осью абсцисс.

В сомнительных случаях графическое отделение корней необходимо подкреплять вычислениями. При этом можно использовать следующие очевидные положения:

1) если непрерывная функция принимает на концах отрезка [a,b] значения разных знаков (т.е. F(aF(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;