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

Содержание

Введение 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- го уравнений системы 1-ое уравнение, умноженное соответственно на 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 )

и вычтем поочередно из третьего, 4-ого, …, n- го уравнения системы 2-ое уравнение, умноженное соответственно на 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 . 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 1 – a 12 x 2 – a 13 x Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя - реферат 3 – … – a 1n xn ),

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

x 2 = a 21 –1 (b 2 – a 22 x 2 – a 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 и вычисляя приобретенное выражение, находим 1-ое приближение

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 | a­ij | < | a­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 Абс(a[i, k]) > m then begin

m := Абс(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

x Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя - реферат4 = -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 + Абс(a[i, j]);

If s >= Абс(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 + s Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя - реферат2 - b[i]);

If Абс(v - x[i]) > m then

m := Абс(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


reshenie-soveshaniya-kontrolno-schetnih-organov-subektov-rossijskoj-federacii-vhodya-stranica-5.html
reshenie-soveshaniya-kontrolno-schetnih-organov-subektov-rossijskoj-federacii-vhodya.html
reshenie-soveta-deputatov-gorodskogo-poseleniya-rabochij-poselok-chegdomin-stranica-16.html