Вы находитесь на странице: 1из 4

Санкт-Петербургский политехнический университет Петра Великого

Институт прикладной математики и механики


Кафедра прикладной математики

Л АБ О РАТ О РН АЯ РАБ О Т А №2

Решение СЛАУ методом Гаусса и его модификациями


(Схема Жордана ; Метод квадратный корней)
По дисциплине «Реализация численных методов»

Выполнила
студент гр. 23631/1 ____________ Л.М. Панзу

Руководитель
Доцент, к.ф.-м.н. ____________ В.В Курц

Санкт-Петербург
2018 год
1. Формулировка задачи
Написать функцию, реализующую решение СЛАУ методом Гаусса с выбором
ведущего элемента по столбцу и по строке. Проверить вычислительную ошибку для
матриц с разными числами обусловленности. Тестовые матрицы строить в Matlab,
используя соответствующие преобразования. Исследовать вектор-невязку.

2. Алгоритм метода и условия его применимости


Рассмотри систему (1):
𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1
𝑎21 𝑥1 + 𝑎22 𝑥2 + ⋯ + 𝑎2𝑛 𝑥𝑛 = 𝑏2
{

𝑎𝑛1 𝑥1 + 𝑎𝑛2 𝑥2 + ⋯ + 𝑎𝑛𝑛 𝑥𝑛 = 𝑏𝑛
𝑎11 𝑎12 … 𝑎1𝑛 𝑏1 𝑥1
𝑎21 𝑎22 … 𝑎2𝑛 𝑏2 𝑥2
Обозначим: 𝐴 = ( ⋮ ⋮ … ⋮ ), 𝐵 = ( ⋮ ), 𝑋 = ( ⋮ ).
𝑎𝑛1 𝑎𝑛2 … 𝑎𝑛𝑛 𝑏𝑛 𝑥𝑛
Тогда СЛАУ можно записать в виде A*X = B.
𝑎11 𝑎12 ⋯ 𝑎1𝑛 | 𝑏1
𝑎21 𝑎22 ⋯ 𝑎2𝑛 | 𝑏2
Для метода Гаусса рассмотрим матрицу (A | B) = ( ).
⋮ ⋮ ⋯ ⋮ | ⋮
𝑎𝑛1 𝑎𝑛2 ⋯ 𝑎𝑛𝑛 | 𝑏𝑛
1) Прямой ход метода Гаусса: данную матрицу (A | B) требуется привести к
треугольному виду с помощью элементарных преобразований над строками и
столбцами матриц (умножение строки на число; прибавление к одной строке
другой, умноженной на какое-то число, отличное от нуля). В результате данная
′ ′
1 𝑎12 ⋯ 𝑎1𝑛 | 𝑏1′

0 1 ⋯ 𝑎2𝑛 | 𝑏2′
матрица приводится к виду ( ).
⋮ ⋮ ⋯ ⋮ | ⋮
0 0 ⋯ 1 | 𝑏𝑛′
2) Обратный ход метода Гаусса: с помощью тех же элементарных преобразований
над строками и столбцами матриц, матрицу, получившуюся в результате
1 0 ⋯ 0 | 𝑏1′′
0 1 ⋯ 0 | 𝑏2′′
прямого ходам метода Гаусса, приводят к виду ( ).
⋮ ⋮ ⋯ ⋮ | ⋮
0 0 ⋯ 1 | 𝑏𝑛′′
𝑥1 𝑏1′′
𝑥2 𝑏 ′′
3) Тогда очевидно, что решением СЛАУ будет ( ⋮ ) = ( 2 ).

𝑥𝑛 𝑏𝑛′′
Пусть n – это размер матрицы А. Нумерация строк начинается с 0.
Реализованный мною алгоритм кратко можно записать так:
 (Цикл по i) Проход по всем строкам матрицы.
o Поиск главного элемента по всей матрице, перестановка строк и
столбцов, если требуется.
o (Цикл) Деление всех элементов i-той строчки на 𝑎𝑖𝑖 (найденный
главный элемент).
o (Цикл по j) Проход по всем строкам, ниже i-той.
 (Цикл) Проход по всем столбцам j-той строчки. Прибавляем к
j-той строчке i-тую, умноженную на −𝑎𝑗𝑖 .
 (Цикл по i) Проход по всем строкам матрицы. i-тый ответ = 𝑏𝑖 .
 (Цикл по i) Проход снизу по всем строкам, кроме самой последней.
o (Цикл по j) Проход по стобцам i+1, …, n – 1 i-той строчки. i-тый
ответ = i-тый ответ – j-тый ответ * 𝑎𝑖𝑗 .
 (Цикл) Расстановка корней в правильном порядке.
СЛАУ имеет единственное решение тогда, когда ранг матрицы, соответствующей
СЛАУ, равен числу неизвестных и если определитель этой матрицы не равен 0.

3. Исследование обусловленности СЛАУ


3.1. Матричная норма. Общие сведения.
Матричная норма ‖𝐴‖𝑀 – это действительное неотрицательное число,
‖𝐴∗𝑋‖
определяющееся как ‖𝐴‖𝑀 = 𝑠𝑢𝑝 ‖𝑋‖ 𝑉.
𝑉
Матричная норма ‖𝐴‖𝑀 называется подчинённой векторной норме ‖𝑋‖𝑉 , если
‖𝐴∗𝑋‖
выполняется соотношение ‖𝐴‖𝑀 = 𝑠𝑢𝑝 ‖𝑋‖ 𝑉.
𝑉
Матричная норма ‖𝐴‖𝑀 называется согласованной с векторной нормой ‖𝑋‖𝑉 , если
выполняется соотношение ‖𝐴 ∗ 𝑋‖𝑉 ≤ ‖𝐴‖𝑀 ∗ ‖𝑋‖𝑉 .
Если норма ‖𝐴‖𝑀 , подчинена какой-то векторной норме ‖𝑋‖𝑉 , то она с ней
согласована.
Матричная норма ‖𝐴‖𝑀 называется субмультипликативной, если выполняется
соотношение ‖𝐴 ∗ 𝐵‖𝑀 ≤ ‖𝐴‖𝑀 ∗ ‖𝐵‖𝑀 .
3.2. Евклидова матричная норма.
Рассмотри Евклидову норму.
Для векторной нормы определение: ‖𝑋‖𝑒 = √(𝑋 ∗ 𝑋) = √∑𝑁 2
𝑖=1 𝑥𝑖 .
Воспользуемся связью между евклидовой нормой вектора и скалярным
произведением ‖𝑋‖2𝑒 = (𝑋, 𝑋), а также тем свойством, что ортогональные матрицы 𝑈 −1 =
𝑈 𝑇 сохраняют скалярное произведение (𝑈𝑋, 𝑈𝑋) = (𝑋, 𝑋). Представим матрицу A в виде
𝐴 = 𝑈𝐷𝑉 𝑇 , где 𝑈𝑈 𝑇 = 𝑉𝑉 𝑇 = 𝐸 и 𝐷 = 𝑑𝑖𝑎𝑔(𝜎1 , … , 𝜎𝑛 ), то есть осуществим её сингулярное
разложение. Подставим сингулярное разложение 𝐴 = 𝑈𝐷𝑉 𝑇 в определение подчиненной
евклидовой нормы (для удобства возведём в квадрат):
2
(𝐴𝑋, 𝐴𝑋) (𝑈𝐷𝑉 𝑇 𝑋, 𝑈𝐷𝑉 𝑇 𝑋) (𝐷𝑍, 𝐷𝑍)
‖𝐴‖𝑒 = 𝑠𝑢𝑝 = 𝑠𝑢𝑝 = 𝑠𝑢𝑝
(𝑋, 𝑋) (𝑉 𝑇 𝑋, 𝑉 𝑇 𝑋) (𝑍, 𝑍)
Евклидова норма матрицы равна евклидовой норме диагональной матрицы из её
(𝐷𝑍,𝐷𝑍) 2
сингулярных чисел D. 𝑠𝑢𝑝 (𝑍,𝑍)
= 𝜎𝑚𝑎𝑥 и достигается на векторе 𝑧0 =
𝑇
(0, … , 0, 1, 0, … , 0) , где единица стоит на 𝑗0 месте, где это номер максимального
сингулярного числа матрицы A.
Матричная Евклидова норма, соответствующая векторной Евклидовой,
определяется как её максимальное сингулярное число. Для симметричных матриц
сингулярные числа совпадают с модулями собственных чисел, а сингулярные вектора
совпадают с собственными векторами.
3.3. Обусловленность матрицы СЛАУ.
Пусть дана СЛАУ A* x = b. x – точное решение этой СЛАУ.
Пусть правая часть получила приращение b + δb ⇒ A* x = b + δb. Тогда 𝑥̃ –
решение получившейся СЛАУ. δx=𝑥̃ – x.
𝐴 ∗ 𝑥 = 𝑏 ⇒ 𝐴 ∗ (𝑥 + 𝛿𝑥) = 𝐴 ∗ (𝑏 + 𝛿𝑏) ⇒ 𝐴 ∗ 𝛿𝑥 = 𝛿𝑏, т.к. A* x = b ⇒
𝛿𝑥 = 𝐴−1 ∗ 𝛿𝑏.
‖𝛿𝑥‖ ≤ ‖𝐴−1 ‖ ∗ ‖𝛿𝑏‖ ⇒ ‖𝑥‖ ≤ ‖𝐴−1 ‖ ∗ ‖𝑏‖ ⇒ ‖𝑏‖ ≤ ‖𝐴‖ ∗ ‖𝑥‖ ⇒
‖𝛿𝑥‖ ∗ ‖𝑏‖ ≤ ‖𝐴−1 ‖ ∗ ‖𝛿𝑏‖ ∗ ‖𝐴‖ ∗ ‖𝑥‖ ⇒
‖𝛿𝑥‖ ‖𝛿𝑏‖
≤ ‖𝐴‖ ∗ ‖𝐴−1 ‖
‖𝑥‖ ‖𝑏‖
‖𝛿𝑥‖
‖𝑥‖
называют относительной погрешностью решения.
‖𝛿𝑏‖
‖𝑏‖
называют относительной погрешностью правой части.
‖𝐴‖ ∗ ‖𝐴−1 ‖ = cond(A) называют числом обусловленности матрицы А. Если оно
велико, то система считается плохо обусловленной и при малой погрешности правой
части может получиться большая погрешность решения. cond(A) ≥ 1. Если cond(A) ≥ 103,
то говорят, что матрица А плохо обусловлена. Если 1 ≤ cond(A) ≤ 100, то матрица
считается хорошо обусловленной.

Проделаем следующую процедуру для разных чисел обусловленности и матрицы


Гильберта:
1. Генерируем матрицу A с заданным числом обусловленности.
2. Генерируем правую часть СЛАУ b.
3. Находим решение x = A \ b.
4. Вносим рандомное изменение b + δb.
5. Находим решение x̃ = A \ (b + δb).
6. Вычисляем 2 норму.
7. Проверяем неравенство.
3.4. Хорошо обусловленная матрица.

Вычисление норм даёт следующий результат:

Видно, что если по второй норме число обусловленности равно 1, то достигается


точное равенство. В остальных случаях получаем верные неравенства.

Оценить