- •Содержание
- •Лабораторная работа № 1 Теория погрешностей и машинная арифметика Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы к защите лабораторной работы №2 «Решение нелинейных уравнений».
- •Лабораторная работа №3
- •Решение систем линейных алгебраических уравнений
- •Теоретическая часть
- •Практическая часть
- •Вопросы к защите лабораторной работы №3 «Решение систем линейных алгебраических уравнений»
- •Лабораторная работа № 4 Приближение функций. Численное дифференцирование Теоретическая часть
- •Практическая часть
- •Практическая часть
- •Практическая часть
- •Вопросы к защите лабораторной работы № 6 «Численное решение задачи Коши»
- •Список литературы
- •Научно-методическое издание численные методы
- •430007, Г. Саранск, ул. Студенческая, 11а
Лабораторная работа №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 | aij | < | aii | (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:
Метод итераций. Предварительно система должна быть приведена к итерационному виду.
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.
Результат:
