Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab Pract CHislennye Medody.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.28 Mб
Скачать

Лабораторная работа №3

Решение систем линейных алгебраических уравнений

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

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

Схема единственного деления.

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

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

Найдем величиныqi1 = ai1/a11 (i = 2, 3, …, n), вычтем последовательно из второго, третьего, …, n-го уравнений системы первое уравнение, умноженное соответственно на q21, q31, …, qn1. Это позволит обратить в нуль коэффициенты при x1 во всех уравнениях, кроме первого. В результате получим эквивалентную систему

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

bi(1) = bi−qi1b1.

2-й шаг. Целью этого шага является исключение неизвестного x2 из уравнений с номерами i = 3, 4, …, n. Пусть a22(1) ≠ 0. Вычислим множители 2-го шага qi2 = ai2(1) / a22(1) (i = 3, 4, …, n)и вычтем последовательно из третьего, четвертого, …, n-го уравнения системы второе уравнение, умноженное соответственно на q32, q42, …, qm2. В результате получим систему, коэффициенты aij(2) и bij(2) которой вычисляются по формулам aij(2) = aij(1)–qi2a2j(1), bi(2) = bi(1)–qi2b2(1) (9).Аналогично проводятся остальные шаги.

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

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) (10).

Если один из главных элементов оказывается равен или близок к нулю, то схема единственного деления не может быть реализована.

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

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

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

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

Метод Зейделя. Приведение системы к виду, удобному для итераций. Для того чтобы применить метод Зейделя к решению системы линейных алгебраических уравнений Ax = b с квадратной невырожденной матрицей A, необходимо предварительно преобразовать эту систему к виду:

x = Bx + c (11).

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

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

Описание метода. Введем нижнюю и верхнюю треугольные матрицы B1 и B2. Заметим, что B = B1 + B2 и поэтому решение x исходной системы удовлетворяет равенству x = B1x + B2 x + c .

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

Подставляя приближение x(1), получим x(2) = B1x(1) + B2x(2).Продолжая этот процесс далее, получим последовательность x(0), x(1), …, x(n), … приближений к вычисляемых по формуле x(k+1) = B1(k+1) + B2(k) + c.

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

xi(k+1) = xi(k) – aii–1(∑j=1i–1 aijxj(k+1) + ∑j=1n aijxi(k) – bi) (12).

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

j=1, j≠i n | a­ij | < | a­ii | (13).

Алгоритм решения систем линейных уравнений.

Метод Гаусса по схеме единственного деления.

Задача. Решить систему уравнений по схеме единственного деления:

Решение осуществим с помощью формул (9) и (10):

Результат:

Решение системы: x1=2,293021, x2=-4,81552, x3=0,967185.

Схема полного деления.

Задача. Решить систему уравнений по схеме полного деления:

Решение:

Результат:

Решение системы: x1=2,2930206,x2=-4,815522134,x3=0,967184874.

Методом Зейделя

Задача. Решить систему уравнений методом Зейделя:

Решение. Воспользуемся формулами (11), (12) и (13):

Результат:

Решение системы: x1≈2,232388,x2≈-4,84794,x3≈0,969745.

Решение достигается более чем за 14 итераций, т.е. трудоемко и занимает много времени.

Задача. Решить методом итераций СЛАУ, оценив предварительно гарантированное количество итераций. Точность 0,001

Решение.

Для применения метода итераций с заданной точностью ε применим оценку

,

где А константа из формул критерия сходимости итерационного процесса

F-мах[|b1|,|b2|,|b3|]

Рассчитаем А по формуле |А|3=

Значит, система имеет итерационный вид, т.е. можно построить последовательность решений по правой части исходной системы.

Если модуль |А|>1, то следует проверить формулу 4,5

Если формулы 3-5 не выполняются система не имеет итерационный вид, значит, метод итераций не применим, следует преобразовать исходную систему.

Вычислим |F|

|F|={2,15;0,83,1,16;0,44}=2,15=b1

Рассчитаем значение k (число итераций) с учётом точности ε=0,001

Заменим переменные их значениями

решим неравенство логарифмированием неравенства

lg(0,61k+1)-lg(0,39)+lg(2,15)<lg10-3

(k+1)*lg(0,61)<lg(0,39)+3-lg(2,15)

k=k-1 k>17,5-1, к>17

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

Алгоритм решения системы линейных уравнений в TMTPascal:

  1. Метод итераций. Предварительно система должна быть приведена к итерационному виду.

program Iter_sys;

const

a11=0.24; a12=0.21; a13=0.06; a14=-0.34;

a21=0.05; a22=0; a23=0.32; a24=0.12;

a31=0.35; a32=-0.27; a33=0; a34=-0.05;

a41=0.12; a42=-0.43; a43=0.34; a44=-0.21;

b1=1.42; b2=-0.57; b3=0.68; b4=-2.14;

var

x1,x2,x3,x4:real;

xx1,xx2,xx3,xx4:real;

i:integer;

begin

x1:=b1; x2:=b2; x3:=b3; x4:=b4;

for i:=1 to 104 do

begin

xx1:=a11*x1+a12*x2+a13*x3+a14*x4+b1;

xx2:=a21*x1+a22*x2+a23*x3+a24*x4+b2;

xx3:=a31*x1+a32*x2+a33*x3+a34*x4+b3;

xx4:=a41*x1+a42*x2+a43*x3+a44*x4+b4;

writeln(xx1:6:3, xx2:6:3, xx3:6:3, xx4:6:3);

x1:=xx1;

x2:=xx2;

x3:=XX3;

X4:=XX4;

END;

READLN;

END.

Результат:

2) Метод Зейделя. Предварительно система должна быть приведена к специальному виду:

program Zeydel_sys;

const

a11=0; a12=-0.949; a13=-0.511;

a21=-1.034; a22=0; a23=0.417;

a31=-0.533; a32=0.399; a33=0;

b1=0.2173; b2=-1.252; b3=-1.705;

var

x1,x2,x3:real;

xx1,xx2,xx3:real;

i:integer;

begin

x1:=b1; x2:=b2; x3:=b3;

for i:=1 to 30 do

begin

xx1:=-a12*x2-a13*x3+b1;

x1:=xx1;

xx2:=-a21*x1-a23*x3+b2;

x2:=xx2;

xx3:=-a31*x1-a32*x2+b3;

x3:=XX3;

writeln(xx1:6:3, xx2:6:3, xx3:6:3);

END;

READLN;

END.

Результат:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]