Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лаб.раб..doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.22 Mб
Скачать

Лабораторная работа № 7 Тема: Решение систем линейных уравнений методом Зейделя

Цель работы: Найти корни системы линейных уравнений методами Зейделя.

1. Теоретические сведения

Метод Зейделя является модификацией метода итераций. Идея метода заключается в том, что при вычислении (к+1) приближения корня хi учитываются уже вычисленные ранее (к+1) приближения корней хi , х2 , .… хi-1 .

Этот метод имеет ряд особенностей по сравнению с методом итераций:

  1. Повышается скорость сходимости, а значит, уменьшается объем вычислений.

  2. Вычислительный процесс может сходиться, даже если он расходится при использовании метода итераций.

  3. Возможны случаи, когда вычислительный процесс в методе Зейделя сходится медленнее, чем в методе итераций.

  4. Возможны случаи, когда вычислительный процесс в методе итераций сходится, а в методе Зейделя расходится.

2. Порядок выполнения работы

  1. Найти корни системы линейных уравнений методом Зейделя, используя компьютерную программу из приложения.

  2. Выполнить проверку, сохраняя в вычислениях четыре знака в дробной части чисел.

3. Задание к лабораторной работе

3.1. Выбрать систему линейных уравнений в соответствии с вариантом.

1. 2.

3. 4.

5. 6.

7. 8.

9. 10.

11. 12.

13. 14.

15. 16.

17. 18.

19. 20.

21. 22.

23. 24.

25. 26.

27. 28.

29. 30.

3.2. Найти корни системы линейных уравнений методам Зейделя с точностью 0,001.

3.3. Сравнить результаты с результами, получеными методом главных элементов.

3.4. Оценить точность использованных методов по степени близости системы уравнений к тождеству при подстановке в нее значений корней.

3.5. Привести и сравнить результаты, полученные методами главных элементов, итераций и Зейделя.

3.6. Оформить отчет по лабораторной работе.

Приложение

program labrab7;

type mat=array [1..20,1..21] of real;

vec=array [1..20] of real;

var

a:mat;

x,k,y:vec;

i,l,m,n:integer;

e,t:real;

procedure matr (n:integer; var a:mat; var x:vec);

var i,j:integer;

Begin

for i:=1 to n do begin x[i]:=0.0;

for j:=1 to n+1 do begin

write ('a','(',i,',',j,')','='); readln(a[i,j]);

end;

writeln;

end;

End;

procedure seid(n:integer; var l:integer;a:mat;x:vec;e:real);

var

i,j,n1:integer;

s:real;

Begin

l:=0;

s:=1;

while abs(s)>e do

if l=0 then

begin

write(l:2,' ');

for i:=1 to n do

begin

s:=a[i,n+1];

for j:=1 to n do

s:=s-a[i,j]*x[j];

s:=s/a[i,i]; y[i]:=x[i]+s;

if (i mod 3)=0 then writeln (' ',y[i]:8:4, ' ')

else write (' ',y[i]:8:4, ' ');

k[i]:=s;

end;

for i:=1 to n do

x[i]:=y[i];

l:=l+1;

end

else

begin

write (l:2,' ');

for i:=1 to n do

begin

s:=a[i,n+1];

for j:=1 to n do

s:=s-a[i,j]*x[j];

s:=s/a[i,i]; x[i]:=x[i]+s;

if (i mod 3)=0 then

writeln (' ',x[i]:8:4,' ')

else

write (' ',x[i]:8:4,' ');

end;

l:=l+1;

end;

End;

BEGIN

cls;

writeln;

writeln ('Решение систем линейных уравнений методом Зейделя');

writeln;

write ('Введите порядок системы n=');read(n);

write ('Введите точность');read(e);

matr(n,a,x);

writeln;

writeln('---------------------------------------------');

writeln(' k X1 X2 X3 ');

writeln('---------------------------------------------');

seid(n,l,a,x,e);

end.