Итак, можно сказать, что применение в прикладных задачах данного метода оправданно, но выбор перехода к системе x=
(x) зависит от типа конкретной решаемой системы линейных алгебраических уравнений.6. Заключение
В данной курсовой работе был реализован метод простой итерации для решения систем линейных алгебраических уравнений в виде двух программ, каждая из которых использует свой собственный способ перехода от системы вида F(x)=xк системе вида x=
(x).Вообще говоря, метод простой итерации не отличается повышенной сходимостью (может вообще не сойтись), но если он сходится, то этот метод обычно имеет высокую точность счета и достаточно высокую скорость сходимости. Следует отметить, что все вышеперечисленное зависит от самой исходной системы Ax=b и способа перехода к системе вида x=
(x). Если метод не сходится, значит не соблюдаются условия сходимости метода или используется неудачный переход к системе x= (x).Приложения
итерация линейное алгебраическое уравнение
Приложение 1
Модуль METOD1.M
result=x0';
temp=x0';
size_system=size(system_a);
flag=ones(size_system(1),1);
edop1=zeros(1,size_system(1));
number_iter=0;
time=0;
number_oper=0;
a=system_a;
b=system_b;
%format long;
edop=input('Введитепогрешность:');
clc;
flops(0);
t1=clock;
while any(flag)
for i=1:size_system(1)
temp(i)=b(i)/a(i,i);
for ii=1:size_system(1)
if (i~=ii)
temp(i)=temp(i)-a(i,ii)/a(i,i)*result(number_iter+1,ii);
end;
end;
e(i)=abs(result(number_iter+1,i)-temp(i));
if e(i)<=edop
flag(i)=0;
else flag(i)=1;
end;
end;
edop1=[edop1;e];
result=[result;temp];
number_iter=number_iter+1;
end;
t2=clock;
number_oper=flops;
time=etime(t2,t1);
res=result';
v=size(res);
fprintf('total','\nРезультаты итерационного процесса, реализованного первым способом\n');
for i=1:size_system(1)
fprintf('total','\nX%g равен:',i);
fprintf('total','%g',res(i,v(2)));
end;
if exist('x_ok')==2
dy=abs(x_ok-res(:,v(2)));
for i=1:size_system(1)
fprintf('total','\nПогрешноськорняХ%g равна:',i);
fprintf('total','%g',dy(i));
end;
end;
fprintf('total','\nМетодсходитсяприпервомспособеза %g шагов',number_iter);
fprintf('total','\nВремя счета для первого способа: %g',time);
fprintf('total','\nЧисло операций при решении первым способом: %g\n',number_oper);
iter=0:number_iter;
m=[max(x0'),max(res(:,v(2)))];
n=[min(x0'),min(res(:,v(2)))];
miny=min(n);maxy=max(m);
ax=[0,number_iter,miny,maxy];
axis(ax);
for i=1:size_system(1)
plot(iter,result(:,i));
hold on;
title('Graph of iter. process by first metod');
end;
pause;
clg;
hold off;
for i=1:size_system(1)
plot(iter,edop1(:,i));
title('Graph of E(m) by first metod');
pause;
end;
clc;
Модуль METOD2.M
result=x0';
temp=x0';
size_system=size(system_a);
flag=ones(size_system(1),1);
edop1=zeros(1,size_system(1));
number_iter=0;
time=0;
number_oper=0;
a=system_a;
b=system_b;
%format long;
edop=input('Введитепогрешность:');
clc;
flops(0);
t1=clock;
while any(flag)
for i=1:size_system(1)
temp(i)=b(i);
for ii=1:size_system(1)
if (i~=ii)
temp(i)=temp(i)-a(i,ii)*result(number_iter+1,ii);
else temp(i)=temp(i)-(a(i,ii)-1)*result(number_iter+1,ii);
end;
end;
e(i)=abs(result(number_iter+1,i)-temp(i));
if e(i)<=edop
flag(i)=0;
else flag(i)=1;
end;
end;
edop1=[edop1;e];
result=[result;temp];
number_iter=number_iter+1;
end;
t2=clock;
number_oper=flops;
time=etime(t2,t1);
res=result';
v=size(res);
fprintf('total','\nРезультаты итерационного процесса, реализованного вторым способом\n');
for i=1:size_system(1)
fprintf('total','\nX%g равен:',i);
fprintf('total','%g',res(i,v(2)));
end;
if exist('x_ok')==2
dy=abs(x_ok-res(:,v(2)));
for i=1:size_system(1)
fprintf('total','\nПогрешноськорняХ%g равна:',i);
fprintf('total','%g',dy(i));
end;
end;
fprintf('total','\nМетодсходитсяпривторомспособеза %g шагов',number_iter);
fprintf('total','\nВремя счета для второго способа: %g',time);
fprintf('total','\nЧисло операций при решении вторым способом: %g\n',number_oper);
iter=0:number_iter;
m=[max(x0'),max(res(:,v(2)))];
n=[min(x0'),min(res(:,v(2)))];
miny=(min(n));maxy=(max(m));
ax=[0,number_iter,miny,maxy];
axis(ax);
for i=1:size_system(1)
plot(iter,result(:,i));
hold on;
title('Graph of iter. process by second metod');
end;
pause;
clg;
hold off;
for i=1:size_system(1)
plot(iter,edop1(:,i));
title('Graph of E(m) by second metod');
pause;
end;
clc;
Одинизвариантовмодуля SYSTEM_A.M
function [F]=system_a();
F=[1.02,-0.25,-0.30;
-0.41,1.13,-0.15;
-0.25,-0.14,1.21];
Один из вариантов модуля SYSTEM_B.M
function [F]=system_b();
F=[0.515;1.555;2.780];
Один из вариантов модуля X0.M
function [F]=x0();
F=[1000;1000;1000];
Один из вариантов модуля X_OK.M
function [F]=x_ok();
F=[2.0;2.5;3.0];
Приложение 2
Файл TOTAL результатов решения системы (4.1) с x(0)=(1000,1000,1000)
Результаты итерационного процесса, реализованного первым способом
X1 равен:2.00077
X2 равен:2.50077
X3 равен:3.00054
Погрешность корня Х1 равна:0.000767669
Погрешность корня Х2 равна:0.000771614
Погрешность корня Х3 равна:0.000544976
Метод сходится при первом способе за 18 шагов
Время счета для первого способа: 0.05
Число операций при решении первым способом: 612
Результаты итерационного процесса, реализованного вторым способом
X1 равен:2.00037
X2 равен:2.50004
X3 равен:3.00008
Погрешность корня Х1 равна:0.000370626
Погрешность корня Х2 равна:3.92304e-005
Погрешность корня Х3 равна:7.93105e-005
Метод сходится при втором способе за 17 шагов
Время счета для второго способа: 0.06
Число операций при решении вторым способом: 629
Файл TOTAL результатов решения системы (4.1) с x( 0 )=(1,1,1)
Результаты итерационного процесса, реализованного первым способом
X1 равен:1.99939
X2 равен:2.49937
X3 равен:2.99956
Погрешность корня Х1 равна:0.000609367
Погрешность корня Х2 равна:0.000630859
Погрешность корня Х3 равна:0.000441667
Метод сходится при первом способе за 10 шагов
Время счета для первого способа: 0.06
Число операций при решении первым способом: 340
Результаты итерационного процесса, реализованного вторым способом
X1 равен:2.00002
X2 равен:2.4996
X3 равен:2.99979
Погрешность корня Х1 равна:2.32305e-005
Погрешность корня Х2 равна:0.000402933
Погрешность корня Х3 равна:0.000207955
Метод сходится при втором способе за 10 шагов
Время счета для второго способа: 0.06
Число операций при решении вторым способом: 370
Файл TOTAL результатов решения системы (4.2) с x( 0 )=(-270,-503,1260,-653)
Результаты итерационного процесса, реализованного первым способом
X1 равен:-271.808
X2 равен:-505.362
X3 равен:1269.24
X4 равен:-656.953
Метод сходится при первом способе за 79 шагов
Время счета для первого способа: 0.55
Число операций при решении первым способом: 4819
Результаты итерационного процесса, реализованного вторым способом
X1 равен:-271.82
X2 равен:-505.348
X3 равен:1269.24
X4 равен:-656.941
Метод сходится при втором способе за 72 шагов
Время счета для второго способа: 0.55
Число операций при решении вторым способом: 4392
Файл TOTAL результатов решения системы (4.2) с x( 0 )=(0,10,20,30)
Результаты итерационного процесса, реализованного первым способом
X1 равен:-271.809
X2 равен:-505.362
X3 равен:1269.24
X4 равен:-656.954
Метод сходится при первом способе за 122 шагов
Время счета для первого способа: 0.93
Число операций при решении первым способом: 7442
Результаты итерационного процесса, реализованного вторым способом
X1 равен:-271.821
X2 равен:-505.348
X3 равен:1269.24
X4 равен:-656.94
Метод сходится при втором способе за 153 шагов
Время счета для второго способа: 1.32
Число операций при решении вторым способом: 9333
Приложение 3
График итерационного процесса на примере решения системы (4.1) с x( 0 )=(1000,1000,1000)программой METOD2
График итерационного процесса на примере решения системы (4.1)
График итерационного процесса на примере решения системы (4.2)
График итерационного процесса на примере решения системы (4.2)
Графики зависимостей погрешностей решений системы (4.1) от шага итерации при использовании программы METOD1.M и при x( 0