Методом итераций

Часто этот метод на­зы­ва­ют еще методом по­сле­до­ва­тель­ных при­бли­же­ний.

Заменим уравнение (1.15) равносильным ему w(х) - х = =0,преобразовав для этого функциюF(х). Из этого урав­не­ния получимw(х)= х и вы­бе­­­рем любым спо­со­бомх0 О [а, b], которое затем под­­­­ста­­вим в левую часть урав­­­не­нияw(х0)= х1. По­лу­чен­ное значениех1снова под­­ста­вим в ле­вую часть и получимw(х1)= х2. Про­дол­жая этот про­цесс, за­пишем по­сле­до­ва­тель­ность чи­­селх1 , х2 , ..., xn, ко­торая мо­жет либо схо­дить­ся, т.е.иметь предел, ли­бо рас­хо­дить­ся, т.е.не иметь предела. Тогда в со­­ответствии с по­лу­чен­ным результатом в первом слу­чае этот предел назовем кор­­нем урав­­нения (1.15), во втором случае сде­лаем вы­­вод о не­воз­можности по­лу­чения ре­ше­ния дан­ным спо­со­бом. Оба этих варианта оп­ределяются теоремой схо­­­­димости ите­рационного про­цесса.

Теорема.Пусть на отрезке [а, b] имеется един­­ствен­ный корень уравнения х = w(х) и во всех точ­­­ках этого от­рез­ка производная F'(х) удов­ле­т­во­­­ря­ет неравенству |F’(х)|< q < 1. Если при этом вы­­пол­ня­­ется и условие а < <w(х) < b, то ите­ра­ци­он­ный про­цесс сходится, а за ну­ле­вое приближение х0 мо­жно взять любое число из отрезка [а, b].

Последнее утверждение означает, что{хi} О [а, b]. Чем меньше|w'(х)|, тем лучше схо­ди­мость ите­ра­ци­­онного процесса.

Пусть теперь x- точное значение корня, ахk- при­­­бли­женное. Попробуем оценить погрешность ме­­­тода. Со­гласно теореме [Бахвалов, 1973а],q опре­­деляется из|w'(хk)| < q < 1. Тогда должно быть спра­­ведливо соот­но­ше­ние

|x -хk| < q(q - 1)-1 k - хk -1|.

Если положить, что xотличается отхkна ве­ли­чи­ну,мень­шую e, то|x- хk| < e и по­сле­до­ва­тель­ность{хk} на­довы­чис­лять до тех пор, пока не бу­дут вы­пол­нены ус­ло­вия

q(q - 1)-1 k - хk-1 | <eилиk - хk-1 |<e (q - 1)/q,

откуда можно сделать сле­дующий вывод: так как урав­­не­ние F(х) = 0 при­водится к виду w(х)= храз­ны­ми спо­со­ба­ми, то для метода итераций сле­ду­ет выб­рать такое ура­в­нение дляw(х), для ко­то­ро­го вы­полняется усло­вие те­оремы.

В заключение отметим, что при ис­поль­зо­ва­нии ме­то­да простых итераций основным и, по­жа­луй, са­мым важ­ным моментом является выбор функ­­ции w(х) в урав­нениих = =w(х), эк­ви­ва­лент­ном ис­ход­но­му. Для метода итераций следует под­­би­рать функ­циюw(х) так, чтобы обязательно вы­­пол­ня­лось условие|w'(х)| < q < 1. При этом не нужно за­бы­вать, что скорость сходимости по­сле­до­ва­тель­нос­ти приближений {хi} к корнюxтем вы­­ше, чем мень­ше числоq.

Если предположить, что все условия для ре­а­ли­за­ции расчетов по методу простой итерации вы­пол­нены, то программа (без проверок) может быть очень простой:

Function iter1 (x0: real; eps : real;

var k : integer; ki : integer) : real;

var x, y : real;

begin k := 0;

y := x0;

repeat x := y;

y := funcI (x);

inc (k);

until (abs(x-y) < eps) or ( k > ki); iter1 := x;

end.

Но если заранее неизвестно: выполняются ус­ло­вия или нет, то в процедуру надо включить до­пол­ни­тель­ную проверку, что не намного ус­лож­нит про­грамму:

Function iter2 (x0: real; eps : real;

var k,L : integer; ki : integer) : real;

var x, y, eps1, eps2 : real;

begin k := 0;

y := x0; l := 0;

x := y;

y := funcI (x);

k := 1;

eps1 := abs (x-y);

repeat x := y;

y := funcI (x);

inc (k);

eps2 := abs (x-y);

if eps2 > eps1 then L := 1;

if k > ki then l := 2;

eps1 := eps2;

until (eps2 < eps) or ( l<>0 );

iter2 := x;

end.

Формальные параметры обеих процедур. Вход­ные:x0 (типreal) - начальное приближение кор­­ня;eps(типre­al) - параметр, используемый для окон­ча­­ния ите­ра­ци­он­ного про­цесса;ki(типin­teger) - мак­симальное ко­ли­чес­­т­во раз­ре­шенных ите­раций;func- имя внеш­ней про­це­дуры-функ­ции (типreal), воз­­вращающей зна­че­ниеw(х).Вы­­ход­­ные:x0 (типreal) - приближенное значение кор­­­ня, вы­численное с за­­данной точностью;k(типin­­te­ger) - количество вы­­­пол­нен­­ных итераций;l(типin­teger) - па­ра­метр, конт­­­ро­ли­ру­ю­щий работу про­це­дуры (толь­ко вiter2):l= 0 - вы­чис­ления вы­­пол­не­ны с заданной точ­­­ностью и вx0 на­ходится зна­че­ние корня;l= 1 - вы­­­чис­­ления прерваны из-за то­го, что ите­ра­­ци­он­ный про­цесс стал рас­хо­дить­ся (не выполнены ус­ло­­­­вия при­ме­ни­мос­ти метода, сформулированные в теореме);l = 2 - слиш­ком мно­го ите­раций (боль­ше, чемki). Следует вы­б­рать дру­­­­гое приближение, бо­лее близкое кx, или по­до­­­б­­­рать иную функциюw(х).

Для проверки процедуры методом итераций уточ­­нял­ся корень с точностью до 0,00001 для урав­­не­ния F(х) = 5х3-  - 20х+ 3.

Для отделения корней исследовалась про­из­вод­­ная урав­нения F '(х) =15х2 - 20, корни которой лег­ко оп­ре­де­лились аналитически: это. Опре­де­лим знаки функ­ции на интервалах

]-; -]; [-;]; [; +[.

Таблица 1.11

Параметр

Характеристики интервалов

Интервал

- 3

-2

0

+ 1

+ 2

sign ( F (x) )

-

+

+

-

+

Следовательно, корни расположены наин­тер­ва­­лах [-3; -2]; [0; 1] и [1; 2]. Теперь уравнениеF(х) = 0 следует при­вес­ти к видух = w(х), что мож­­но сде­лать разными спо­со­бами:

  1. х = х +(5х3- 20х +3); w1(х) = 5х3- 19х+ 3;

  2. х = (5х3+ 3) / 20; w2 (х) = (5х3+ 3) / 20;

  3. х = ; w3 (х) = .

Определим теперь, какая из полученных w(х) под­­хо­дит к использованию в итерационном про­цес­­се

;

.

Методом итераций уточним корень на отрезке [0, 1], выбрав вторую форму представления функ­ции w(x).Два других корня уравнения находим по теореме Виетта. За на­чаль­ное приближение возь­­­­мемх0 = 0,75 иq0 = х0 = 0,75. Поль­зуясь фор­му­­­лой для вычисления погреш­нос­ти, оп­ре­де­лимeтак,чтобы раз­ность между двумя по­сле­до­ва­­тель­ны­ми при­­бл­и­же­ни­ями была бы заданной точ­нос­ти:

n - хn-1| < 0.00001(1 — 0.75) / 0.75 =

= 0.00001 — 0.25/0.75 = 0.000003,

т.е. когда n - хn-1| < 0.000003, то ите­ра­ци­он­ный процесс можно завершить, счи­тая, что за­дан­ная точность до­стиг­нута.

Процедура-функция, по которой вычисляют w(х), име­ет вид

Function funcI (x :real) : real;

begin funcI := (5.0*x*sqr(x) + 3) / 20.0; end.

Результаты работы программы можно офор­мить так (табл. 1.12).

Таблица 1.12

Уточнение корня методом итераций на [0, 1]

xi

w (xi )

Итерация

0.100000

0.150250

0.150848

0.150858

0.150250

0.150848

0.150858

0.150858

k = 1

k = 2

k = 3

k = 4

Два остальных корня вычисляют по теореме Ви­­ет­та: F(х) = (х- 0.1514)(5х2+ 0.757х- 19.8853),откудах2их3определяются аналитически.

Уточним корни на отрезках [-3; -2] и [1; 2] лю­бым изу­чен­ным ранее методом, например ди­хо­то­мии или ком­бинированным. Используя про­грам­мы из п. 2.2 и 2.3, по­лу­ча­ем ос­тав­ши­е­ся два кор­ня (таб­л. 1.13).

Таблица 1.13

Интервал отрезка

[-3; -2]

[1; 2]

Mетод хорд

Mетод касат.

Итерация

Метод хорд

Метод касат.

Итерация

-2.057690

-2.068692

-2.071076

-2.071157

-2.071157

2.373913

2.119586

2.072719

2.071159

2.071157

k = 1

k = 2

k = 3

k = 4

k = 5

1.912281 1.920268 1.920299 1.920299

1.925000

1.920317

1.920299

1.920299

k =1

k =2

k =3

k =4

x = -2.071157; F(x) = 0.0000039561; k = 5

x = 1.920299; F(x) = -0.0000000159; k = 4

2.6. ПРИБЛИЖЕННОЕ РЕШЕНИЕ УРАВНЕНИЯ F(х)=0

Соседние файлы в папке glava1