Метод хорд
НА первом этапе уже определен промежуток локализации корня [a,b], такой, что на этом промежутке есть только один корень уравненияY(x)=0.
Шаг 1.Проводим прямую (хорду) между точками с координатами (a,Y(a)) и (b,Y(b)). Выведем уравнение этой прямойg=k∙x+m:
g(b) =k∙b+m(1)
g(a) = k∙a + m (2)
Тогда
(3)
Подставим полученное для kвыражение в (1) и выведем формулу дляm.
Теперь, определив коэффициенты уравнения прямой kmможно вычислить точку пересечения хорды с осью абсциссx0, в которойg(x0)=0:
См. рис. 7 и рис. 8.
Рис. 7
Рис. 8
Шаг 2.Затем сравним знаки функцииY(x) в точках а иx0Y(а) иY(x0).
Если знаки функции одинаковы Y(а)∙Y(x0) > 0, то на промежутке от а доx0корня нет, дальше будем рассматривать промежуток [x0,b] и следующую хорду нужно провести между точками с координатами (x0,Y(x0)) и (b,Y(b)). Точкуапереносим вx0. См. рис.7.
Если же, как на рис.8, Y(а) иY(x0) имеют разные знаки, то естьY(а)∙Y(x0) < 0, то дальше следует рассматривать промежуток [a,x0]. Следующую хорду надо провести между точками (a,Y(a)) и (x0,Y(x0)). Точкуbпереносим вx0.
Выбор точки а или b, из которой следует строить следующую хорду, можно также осуществить с помощью знака второй производнойY”(x). Если знакY(b) иY’’(b) совпадают (Y(b)∙Y’’(b) > 0, то хорды следует строить из точкиb(рис 8. случайII), в противном случае из точки а (рис.7, случайI).
Эти действия можно представить в виде блок-схемы, показанной на рис. 9
Рис. 9
Шаг 3.Следующее приближение к корнюY(x)x1вычислим по формуле, аналогичной (5)
и сократим длину промежутка [a,b] как на 2-ом шаге (рис.9).
Шаг 4.Продолжать вычислениеx2,x3,….xi до тех пор, пока не выполнится условие
│xi–xi-1│≤(6)
Как только условие (6) выполнится, будем считать, что xiэто корень функцииY(x), найденный с точностью.
Численный пример.
Рассмотрим функцию x3-5∙x+ 3 = 0. Один из промежутков локализации -[1.5, 2], точность=0.01
Вычисления приведены в таблице 2.
Шаг 1. Вычислим значения Y(a),Y(b), затемx0по формуле (5) иY(x0).
Шаг 2. Поскольку Y(a) иY(x0) имеют одинаковый знак, то согласно блок-схеме на рис. 9,a=x0,b=b.
Шаг 3. Вычислим значения Y(a),Y(b), затемx1по формуле (5) иY(x1). Отметим, что │Y(x1)│ < │Y(x0)│.
Шаг 4. Проверим выполнение условия (6) : x1–x0=0.0581 >, поэтому продолжаем вычисления дляx2,x3.
Разность между x3иx2 (│x3 -x2│= 0.009) становится меньше заданной точности= 0,01, следовательно корень найден и равен 1.8332.
Таблица 2
i |
a |
b |
xi |
Y(a) |
Y(b) |
Y(xi) |
│xi–xi-1│ |
0 |
1.5 |
2 |
(1*1.5-1.125*2)/(1+1.125) =1.7647 |
-1.125 |
1 |
-0.328 |
|
1 |
1.7647 |
2 |
(1*1.7647-0.328*2)/(1+0.328) =1.8228 |
-0.328 |
1 |
-0.0575 |
0.2647 |
2 |
1.8228 |
2 |
(1*1.8228-0.0575*2)/(1+0.0575) =1.8324 |
-0.0575 |
1 |
-0.00913 |
0.058 |
3 |
1.8324 |
2 |
1.8332 |
-0.00913 |
1 |
-0.00143 |
0.009 |
В таблице 3 представлено решение вExcelс точностью 0.0005
В колонке Aуказывается номер итерацииI, в ячейкахAB78иD78 - границы промежутка локализации корня [a,b], в колонкахE,F,G– значения функцииYв точкахa,b,xiсоответственно, в ячейкахB80,C80 и ниже в этих колонках записывается условный оператор , соответствующий блок-схеме на рис.9. В колонкеHвычисляется длина отрезка [Xi-Xi-1] на каждом шаге.
Таблица 3
|
A |
B |
C |
D |
E |
F |
G |
H |
|
=ЕСЛИ(E78*G78>0;C78;D78) |
|
=(F78*B78-E78*C78)/(F78-E78) |
|
|
|
| |
=ЕСЛИ(E78*G78>0;D78;B78) |
|
|
|
|
|
|
| |
|
|
|
|
| ||||
78 |
i |
a |
b |
Xi |
Y(a) |
Y(b) |
Y(Xi) |
Xi-Xi-1 |
79 |
0 |
1.5 |
2 |
1.76471 |
-1.125 |
1 |
-0.32791 |
|
80 |
1 |
1.76471 |
2 |
1.82281 |
-0.32791 |
1 |
-0.05752 |
0.26471 |
81 |
2 |
1.82281 |
2 |
1.83245 |
-0.05752 |
1 |
-0.00913 |
0.05810 |
82 |
3 |
1.83245 |
2 |
1.83396 |
-0.00913 |
1 |
-0.00143 |
0.00964 |
83 |
4 |
1.83396 |
2 |
1.83420 |
-0.00143 |
1 |
-0.00022 |
0.00152 |
84 |
5 |
1.83420 |
2 |
1.83424 |
-0.00022 |
1 |
-3.5E-05 |
0.00024 |
Так как в строке 84 длина отрезка [Xi-Xi-1] оказалась равной 0.00024 что меньше точности=0.0005, то полученное в ячейке В84 значениеX=1.83420 является корнем уравнения, вычисленным с точностью=0.0005.