Итерационные методы решения нелинейных уравнений. Метод деления отрезка пополам Лекция 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