Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Реферат: Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя

Название: Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя
Раздел: Рефераты по математике
Тип: реферат Добавлен 17:20:30 04 октября 2005 Похожие работы
Просмотров: 10057 Комментариев: 37 Оценило: 23 человек Средний балл: 4 Оценка: 4     Скачать

Содержание

Введение 1

1. Теоретическая часть 1

1.1. Метод Гаусса 1

1.2. Метод Зейделя 4

1.3. Сравнение прямых и итерационных методов 6

2. Практическая часть 7

2.1 Программа решения системы линейных уравнений по методу Гаусса 7

2.2 Программа решения системы линейных уравнений по методу Зейделя 10

Введение

Решение систем линейных алгебраических уравнений – одна из основных задач вычислительной линейной алгебры. Хотя задача решения системы линейных уравнений сравнительно редко представляет самостоятельный интерес для приложений, от умения эффективно решать такие системы часто зависит сама возможность математического моделирования самых разнообразных процессов с применением ЭВМ. Значительная часть численных методов решения различных (в особенности – нелинейных) задач включает в себя решение систем линейных уравнений как элементарный шаг соответствующего алгоритма.

Одна из трудностей практического решения систем большой размерности связанна с ограниченностью оперативной памяти ЭВМ. Хотя обьем оперативной памяти вновь создаваемых вычислительных машин растет очень быстро, тем не менее, еще быстрее возрастают потребности практики в решении задач все большей размерности. В значительной степени ограничения на размерность решаемых систем можно снять, если использовать для хранения матрицы внешние запоминающие устройства. Однако в этом случае многократно возрастают как затраты машинного времени, так и сложность соответствующих алгоритмов. Поэтому при создании вычислительных алгоритмов линейной алгебры большое внимание уделяют способам компактного размещения элементов матриц в памяти ЭВМ.

К счастью, приложения очень часто приводят к матрицам, в которых число ненулевых элементов много меньше общего чила элементов матрицы. Такие матрицы принято называть разреженными . Одним из основных источников разреженных матриц являются математические модели технических устройств, состоящих из большого числа элементов, связи между которыми локальны. Простейшие примеры таких устройств – сложные строительные конструкции и большие электрические цепи.

Известны примеры решенных в последние годы задач, где число неизвестных достигало сотен тысяч. Естественно, это было бы невозможно, если бы соответствующие матрицы не являлись разреженными (матрица системы из 100 тыс. уравнений в формате двойной точности заняла бы около 75 Гбайт).

1. Теоретическая часть

1.1. Метод Гаусса

Одним из самых распространенных методов решения систем линейных уравнений является метод Гаусса. Этот метод (который также называют методом последовательного исключения неизвестных ) известен в различных вариантах уже более 2000 лет.

Вычисления с помощью метода Гаусса заключаются в последовательном исключении неизвестных из системы для преобразования ее к эквивалентной системе с верхней треугольной матрицей. Вычисления значений неизвестных производят на этапе обратного хода.

1.1.1. Схема единственного деления. Рассмотрим сначала простейший вариант метода Гаусса, называемый схемой единственного деления .

Прямой ход состоит из n - 1 шагов исключения.

1-й шаг. Целью этого шага является исключение неизвестного x 1 из уравнений с номерами i = 2, 3, …, n . Предположим, что коэффициент a 11 ¹ 0. Будем называть его главным элементом 1-го шага .

Найдем величины

qi 1 = ai 1 /a 11 (i = 2, 3, …, n ),

называемые множителями 1-го шага . Вычтем последовательно из второго, третьего, …, n- го уравнений системы первое уравнение, умноженное соответственно на q2 1 , q 31 , …, qn 1 . Это позволит обратить в нуль коэффициенты при x 1 во всех уравнениях, кроме первого. В результате получим эквивалентную систему

a 11 x 1 + a 12 x 2 + a 13 x 3 + … + a 1n xn = b 1 ,

a 22 (1) x 2 + a 23 (1) x 3 + … + a 2n (1) xn = b 2 (1) ,

a 32 (1) x 2 + a 33 (1) x 3 + … + a 3n (1) xn = b 3 (1) ,

. . . . . . . . . . . . . . .

an 2 (1) x 2 + an 3 (1) x 3 + … + ann (1) xn = bn (1) .

в которой aij (1) и bij (1) вычисляются по формулам

aij (1) = aij − qi 1 a 1j , bi (1) = bi − qi 1 b 1 .

2-й шаг. Целью этого шага является ислючение неизвестного x 2 из уравнений с номерами i = 3, 4, …, n . Пусть a 22 (1) ≠ 0, где a 22 (1) ­– коэффициент, называемый главным (или ведущим ) элементом 2-го шага . Вычислим множители 2-го шага

qi 2 = ai 2 (1) / a 22 (1) (i = 3, 4, …, n )

и вычтем последовательно из третьего, четвертого, …, n- го уравнения системы второе уравнение, умноженное соответственно на q 32 , q 42 , …, qm 2 . В результате получим систему

a 11 x 1 + a 12 x 2 + a 13 x 3 + … + a 1n xn = b 1 ,

a 22 (1) x 2 + a 23 (1) x 3 + … + a 2n (1) = b 2 (1) ,

a 33 (2) x 3 + … + a 3n (2) xn = b 3 (2) ,

. . . . . . . . . . . . . . . . . . .

an 3 (2) x 3 + … + ann (2) xn = bn (2) .

Здесь коэффициенты aij (2) и bij (2) вычисляются по формулам

aij (2) = aij (1)qi 2 a 2j (1) , bi (2) = bi (1)qi 2 b 2 (1) .

Аналогично проводятся остальные шаги. Опишем очередной k- й шаг.

k- й шаг. В предположении, что главный (ведущий ) элемент k- го шага akk (k –1) отличен от нуля, вычислим множители k-го шага

qik = aik (k –1) / akk (k –1) (i = k + 1, …, n )

и вычтем последовательно из (k + 1)-го, …, n -го уравнений полученной на предыдущем шаге системы k -e уравнение, умноженное соответственно на qk +1,k , qk +2,k , …, qnk .

После (n - 1)-го шага исключения получим систему уравнений

a 11 x 1 + a 12 x 2 + a 13 x 3 + … + a 1n xn = b 1 ,

a 22 (1) x 2 + a 23 (1) x 3 + … + a 2n (1) xn = b 2 (1) ,

a 33 (2) x 3 + … + a 3n (2) xn = b 3 (2) ,

. . . . . . . . . . . . . . . . . . . .

ann (n –1) xn = bn (n –1) .

матрица A (n -1) которой является верхней треугольной. На этом вычисления прямого хода заканчиваются.

Обратный ход. Из последнего уравнения системы находим xn. Подставляя найденное значение xn в предпоследнее уравнение, получим xn –1 . Осуществляя обратную подстановку, далее последовательно находим xn –1 , xn –2 , …, x 1 . Вычисления неизвестных здесь проводятся по формулам

xn = bn (n –1) / ann (n –1) ,

xk = (bn (k –1)ak ,k +1 (k –1) xk +1 – … – akn (k –1) xn ) / akk (k –1) , (k = n – 1, …, 1).

Необходимость выбора главных элементов. Заметим, что вычисление множителей, а также обратная подстановка требуют деления на главные элементы akk (k –1) . Поэтому если один из главных элементов оказывыется равным нулю, то схема единственного деления не может быть реализована. Здравый смысл подсказывает, что и в ситуации, когда все главные элементы отличны от нуля, но среди них есть близкие к нулю, возможен неконтролируемый рост погрешности.

1.1.2. Метод Гаусса с выбором главного элемента по столбцу (схема частичного выбора). Описание метода. На k -м шаге прямого хода коэффициенты уравнений системы с номерами i = k + 1, …, n преобразуются по формулам

aij (k ) = aij (k –1) − qik akj , bi (k ) = bi (k –1) − qik bk (k –1) , i = k + 1, …, n .

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

В методе Гаусса с выбором главного элементоа по столбцу гарантируется, что |qik | ≤ 1 для всех k = 1, 2, …, n – 1 и i = k + 1, …, n . Отличие этого варианта метода Гаусса от схемы единственного деления заключается в том, что на k -м шаге исключения в качестве главного элемента выбирают максимальный по модулю коэффициент aikk при неизвестной xk в уравнениях с номерами i = k + 1, …, n . Затем соответствующее выбранному коэффициенту уравнение с номером ik меняют местами с k -м уравнением системы для того, чтобы главный элемент занял место коэффициента akk (k -1) . После этой перестановки исключение неизвестного xk производят, как в схеме единственного деления.

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

На 1-м шаге мтода среди элементов aij определяют максимальный по модулю элемент ai 1j 1 . Первое уравнение системы и уравнение с номером i 1 меняют местами. Далее стандартным образом производят исключение неизвестного xi 1 из всех уравнений, кроме первого.

На k -м шаге метода среди коэффициентов aij (k –1) при неизвестных в уравнениях системы с номерами i = k , …, n выбирают максимальный по модулю коэффициент aikjk (k -1) . Затем k -е уравнение и уравнение, содержащее найденный коэффициент, меняют местами и исключают неизвестное xjk из уравнений с номерами i = k + 1, …, n .

На этапе обратного хода неизвестные вычисляют в следующем порядке: xjn , xjn– 1 , …, xj 1 .

1.2. Метод Зейделя

1.2.1. Приведение системы к виду, удобному для итераций. Для того чтобы применить метод Зейделя к решению системы линейных алгебраических уравнений

Ax = b

с квадратной невырожденной матрицей A , необходимо предварительно преобразовать эту систему к виду

x = Bx + c .

Здесь B – квадратная матрица с элементами bij (i, j = 1, 2, …, n ), c – вектор-столбец с элементами cij (i = 1, 2, …, n ).

В развернутой форме записи система имеет следующий вид:

x 1 = b 11 x 1 + b 12 x 2 + b 13 x 3 + … + b 1n xn + c 1

x 2 = b 21 x 1 + b 22 x 2 + b 23 x 3 + … + b 2n xn + c 2

. . . . . . . . . . . . . . . . .

xn = bn 1 x 1 + bn 2 x 2 + bn 3 x 3 + … + bnn xn + cn

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

Самый простой способ приведения системы к виду, удобному для итераций, состоит в следующем. Из первого уравнения системы выразим неизвестное x 1 :

x 1 = a 11 –1 (b 1a 12 x 2a 13 x 3 – … – a 1n xn ),

из второго уравнения – неизвестное x 2 :

x 2 = a 21 –1 (b 2a 22 x 2a 23 x 3 – … – a 2n xn ),

и т. д. В результате получим систему

x 1 = b 12 x 2 + b 13 x 3 + … + b 1,n –1 xn –1 + b 1n xn + c 1 ,

x 2 = b 21 x 1 + b 23 x 3 + … + b 2,n –1 xn –1 + b 2n xn + c 2 ,

x 3 = b 31 x 1 + b 32 x 2 + … + b 3,n –1 xn –1 + b 3n xn + c 3 ,

. . . . . . . . . . . . . . . . . . . . . . .

xn = bn 1 x 1 + bn 2 x 2 + bn 3 x 3 + … + bn ,n –1 xn –1 + cn ,

в которой на главной диагонали матрицы B находятся нулевые элементы. Остальные элементы выражаются по формулам

bij = –aij / aii , ci = bi / aii (i, j = 1, 2, …, n, j ≠ i )

Конечно, для возможности выполнения указанного преобразования необходимо, чтобы диагональные элементы матрицы A были ненулевыми.

1.2.1. Описание метода. Введем нижнюю и верхнюю треугольные матрицы

0 0 0 … 0 0 b 12 b 13 b 1n

b 21 0 0 … 0 0 0 b 23 b 2n

B 1 = b 31 b 32 0 … 0 , B­­ 2 = 0 0 0 … b 3n

. . . . . . . . . . . . . .

bn 1 bn 2 bn 3 … 0 0 0 0 … 0

Заметим, что B = B 1 + B 2 и поэтому решение x исходной системы удовлетворяет равенству

x = B 1 x + B 2 x + c .

Выберем начальное приближение x (0) = [x 1 (0) , x 2 (0) , …, xn (0) ]T . Подставляя его в правую часть равенства при верхней треугольной матрице B 2 и вычисляя полученное выражение, находим первое приближение

x (1) = B 1 x (0) + B 2 x (1)

Подставляя приближение x (1) , получим

x (2) = B 1 x (1) + B 2 x (2)

Продолжая этот процесс далее, получим последовательность x (0) , x (1) , …, x (n ) , … приближений к вычисляемых по формуле

x (k +1) = B 1 (k +1) + B 2 (k ) + c

или в развернутой форме записи

x1 (k +1) = b 12 x 2 (k ) + b 13 x 2 (k ) + … + b 1n xn (k ) + c 1 ,

x2 (k +1) = b 21 x 1 (k +1) + b 23 x 3 (k ) + … + b 2n xn (k ) + c 2 ,

x3 (k +1) = b 31 x 1 (k +1) + b 32 x 2 (k +1) + … + b 3n xn (k ) + c 3 ,

. . . . . . . . . . . . . . . . . . . . . . . . . .

xn (k +1) = bn 1 x 1 (k +1) + bn 2 x 2 (k +1) + bn 3 x 3 (k +1) + … + cn .

Объединив приведение системы к виду, удобному для итераций и метод Зейделя в одну формулу, получим

xi (k +1) = x i (k )aii –1 (∑j =1 i –1 aij xj (k +1) + ∑j =1 n aij xi (k )bi ).

Тогда достаточным условием сходимоти метода Зейделя будет

j =1, j≠i n | ij | < | ii |

(условие доминированния диагонали ).

Метод Зейделя иногда называют также методом Гаусса-Зейделя, процессом Либмана, методом последовательных замещений.

1.3. Сравнение прямых и итерационных методов

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

Итерационные методы применяют главным образом для решения задач большой размерности, когда использование прямых методов невозможно из-за ограниченииий в доступной оперативной памяти ЭВМ или из-за необходимости выполнения черезмерно большого числа арифметических операций. Большие системы уравнений, возникающие в основном в приложениях, как правило являются разреженными. Методы исключения для систем с разреженным и матрицами неудобны, например, тем, что при их использовании большое число нулевых элементов превращается в ненулевые и матрица теряет свойство разреженности. В противоположность им при использованнии итерационных методов в ходе итерационного процесса матрица не меняется, и она, естественно, остается разреженной. Большая эффективность итерационных методов по сравнению с прямыми методами тесно связанна с возможностью существенного использования разреженности матриц.

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

2. Практическая часть

2.1 Программа решения систем линейных уравнений по методу Гаусса

2.1.1. Постановка задачи. Требуется решить систему линейных алгебраических уравнений с вещественными коэффициентами вида

a 11 x 1 + a 12 x 2 + … + a 1n xn = b 1 ,
a 21 x 2 + a 22 x 2 + … + a 2n xn = b 2 ,
. . . . . . . . . . . . .

an 1 x 1 + an 2 x 2 + … + ann xn = bn

для n ≤ 10 по методу Гаусса.

2.1.2. Тестовый пример.

3,2x 1 + 5,4x 2 + 4,2x 3 + 2,2x 4 = 2,6 ,

2,1x 1 + 3,2x 2 + 3,1x 3 + 1,1x 4 = 4,8 ,

1,2x 1 + 0,4x 2 – 0,8x 3 – 0,8x 4 = 3,6 ,

4,7x 1 + 10,4x 2 + 9,7x 3 + 9,7x 4 = –8,4 ,

x 1 = 5, x 2 = –4, x 3 = 3, x 4 = –2.

2.1.3. Описание алгоритма. В данной программе реализован метод Гаусса со схемой частичного выбора.

В переменную n вводится порядок матрицы системы. С помощью вспомогательной процедуры ReadSystem в двумерный массив a и одномерный массив b вводится c клавиатуры расширенная матрица системы, после чего оба массива и переменная n передаются функции Gauss . В фукции Gauss для каждого k -го шага вычислений выполняется поиск максимального элемента в k -м столбце матрицы начинаяя с k -й строки. Номер строки, содержащей максимальный элемент сохраняеется в переменной l . В том случае если максимальный элемент находится не в k -й строке, строки с номерами k и l меняются местами. Если же все эти элементы равны нулю, то происходит прекращение выполнения функции Gauss c результатом false . После выбора строки выполняется преобразование матрицы по методу Гаусса. Далее вычисляется решение системы и помещается в массив x . Полученное решение выводится на экран при помощи вспомогательной процедуры WriteX.

2.1.4. Листинг программы и результаты работы

Uses CRT;

Const

maxn = 10;

Type

Data = Real;

Matrix = Array[1..maxn, 1..maxn] of Data;

Vector = Array[1..maxn] of Data;

{ Процедура ввода расширенной матрицы системы }

Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);

Var

i, j, r: Integer;

Begin

r := WhereY;

GotoXY(2, r);

Write('A');

For i := 1 to n do begin

GotoXY(i*6+2, r);

Write(i);

GotoXY(1, r+i+1);

Write(i:2);

end;

GotoXY((n+1)*6+2, r);

Write('b');

For i := 1 to n do begin

For j := 1 to n do begin

GotoXY(j * 6 + 2, r + i + 1);

Read(a[i, j]);

end;

GotoXY((n + 1) * 6 + 2, r + i + 1);

Read(b[i]);

end;

End;

{ Процедура вывода результатов }

Procedure WriteX(n :Integer; x: Vector);

Var

i: Integer;

Begin

For i := 1 to n do

Writeln('x', i, ' = ', x[i]);

End;

{ Функция, реализующая метод Гаусса }

Function Gauss(n: Integer; a: Matrix; b: Vector; var x:Vector): Boolean;

Var

i, j, k, l: Integer;

q, m, t: Data;

Begin

For k := 1 to n - 1 do begin

{ Ищем строку l с максимальным элементом в k-ом столбце}

l := 0;

m := 0;

For i := k to n do

If Abs(a[i, k]) > m then begin

m := Abs(a[i, k]);

l := i;

end;

{ Если у всех строк от k до n элемент в k-м столбце нулевой,

то система не имеет однозначного решения }

If l = 0 then begin

Gauss := false;

Exit;

end;

{ Меняем местом l-ую строку с k-ой }

If l <> k then begin

For j := 1 to n do begin

t := a[k, j];

a[k, j] := a[l, j];

a[l, j] := t;

end;

t := b[k];

b[k] := b[l];

b[l] := t;

end;

{ Преобразуем матрицу }

For i := k + 1 to n do begin

q := a[i, k] / a[k, k];

For j := 1 to n do

If j = k then

a[i, j] := 0

else

a[i, j] := a[i, j] - q * a[k, j];

b[i] := b[i] - q * b[k];

end;

end;

{ Вычисляем решение }

x[n] := b[n] / a[n, n];

For i := n - 1 downto 1 do begin

t := 0;

For j := 1 to n-i do

t := t + a[i, i + j] * x[i + j];

x[i] := (1 / a[i, i]) * (b[i] - t);

end;

Gauss := true;

End;

Var

n, i: Integer;

a: Matrix ;

b, x: Vector;

Begin

ClrScr;

Writeln('Программа решения систем линейных уравнений по методу Гаусса');

Writeln;

Writeln('Введите порядок матрицы системы (макс. 10)');

Repeat

Write('>');

Read(n);

Until (n > 0) and (n <= maxn);

Writeln;

Writeln('Введите расширенную матрицу системы');

ReadSystem(n, a, b);

Writeln;

If Gauss(n, a, b, x) then begin

Writeln('Результат вычислений по методу Гаусса');

WriteX(n, x);

end

else

Writeln('Данную систему невозможно решить по методу Гаусса');

Writeln;

End.

Программа решения систем линейных уравнений по методу Гаусса

Введите порядок матрицы системы (макс. 10)

>4

Введите расширенную матрицу системы

A 1 2 3 4 b

1 3.2 5.4 4.2 2.2 2.6

2 2.1 3.2 3.1 1.1 4.8

3 1.2 0.4 -0.8 -0.8 3.6

4 4.7 10.4 9.7 9.7 -8.4

Результат вычислений по методу Гаусса

x1 = 5.0000000000E+00

x2 = -4.0000000000E+00

x3 = 3.0000000000E+00

x4 = -2.0000000000E+00

2.2 Программа решения систем линейных уравнений по методу Зейделя

2.2.1. Постановка задачи. Требуется решить систему линейных алгебраических уравнений с вещественными коэффициентами вида

a 11 x 1 + a 12 x 2 + … + a 1n xn = b 1 ,
a 21 x 2 + a 22 x 2 + … + a 2n xn = b 2 ,
. . . . . . . . . . . . .

an 1 x 1 + an 2 x 2 + … + ann xn = bn

для n ≤ 10 по методу Зейделя.

2.2.2. Тестовый пример.

4,1x 1 + 0,1x 2 + 0,2x 3 + 0,2x 4 = 21,14 ,

0,3x 1 + 5,3x 2 + 0,9x 3 – 0,1x 4 = – 17,82 ,

0,2x 1 + 0,3x 2 + 3,2x 3 + 0,2x 4 = 9,02 ,

0,1x 1 + 0,1x 2 + 0,2x 3 – 9,1x 4 = 17,08 ,

x 1 = 5,2, x 2 = –4,2, x 3 = 3, x 4 = –1,8.

2.2.3. Описание алгоритма. В переменную n вводится порядок матрицы системы, в переменную e – максимальная абсолютная погрешность. С помощью вспомогательной процедуры ReadSystem в двумерный массив a и одномерный массив b вводится c клавиатуры расширенная матрица системы. Начальное прибижение предполагается равным нулю. Оба массива и переменные n и e передаются функции Seidel . В функции Seidel исследуется сходимость системы, и в том случае если система не сходится, выполнение функции прекращается с результатом false . В ходе каждой итерации вычисляется новое приближение и и абсолютная погрешность. Когда полученная погрешность становится меньше заданной, выполнение функции прекращается. Полученное решение выводится на экран при помощи вспомогательной процедуры WriteX.

2.2.4. Листинг программы и результаты работы.

Uses CRT;

Const

maxn = 10;

Type

Data = Real;

Matrix = Array[1..maxn, 1..maxn] of Data;

Vector = Array[1..maxn] of Data;

{ Процедура ввода расширенной матрицы системы }

Procedure ReadSystem(n: Integer; var a: Matrix; var b: Vector);

Var

i, j, r: Integer;

Begin

r := WhereY;

GotoXY(2, r);

Write('A');

For i := 1 to n do begin

GotoXY(i * 6 + 2, r);

Write(i);

GotoXY(1, r + i + 1);

Write(i:2);

end;

GotoXY((n + 1) * 6 + 2, r);

Write('b');

For i := 1 to n do begin

For j := 1 to n do begin

GotoXY(j * 6 + 2, r + i + 1);

Read(a[i, j]);

end;

GotoXY((n + 1) * 6 + 2, r + i + 1);

Read(b[i]);

end;

End;

{ Процедура вывода результатов }

Procedure WriteX(n :Integer; x: Vector);

Var

i: Integer;

Begin

For i := 1 to n do

Writeln('x', i, ' = ', x[i]);

End;

{ Функция, реализующая метод Зейделя }

Function Seidel(n: Integer; a: Matrix; b: Vector; var x: Vector; e: Data) :Boolean;

Var

i, j: Integer;

s1, s2, s, v, m: Data;

Begin

{ Исследуем сходимость }

For i := 1 to n do begin

s := 0;

For j := 1 to n do

If j <> i then

s := s + Abs(a[i, j]);

If s >= Abs(a[i, i]) then begin

Seidel := false;

Exit;

end;

end;

Repeat

m := 0;

For i := 1 to n do begin

{ Вычисляем суммы }

s1 := 0;

s2 := 0;

For j := 1 to i - 1 do

s1 := s1 + a[i, j] * x[j];

For j := i to n do

s2 := s2 + a[i, j] * x[j];

{ Вычисляем новое приближение и погрешность }

v := x[i];

x[i] := x[i] - (1 / a[i, i]) * (s1 + s2 - b[i]);

If Abs(v - x[i]) > m then

m := Abs(v - x[i]);

end;

Until m < e;

Seidel := true;

End;

Var

n, i: Integer;

a: Matrix;

b, x: Vector;

e: Data;

Begin

ClrScr;

Writeln('Программа решения систем линейных уравнений по методу Зейделя');

Writeln;

Writeln('Введите порядок матрицы системы (макс. 10)');

Repeat

Write('>');

Read(n);

Until (n > 0) and (n <= maxn);

Writeln;

Writeln('Введите точность вычислений');

Repeat

Write('>');

Read(e);

Until (e > 0) and (e < 1);

Writeln;

Writeln('Введите расширенную матрицу системы');

ReadSystem(n, a, b);

Writeln;

{ Предполагаем начальное приближение равным нулю }

For i := 1 to n do

x[i] := 0;

If Seidel(n, a, b, x, e) then begin

Writeln('Результат вычислений по методу Зейделя');

WriteX(n, x);

end

else

Writeln('Метод Зейделя не сходится для данной системы');

Writeln;

End.

Программа решения систем линейных уравнений по методу Зейделя

Введите порядок матрицы системы (макс. 10)

>4

Введите точность вычислений

>.000001

Введите расширенную матрицу системы

A 1 2 3 4 b

1 4.1 0.1 0.2 0.2 21.14

2 0.3 5.3 0.9 -0.1 -17.82

3 0.2 0.3 3.2 0.2 9.02

4 0.1 0.1 0.2 -9.1 17.08

Результат вычислений по методу Зейделя

x1 = 5.2000000008E+00

x2 = -4.2000000028E+00

x3 = 3.0000000003E+00

x4 = -1.8000000000E+00

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита01:23:39 02 ноября 2021
.
.01:23:38 02 ноября 2021
.
.01:23:37 02 ноября 2021
.
.01:23:37 02 ноября 2021
.
.01:23:36 02 ноября 2021

Смотреть все комментарии (37)
Работы, похожие на Реферат: Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(294399)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте