Помощь в написании студенческих работ
Антистрессовый сервис

Метод Гаусса-Зейделя

КонтрольнаяПомощь в написанииУзнать стоимостьмоей работы

If retcode = 1 then writeln ('Решение неуспещно'). Входные данные: n — размер матрицы,. Получаем корни: x1=0.999 999 999 999 815. Получаем корни: x1=0.9 999 995 843 072. Получаем корни: x1=0.9 999 766 912. Write ('Введите погрешность eps='); Write ('Введите погрешность eps='); Writeln ('Расширенная матрица:'); Writeln ('Расширенная матрица:'); Biзначения свободных членов. Readln (maxiter); (ввод… Читать ещё >

Метод Гаусса-Зейделя (реферат, курсовая, диплом, контрольная)

Министерство образования РФ ВСГУТУ Отчет о проделанной работе № 4

Метод Гаусса-Зейделя Выполнил: Чебунина Е.

гр. Б631−2

Проверил: Кривошеин М.Ю.

г. Улан-Удэ Спецификация Целью программы: нахождение XI-неизвестные и определение количества ITERитераций, зная AIJ-коэффициенты при неизвестных, BIсвободные члены и размер матрицы N. Необходимо решить заданные системы уравнений методом итераций и методом Зейделя с точностью

Дана матрица A размером n, b свободные члены. Нужно составить программу для вычисления матриц методом Гаусса-Зейделя.

Входные данные: n — размер матрицы,

epsпогрешность,

maxiterмаксимальное значение итераций,

aij-значения коэффициентов при неизвестных,

biзначения свободных членов.

Выходные данные: xi-значения неизвестных.

Таблица разработки

Шаги разработки

Примечание

Gausszeidel >

begin

ввод входных данных вычисление значений выражения вывод результата

end.

ввод входных данных>

begin

write ('Введите количество уравнений n=');

readln (n);

write ('Введите погрешность eps=');

readln (eps);

write ('Введите максимальное кол-во итераций maxiter=');

readln (maxiter); (ввод переменных)

for i := 1 to n do

begin

for j := 1 to n do

begin

Write ('a[', i, ',', j, ']=');

Read (a[i, j]);

end;

Write ('b[', i, ']=');

Readln (b[i]);

Writeln;

end; (ввод матрицы)

Writeln ('Расширенная матрица:');

Переменныеi, j, n, maxiter: integer

Переменная eps, rmax: real

вычислениекорней >

for i := 1 to n do

begin

for j := 1 to n do

write (a[i, j]: 8);

write (b[i]:8);

writeln;

end; (вывод матрицы)

retcode := 1;

for iter := 1 to maxiter DO

begin

rmax := 0;

for i := 1 to n DO

begin

r[i] := b[i];

for j := 1 to n do

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

if abs (r[i]) > rmax then

rmax := abs (r[i]);

x[i] := x[i] + r[i] / A[i, i];

end;

if rmax < eps THEN

begin

Retcode := 0;

goto 11;

end;

end;

11:

if retcode = 1 then writeln ('Решение неуспещно')

else

begin

for i := 1 to n do

Переменные iter, retcode: integer

Переменная max, c, s, M: real

Текст программы

1. program Gausszeidel;

2. label 11;

3. var

4. a: array [1.100, 1.100] of real;

5. b: array [1.100] of real;

6. r: array[1.100] of real;

7. x: array[1.100] of real;

8. eps, rmax: real; (эпсилон, rmax)

9. n, maxiter, i, j, iter, retcode: integer; (кол-во уровней, макс итераций, колво строк, столбцов, итерации, релаксиционный коэф.)

10. begin

11. write ('Введите количество уравнений n=');

12. readln (n);

13. write ('Введите погрешность eps=');

14. readln (eps);

15. write ('Введите максимальное кол-во итераций maxiter=');

16. readln (maxiter); (ввод переменных)

17. for i := 1 to n do

18. begin

19. for j := 1 to n do

20. begin

21. Write ('a[', i, ',', j, ']=');

22. Read (a[i, j]);

23. end;

24. Write ('b[', i, ']=');

25. Readln (b[i]);

26. Writeln;

27. end; (ввод матрицы)

28. Writeln ('Расширенная матрица:');

29. for i := 1 to n do

30. begin

31. for j := 1 to n do

32. write (a[i, j]: 8);

33. write (b[i]: 8);

34. writeln;

35. end; (вывод матрицы)

36. retcode := 1;

37. for iter := 1 to maxiter DO

38. begin

39. rmax := 0;

40. for i := 1 to n DO

41. begin

42. r[i] := b[i];

43. for j := 1 to n do

44. r[i] := r[i] - a[i, j] * x[j];

45. if abs (r[i]) > rmax then

46. rmax := abs (r[i]);

47. x[i] := x[i] + r[i] / A[i, i];

48. end;

49. if rmax < eps THEN

50. begin

51. Retcode := 0;

52. goto 11;

53. end;

54. end;

55. 11:

56. if retcode = 1 then writeln ('Решение неуспещно')

57 else

58. begin

59. for i := 1 to n do

60. Writeln ('корень x', i, '=', x[i]);

61. writeln (iter)

62. end;

63. end.

Экспериментальная часть Итерационный метод применим только тогда, когда диагональные элементы матрицы, А ненулевые.

Пример1:

В этом случае программа выводит на экран сообщение: «Решение неуспешно».

Выбор количества итераций. Одно действие приближения к решению, это и есть итерация. Оптимальной и эффективной является программа, для которой требуется наименьшее количество итераций.

Пример2:

А=

eps=0.0001

Введем максимальное количество итераций maxiter=7

Получаем корни: x1=1.233 388

x2=0.999 999 979 105 219

x3=0.999 999 999 511 196

Выводится сообщение о количестве затраченных итераций: 6.

Если вести максимальное количество итераций maxiter=4

Выводится сообщение, что решение неуспешно. Это значит, что заданных точности и количества итераций программе не хватает для успешного решения матрицы.

3. На Примере2 рассмотрим и выбор заданной точности (eps) :

А=

1). eps=0.001

Введем максимальное количество итераций maxiter=7

Получаем корни: x1=0.9 999 995 843 072

x2=0.99 999 960 434 176

x3=1.16 227 021

Выводится сообщение о количестве затраченных итераций: 5.

2). eps=0.01

Введем максимальное количество итераций maxiter=7

Получаем корни: x1=0.9 999 766 912

x2=0.99 999 936 896

x3=1.4 787 968

Выводится сообщение о количестве затраченных итераций: 4.

3). eps=0.1

Введем максимальное количество итераций maxiter=10

Получаем корни: x1=0.999 999 999 999 815

x2=1.191

x3=0.999 999 999 999 655

Выводится сообщение о количестве затраченных итераций: 9.

Вывод: Количество итераций зависит от точности (eps). С умением точность возрастает количество итераций.

Показать весь текст
Заполнить форму текущей работой