Итак, можно сказать, что применение в прикладных задачах данного метода оправданно, но выбор перехода к системе x=
6. Заключение
В данной курсовой работе был реализован метод простой итерации для решения систем линейных алгебраических уравнений в виде двух программ, каждая из которых использует свой собственный способ перехода от системы вида F(x)=xк системе вида x=
Вообще говоря, метод простой итерации не отличается повышенной сходимостью (может вообще не сойтись), но если он сходится, то этот метод обычно имеет высокую точность счета и достаточно высокую скорость сходимости. Следует отметить, что все вышеперечисленное зависит от самой исходной системы Ax=b и способа перехода к системе вида 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