Смекни!
smekni.com

Метод простой итерации для решения систем линейных алгебраических уравнений (стр. 3 из 4)

Итак, можно сказать, что применение в прикладных задачах данного метода оправданно, но выбор перехода к системе 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','&bsol;nРезультаты итерационного процесса, реализованного первым способом&bsol;n');

for i=1:size_system(1)

fprintf('total','&bsol;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','&bsol;nПогрешноськорняХ%g равна:',i);

fprintf('total','%g',dy(i));

end;

end;

fprintf('total','&bsol;nМетодсходитсяприпервомспособеза %g шагов',number_iter);

fprintf('total','&bsol;nВремя счета для первого способа: %g',time);

fprintf('total','&bsol;nЧисло операций при решении первым способом: %g&bsol;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','&bsol;nРезультаты итерационного процесса, реализованного вторым способом&bsol;n');

for i=1:size_system(1)

fprintf('total','&bsol;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','&bsol;nПогрешноськорняХ%g равна:',i);

fprintf('total','%g',dy(i));

end;

end;

fprintf('total','&bsol;nМетодсходитсяпривторомспособеза %g шагов',number_iter);

fprintf('total','&bsol;nВремя счета для второго способа: %g',time);

fprintf('total','&bsol;nЧисло операций при решении вторым способом: %g&bsol;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)программой METOD1

График итерационного процесса на примере решения системы (4.1) с x( 0 )=(1000,1000,1000)программой METOD2



График итерационного процесса на примере решения системы (4.1)


с x( 0 )=(1,1,1)программой METOD1


График итерационного процесса на примере решения системы (4.1) с x( 0 )=(1,1,1)программой METOD2

График итерационного процесса на примере решения системы (4.2)


с x( 0 )=(0,10,20,30)программой METOD1

График итерационного процесса на примере решения системы (4.2) с x( 0 )=(0,10,20,30)программой METOD2

График итерационного процесса на примере решения системы (4.2)


с x( 0 )=(-270,-503,1260,-653)программой METOD1


График итерационного процесса на примере решения системы (4.2) с x( 0 )=( -270,-503,1260,-653)программой METOD2

Графики зависимостей погрешностей решений системы (4.1) от шага итерации при использовании программы METOD1.M и при x( 0