- •§ 2. Решение нелинейных алгебраических уравнений с одной переменной
- •§2. Решение нелинейных алгебраических уравнений с одной переменной
- •2.1. Задача отделения корней. Уточнение корней методом половинного деления (метод дихотомии)
- •Методом хорд (секущих)
- •Методом касательных (Ньютона)
- •Методом итераций
- •Методом парабол
- •2.7. Методы ускорения сходимости
Методом хорд (секущих)
Если отрезок [а, b] делят не пополам,а в отношении F(а):F(b),то получаютточкуx, расположенную ближе к предполагаемому корню уравненияпо сравнению с точкой, найденной методомдихотомии. Новое приближенное значение корня принимается:
, где. (1.16)
При n№0 полагаемх0=а. Геометрически этот способ эквивалентен замене кривойF(х) хордойА0В, проходящей черезA0 (b, F(b)) иВ(а, F(а)) (см. рис. 1.1). Из аналитической геометрии найдемх1как точку пересечения хордыА0Вс осьюОх:
,
полагая при этом у= 0, имеем
.
Точку х2ищем как пересечение хордыА1В, гдеА1 (х1,F(х1)), с осью 0х (см. рис 1.1):
,
полагая опять у = 0, имеем:
.
Далее каждое очередное хnбудем определять по формуле
. (1.17)
Процесс продолжаем до тех пор, пока не начнет выполняться условие |хn - хn-1 | <e.
Оценим погрешность этого метода [Березин, Жидков, 1962].Пусть найдутся хnихn-1 и пусть F'(х) непрерывна и на всем отрезке [а, b] сохраняет свой знак, причем выполняется условие:
0 < m1 < |F'(х)| < М1 < +7.
Примем, что хnопределен по формуле (1.17), гдеn = 1,2, ..., а; b - неподвижная точка. Учитывая, что F(x) = 0, имеем
и, применив теорему Лагранжа o конечном приращении функции, получим:
(x - хn -1) F '(x n -1) = (хn- хn -1) F '(Xn -1) ,
где x n -1 О [xn -1, x], Xn -1 О [xn -1, x], следовательно
. (*)
Так как F '(х) сохраняет постоянный знак на отрезке [а, b], причемx n-1 О [xn-1, x] иXn-1 О [xn-1, x], то числитель дроби можно ограничить разностью между max (F'(x) ) и min(F'(x) ) на отрезке [а, b]:
|F '(Xn-1)- F'(x n-1)| < М1 - m1. (**)
Из выражений (*) и (**) находим
, (1.18)
где М1= sup ( |F '(х)| ) и m1= inf ( |F '(х)| ) на отрезке [а, b]. Если при этом отрезок [а, b] мал, то имеет место неравенствоМ1 < m1, тогда оценкаеще более упрощается, т.е., как только обнаружили, что расстояние между двумя последовательно вычисленными корнями|хn - хn-1| e, гдеe - заданная предельная погрешность, то можно гарантировать, что|x - х n-1|e. Для вычисления значения корня на отрезке [а, b] с заданной точностьюeможно воспользоваться процедуройhord.
Формальные параметры процедуры.Входныe:а, b (типreal) - отрезок, на котором ищется корень;ерs(типreal) - точность вычисления корня;k(типinteger) -разрешенное число итераций;FUNC- внешняя процедура-функция.Выходные:k(типinteger) -количество выполненных итераций;х (типreal) - найденное значение корня с заданной точностьюерs.
procedure hord (a,b,eps:real; it:integer;
var x : real; var k:integer);
var x1,x2,x3 : real; k1 : integer;
begin
k := 1;
x1 := func(a);
x2 := func(b);
x3 := b - x2*(b-a)/(x2-x1);
if sign(x2)=sign(func(x3)) then
k1:=1
else
begin
k1:=2;
x1:=x2;
end;
repeat
inc (k);
x := x3;
Case k1 of
1: x2:= x3-Func(x3)*(x3-a)/(Func(x3)-x1);
2: x2:= x3-Func(x3)*(b-x3)/(x1-Func(x3));
end;
x3 := x2;
until (k>it) or (abs(x-x2)<eps);
end.
Для проверки процедуры решалось уравнение
2 соs(х +p/6) + х2- 3х + 2 = 0.
Первоначально корни уравнения определяли с точностью 0.1 графическим методом, а затем найденное значение корня уточняли методом хорд до 0.0001.
Перепишем уравнение в виде
2 соs(х +p/6)= -х2+3х - 2 ,
и еслипостроитьдва графика:у = 2 соs(х +p/6) и у = -х + 3х-- 2, то можно убедиться, что один корень ~1.1, а второй ~2.9. Поэтому первый интервал выбираем [0.9; 1.3], второй - [2.7; 3.1]. Точность установимe= 0.0005.
Процедура-функция может выглядеть так:
Function func (x :real) : real;
begin func := x*x - 3*x +2.0 + 2.0*Cos(x+Pi/6);
end.
Результаты расчетов с использованием подпрограммы hordприводятся в табл. 1.6.
Таблица 1.6
-
Первый корень на интервале [0.9; 1.3]
Второй корень на интервале [2.7; 3.1]
xi
xi +1
№ итерации
xi
xi+1
№ итерации
1.044879 1.032336
1.031823
1.031803
1.032336; 1.031823;
1.031803;
1.031802;
k = 1
k = 2
k = 3
k = 4
2.915101 2.953624 2.959635 2.960551 2.960690 2.960711
2.953624; 2.959635; 2.960551; 2.960690; 2.960711; 2.960714;
k = 1
k = 2
k = 3
k = 4
k = 5
k = 6
x = 1.031803; F(x) = — 0.0000025773; k = 4
x = 2.960711; F(x) = — 0.0000135768; k = 6
2.3. ПРИБЛИЖЕННОЕ РЕШЕНИЕ УРАВНЕНИЯ F(х) = 0