Метод Гаусса-Зейделя
Нахождение 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