Метод итераций
Уравнение f(x)=0 представляем в виде x=j(x). Выбираем на отрезке [a,b] произвольную точку x0 в качестве начального приближения и строим последовательность: x1=j(x0), x2=j(x1), ..., xn=j(xn-1). Процесс последовательного вычисления чисел xn (n=1,2,3,...) называется методом итераций.
Если на отрезке [a,b] выполнено условие |j'(x)|≤q<1, то процесс итераций сходится, т.е. увеличивая n, можно получить приближение, сколь угодно мало отличающееся от истинного значения корня уравнения.
Процесс итераций продолжается до тех пор, пока не будет выполнено условие |xn-xn-1|£ e, где e — заданная точность вычислений. Если q≤0.5, то для прекращения процесса итераций можно пользоваться более простым соотношением |xn-xn-1|£e.
Геометрическая интерпретация метода итераций:
Пример: Методом итераций найти корень уравнения f(x)=arcsin(2x+1)-x2=0 расположенный на отрезке [-0.5,0] c точностью ε=10-4.
Уравнение преобразуем к виду y=j(x) следующим образом:
arcsin(2x+1)=x2, sin(arcsin(2x+1))=sin(x2), 2x+1=sin(x2), x=0.5(sin(x2)-1).
Значит j(x)= 0.5(sin(x2)-1), j’(x)=xcos(x2), |j’(x)|=|xcos(x2)|≤0.5 для xÎ[-0.5,0]. Метод итераций сходится.
Замечание: на каждом этапе необходимо помнить лишь два соседних приближения, поэтому приближение xn обозначим через x, а приближение xn+1через y.
Program Iter; {метод итераций}
Uses Crt;
Const eps=0.0001;
Var
fx,x,y,delta :Real;
n :Integer;
Function Fi(z:Real):Real;
Begin
Fi:=0.5*(sin(z*z)-1)
End;
Function F(z:Real):Real;
Begin
F:=2*z+1-sin(z*z);
End;
Begin
Clrscr;
Write ('Введите начальное приближение x=');
ReadLn (x);
n:=0;
Repeat
y:=Fi(x);
delta:=abs(y-x);
n:=n+1;
x:=y;
Until delta<eps;
WriteLn('Корень уравнения x=',x:8:4);
WriteLn('Проверка f(',x:8:4,')=',f(x):8:5);
WriteLn('Количество итераций n=',n);
Repeat Until KeyPressed;
End.
Дата добавления: 2015-04-15; просмотров: 738;