Метод деления отрезка пополам: лекция по численным методам

Итерационные методы решения
нелинейных уравнений. Метод деления
отрезка пополам
Лекция 5-6
План
1. Общая характеристика итерационных методов.
2. Основные этапы. Отделение и уточнение корней.
3. Метод деления отрезка пополам.
Лектор: профессор, д.т.н. Иванчина Эмилия Дмитриевна
1
1.Общая характеристика итерационных методов.
Итерационные методы используются для решения
нелинейных алгебраических и трансцендентных
уравнений f(x)=0 . Алгебраическими считаются
уравнения, содержащие только алгебраические
функции (целые, рациональные, иррациональные).
f(x)=a0+a1x+...+an-1x n-1+an xn=0 .
Уравнения, содержащие другие функции
(тригонометрические, показательные,
логарифмические и др.), называются
трансцендентными, например:
x3+x2+2ex+5=0; 2x-sin3x=0.
Задача решения уравнения заключается в
нахождении таких значений х, которые обращают его
в тождество, т.е. f(x)=0, x-корень уравнения.
2
2. Основные этапы. Отделение и уточнение корней.
Существует 2 способа отделения корней:
графический и аналитический.
Графический способ предполагает замену
исходной функции на эквивалентную:
f(x)=f1(x)-f2(x). Абсцисса точки
пересечения графиков этих функций и есть
решение исходного уравнения. Например,
для решения уравнения xlgx=1
записываем эквивалентную форму и строим
график . Приближенным решением будет
х=2.5
3
4
В
основе
аналитического
метода
положена
следующая Теорема.
Если непрерывная функция f(x) принимает
значения разных знаков на концах отрезка [ab], то
есть f(a).f(b) < 0 , то между точками a и b имеется
хотя бы один действительный корень уравнения
f(x)=0.
Процесс
отделения
корней
начинается
с
установления знаков функции в граничных точках
отрезка a и b. Затем определяются знаки в ряде
промежуточных точек и выделяются отрезки, на
границе которых функция меняет знак на
противоположный.
5
Например, пусть требуется отделить корни
уравнения f(x)=x3 – 7x +3=0. В качестве отрезка
возьмем всю числовую ось от – oo до + oo
(от – бесконечность до + бесконечность).
Таблица
Знаки функции
_________________________________
x
Знак f(x)
_________________________________
-бесконечность
-3
-1
0
+1
+3
+
+
+
+ бесконечность
+
_____________________________________
По результатам поиска выделим три интервала [-3,-1],[0,1],[1,3]
6
3.Метод деления отрезка пополам
Рассмотрим
итерационные
методы
решения
нелинейных уравнений, которые используются при
расчете химико-технологических систем.
Пусть дано уравнение f(x)=0. Допустим, нам
удалось найти такой отрезок [a,b], на котором
расположено значение корня x, т.е. а<x<b. В
качестве начального приближения корня х0
принимаем середину отрезка x0=(a+b)/2. Далее
исследуем значения функции: если f(x0)=0,
то х0 является корнем уравнения, т.е. x=x0. Если
f(x0) не 0, то выбираем одну из половин отрезка
[a,x0] или [x0,b], на концах которой функция f(x)
имеет противоположные знаки, т.е. содержит
искомый корень, его принимаем в качестве нового
отрезка [x0,b]. Вторую половину отрезка на концах
которого знак f(x) не меняется, отбрасываем: в
7
данном случае [a,x0].
Отрезок [x0,b] вновь делим пополам. Новое
приближение: x1=(x0+b)/2. Вновь исследуем
функцию f(x) на концах отрезка и отбрасываем
отрезок [x0,x1] т.к. f(x0)>0 и f(x1)>0. Отрезок
[x1,b],на концах которого функция имеет
противоположные знаки f(x1)<0, f(b)>0, вновь
делим пополам и получаем новое приближение
корня x2=(x1+b)/2. и т.д. Итерационный процесс
продолжаем до тех пор, пока отрезок ) после n-й
итерации не станет меньше некоторого заданного
малого числа (погрешности). Тогда за искомое
значение
корня
принимается
полученное
приближение xn: x = xn и говорят, что решение
данного
уравнения
найдено
с
некоторой
погрешностью.
8
Пример. Решить уравнение методом
деления отрезка пополам уравнения
ex - 10x = 0.
Program del;
label 1,2;
var
a,b,x0,eps,r1,r2 : Real;
{ a, b - Начало и конец интервала }
{ x0 - Корень уравнения }
{ eps - Точность расчета }
k : Integer;
f1,f2 : Text;
9
function f(x:real) : Real; { Исследуемая
функция }
begin
f:=exp(x)-(10*x);
end;
10
Begin
assign(f1,'r1.pas'); { Файл данных }
assign(f2,‘r2.pas'); { Файл вывода }
reset(f1); rewrite(r2);read(f1,a,b,eps);
k:=0; 1:k:=k+1;
x0:=(a+b)/2;
if f(x0)=0 then goto 2;
if abs(b-a)<eps then goto 2;
r1:=f(x0);
r2:=f(a);
if (r1*r2)<0 then b:=x0
else a:=x0;
goto 1;
2: writeln(f2,k:3,x0:5:2); close(f2); end.
11
Найти корни уравнения x3-6x+2=0,
с точностью =0.1.
В
результате
получен
отделения
отрезок,
корней
был
содержащий
действительные корни.
На отрезоке [–3, –1] и определим корень
уравнения,
используя
метод
деления
отрезка пополам.
12
Определим знак функции на концах
отрезка [–3, –1]:
f(–3)= –27+18+2= –7;
f(–1)= –1+6+2=+7.
Делим отрезок пополам: (–3, –1)/2= –2.
Значение функции в этой точке
f(–2)= –8+12+2=6>0
Отбрасываем половину отрезка, на концах
которого функция имеет положительные
знаки, а именно – отрезок [–2, –1].
13
Отрезок [–3, –2] делим пополам: (–3–2)/2= –2.5;
f(–2.5)>0, отбрасываем отрезок [–2.5,–2].
Отрезок[–3,–2.5] делим пополам:(–3–2.5)/2=–2.75;
f(–2.75)<0. Рассматриваем отрезок [–2,75,–2,5]:
(–2.75–2.5)/2= –2.625. f(–2.625)<0.
Отрезок[–2.625,–2.5]:(–2.625–2.5)/2=–2.536.
f(–2.563)>0.
Следовательно, вновь полученный
отрезок: [–2.625, –2.563].
Проверим условие окончания вычислений
по формуле |b–a|  .
|2,625–2,563|=0.062,
0.062<0.1.
Таким образом, за искомое значение корня
принимаем значение x= –2.563 с точностью 0.1
14