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

Нахождение XI–неизвестных. Определение количества ITER-итераций. Составление текста программы, ее тестирование. Условия применения итерационного метода. Выбор количества итераций, исследование их зависимости от точности (eps). Получение корней уравнений.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 27.02.2014
Размер файла 33,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

Министерство образования РФ

ВСГУТУ

Отчет о проделанной работе №4

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

Выполнил: Чебунина Е.

гр. Б631-2

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

г. Улан-Удэ

Спецификация

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

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

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

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

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

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

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

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

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

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

Примечание

Gauss- zeidel >

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 Gauss- zeidel;

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.0000000233388

x2=0.999999979105219

x3=0.999999999511196

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

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

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

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

А=

1). eps=0.001

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

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

x2=0.99999960434176

x3=1.00000016227021

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

2). eps=0.01

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

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

x2=0.99999936896

x3=1.000004787968

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

3). eps=0.00000001

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

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

x2=1.00000000000191

x3=0.999999999999655

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

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

Размещено на Allbest.ru


Подобные документы

  • Нахождение с заданной погрешностью корней уравнения. Оценка скорости сходимости. Нахождение промежутка, в котором содержится какой-либо корень уравнения для методов итераций и Ньютона. Разработка текста компьютерных программ для решения данных уравнений.

    лабораторная работа [253,9 K], добавлен 19.12.2012

  • Методы решения систем линейных алгебраических уравнений. Метод простых итераций и метод Зейделя. разработка программы для решения СЛАУ с произвольным количеством уравнений. Реализация методов Зейделя и простых итераций для получения вектора решений СЛАУ.

    курсовая работа [25,0 K], добавлен 20.11.2008

  • Использование метода Зейделя для нахождения корней системы линейных алгебраических уравнений. Суть метода простых итераций. Оценка погрешности нормальной системы. Составление алгоритма, блок-схемы и кода программы. Тестовый пример и проверка в MathCad.

    лабораторная работа [174,8 K], добавлен 02.10.2013

  • Разработка проекта по вычислению корней нелинейных уравнений методом итераций, в среде программирования Delphi. Интерфейс программы и ее программный код, визуализация метода. Сравнение результатов решения, полученных в Mathcad 14 и методом итераций.

    контрольная работа [1,9 M], добавлен 10.12.2010

  • Способы отделения корней. Решение задачи методами Ньютона уточнения корней и простых итераций. Формула нахождения погрешностей. Геометрическая интерпретация методов. Составление блок-схем и текстов программ. Результаты их работы на тестовом примере.

    курсовая работа [3,1 M], добавлен 15.06.2013

  • Аппроксимация – процесс замены таблично заданной функции аналитическим выражением кривой. Алгоритм нахождения зависимости между заданными переменными. Условия сходимости итераций к решению системы уравнений. Методы Якоби и Гаусса. Тестирование программы.

    курсовая работа [1,4 M], добавлен 28.08.2012

  • Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.

    курсовая работа [423,0 K], добавлен 17.02.2010

  • Отделение действительных корней нелинейного уравнения. Метод хорд и касательных (Ньютона), геометрическая интерпретация. Графическая схема алгоритма. Описание реализации базовой модели в MathCAD. График сравнения числа итераций в зависимости от точности.

    курсовая работа [2,0 M], добавлен 16.05.2013

  • Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.

    курсовая работа [325,5 K], добавлен 27.10.2013

  • Разработка программы для нахождения корней нелинейных уравнений несколькими методами: методом хорд, касательных, половинного деления, итераций. Реализации программы с помощью системы программирования Delphi 7. Методика работы пользователя с программой.

    курсовая работа [1,3 M], добавлен 11.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.