Метод простой итерации
Функцию r(x,y), определяющую расстояние между точками x и y множества X назовем метрикой, если
1) r(x,y)³0
2) r(x,y)=0 x=y
3) r(x,y)= r(y,x)
4) r(x,y)£ r(x,z)+ r(z,y).
Множество X с введенной метрикой r назовем метрическим пространством.
Последовательность точек метрического пространства называется фундаментальной, если .
Пространство называется полным, если в нем любая фундаментальная последовательность сходится.
Отображение F пространства E в себя называется сжимающим, если
x – неподвижная точка, если F(x)=x.
Оценка расстояния между неподвижной точкой и приближением x(k) производится следующим образом:
или .
Таким образом, чтобы погрешность вычислений была меньше наперед заданного числа ε, достаточно потребовать .
Рассмотрим 3 типа метрики.
Пусть x(x1,x2,…,xn) и y(y1,y2,…,yn) – две точки n-мерного пространства.
I. Максимальная из сумм модулей коэффициентов при неизвестных в правой части системы, взятых по строкам, должна быть меньше единицы:
II. Максимальная из сумм модулей коэффициентов при неизвестных в правой части системы, взятых по столбцам, должна быть меньше единицы:
III. Корень квадратный из суммы квадратов коэффициентов при неизвестных в правой части системы, должен быть меньше единицы:
СЛУ преобразуется таким образом, чтобы по одной из метрик выполнялось α < 1.
При этом СЛУ задает отображение, которое при α < 1 будет сжимающим. Значит, взяв любую точку в качестве начального приближения, получим последовательность точек, которая будет сходиться к неподвижной точке; это точка и будет решением системы.
Чтобы привести СЛУ к итерационному виду нужно:
1) с помощью равносильных преобразований привести систему к виду с преобладающими диагональными коэффициентами (по абсолютной величине);
2) разделить все уравнения на соответствующие диагональные коэффициенты и выразить из каждого уравнения неизвестное с коэффициентом, равным единице.
Если для этой системы α < 1, то система задает сжимающее отображение.
Рассмотрим на примере:
Решим систему трех линейных уравнений с тремя неизвестными.
Преобразуем систему к итерационному виду, для чего поменяем местами 1-ую строку со 2-ой, после чего каждую строку разделим на соответствующие диагональные элементы.
Проверим, будет ли отображение сжимающим:
Запишем формулы для решения системы методом итераций:
Программа решения системы трех линейных уравнений с тремя неизвестными методом простой итерации (с использованием евклидовой метрики):
program slu_iter;
var p,b,x1,x2,x3,y1,y2,y3,a,e: real;
N: integer;
begin
write('Введите x1, x2, x3 : '); readln(x1,x2,x3);
write('Введите A, E : '); readln(a,e);
b:=e*(1-a)/a;
N:=0; {число итераций}
repeat
N:=N+1;
y1:= 0.1362*x2-0.1790*x3+16.1433;
y2:=-0.2238*x1+0.0909*x3+25.3154;
y3:= 0.1739*x1+0.2875*x2+21.3777;
p:=sqrt(sqr(x1-y1)+sqr(x2-y2)+sqr(x3-y3));
x1:=y1; x2:=y2; x3:=y3;
until p<=b;
writeln('x1 = ',x1:8:6);
writeln('x2 = ',x2:8:6);
writeln('x3 = ',x3:8:6);
writeln('Число итераций - N = ',N);
readln
end.
Блок-схема метода простой итерации: | Результаты выполнения программы |
Введите x1, x2, x3 : 0 0 0 Введите A, E : 0.2218 0.0001 x1 = 13.999332 x2 = 25.000225 x3 = 30.999722 Число итераций - N = 10 |