ЛР Численные методы (Трухачев)
.pdfМинистерство образования и науки Российской Федерации Национальный исследовательский ядерный университет «МИФИ»
А.А. Трухачев
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
по курсу «ЧИСЛЕННЫЕ МЕТОДЫ»
Учебное пособие
Москва 2010
УДК |
519.6 (076.5) |
ББК |
22.19я7 |
Т |
80 |
Трухачев А.А. Лабораторный практикум по курсу «Численные методы»: Учебное пособие. М.: НИЯУ МИФИ, 2010. 88 с.
Предлагаемый практикум по курсу «Численные методы» содержит пять лабораторных работ, охватывающих пять тем второй части курса, читаемого в рамках осеннего и весеннего семестров.
Практикум полезен для освоения вычислительных методов, изучения их сходимости и оценки погрешностей, а также для получения навыков программирования этих методов с использованием современных языков программирования. Практикум проводится в классе персональных ЭВМ.
Предназначен для студентов, обучающихся на бакалавров или специалистов по специальности 0102 – « Прикладная математика и информатика», групп К6-361
и К7-369.
Предлагаемый практикум издается впервые и дополняет лабораторный практикум по курсу «Специальные вычислительные методы», используемый в рамках первой части курса.
Рецензент канд. техн. наук Юшкетов М.Г.
ISBN 978-5-7262-1344-6
© Национальный исследовательский ядерный университет «МИФИ», 2010
|
СОДЕРЖАНИЕ |
|
Работа 1. Прямые и итерационные методы решения систем |
|
|
линейных алгебраических уравнений................................................. |
4 |
|
Работа 2. |
Собственные значения и собственные вектора матриц.. |
18 |
Работа 3. Точечная квадратичная аппроксимация функций........... |
30 |
|
Работа 4. |
Методы численного дифференцирования функций........ |
35 |
Работа 5. |
Методы решения обыкновенных дифференциальных |
|
уравнений............................................................................................. |
44 |
|
Приложение......................................................................................... |
54 |
3
Работа 1
ПРЯМЫЕ И ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
Ц е л ь : изучение прямых и итерационных методов решения систем линейных алгебраических уравнений.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Методы решения систем линейных алгебраических уравнений (СЛАУ) являются одними из наиболее часто используемых: математические модели тех или иных явлений или процессов либо сразу строятся как линейные алгебраические, либо сводятся к таковым посредством дискретизации и (или) линеаризации.
Метод Гаусса
Данный метод хорошо известен и широко распространен. Изложим алгоритм Гаусса в матричных обозначениях, что проводит к так называемому LU-разложению обратной матрицы.
Пусть задана система
Ax=b, |
(1.1) |
где А – квадратная матрица коэффициентов системы, x – |
вектор- |
столбец неизвестных, b – вектор-столбец свободных членов. |
|
Обозначим матрицу коэффициентов системы после преобразований k-го шага A(k), k=1,2,…,n , полагая A(1)=A, причем матрица A(k) имеет нули ниже главной диагонали в первых k– 1 столбцах. Обозначим ek – k-й столбец единичной матрицы n-го порядка.
На k-м шаге процесса k-я строка матрицы A(k) делится на элемент akk( k ) , умножается на различные коэффициенты и вычитается
из всех последующих за ней строк так, чтобы ненулевые элементы k-го столбца, лежащие ниже k-й строки, становились нулями. Полученную в результате матрицу можно обозначить A(k+1). В матричных обозначениях этот процесс прямого гауссова исключения может быть записан следующим образом:
A(k +1) = L A(k ) |
k = 1,2,..., n , |
(1.2) |
k |
|
|
где элементарная нижняя треугольная матрица Lk задается в виде
4
Lk = In + (η (k ) - ek )× ekT ,
а элементы вектора-столбца η ( k ) , определяются следующим образом:
ηi(k ) = 0, |
|
|
|
еслиi < k; |
||
ηi(k ) = |
1 |
|
, |
|
еслиi = k; |
|
a(k ) |
|
|||||
|
|
|
|
|||
|
kk |
|
|
|
|
|
ηi(k ) = - |
aik(k ) |
, |
еслиi > k. |
|||
|
||||||
|
|
a |
(k ) |
|
|
|
|
|
|
kk |
|
|
Таким образом, диагональные элементы матрицы Lk равны единице во всех столбцах, кроме k-го, в котором элементы, лежащие
на диагонали и под ней, равны ηi( k ) (i=k, k+1, …, n ). Все остальные
элементы матрицы Lk равны нулю. Теперь из (1.2) получаем
A( n+1) = Ln ×... × L2 L1 A(1) .
Если положить L = Ln × ... × L2 L1 и учесть, что A(1)=A и A(n+1)=U (U – верхняя треугольная матрица), то получим
U = LA .
Умножая уравнение (1.1) на L1, L2, …, Ln приходим к выраже-
нию |
|
Ux=Lb. |
(1.3) |
Обратный ход метода Гаусса состоит в приведении верхней треугольной матрицы U к единичной In . Достигается это за счет последовательного умножения матрицы U слева на матрицу Uk (k=n, n-1, …, 2):
U 2 × ... ×U n−1U nU = I n , |
(1.4) |
|
где U k = In + ξ (k ) × ekT , k = n, n -1,...,2 , |
и элементы вектора-столбца |
|
ξ (k ) задаются в виде: |
|
|
ξi(k ) = -aik(k −1) , |
еслиi < k; |
|
ξi(k ) = 1, |
еслиi = k; |
|
ξi(k ) = 0, |
еслиi > k. |
|
5
Таким образом, все диагональные элементы матрицы Uk равны единице, а в k-м столбце все наддиагональные элементы принима-
ют значения ξi( k ) (i=1,2,…,k- 1). Все остальные элементы Uk явля-
ются нулями.
Теперь можно записать общий результат применения процессов прямого исключения и обратной подстановки к матрице A. Из уравнения (1.4) получим:
U −1 = U2 ×... ×Un−1Un .
А из (1.3) следует:
x = U −1Lb = U 2 × ... ×U n−1U n Ln Ln−1 ×... × L1b .
Чтобы уменьшить ошибки округления, а также сделать метод пригодным в случае, если на некотором шаге главный элемент akk( k )
оказывается равным нулю, предлагается две модификации метода Гаусса:
1. Метод Гаусса с частичным упорядочиванием.
На k-м шаге выбирают наибольший по абсолютной величине элемент k-го столбца матрицы A(k), расположенный в k-й строке или
ниже её: |
a( k ) |
= max |
a( k ) |
и переставляют местами s-ю и k-ю строки |
|
sk |
k ≤i≤n |
ik |
|
|
|
|
|
матрицы A(k) перед выполнением вычислений k-го шага.
2. Метод Гаусса с полным упорядочиванием.
На k-м шаге выбирают наибольший по абсолютной величине элемент, расположенный в последних (n–k+1 ) строках и столбцах
матрицы A(k): |
a( k ) |
= max |
a(k ) |
и переставляют местами s-ю и k-ю |
|
st |
k ≤i ≤n |
ij |
|
|
|
|
|
|
|
|
k ≤ j ≤n |
|
|
строки и t-й и k-й столбцы матрицы A(k) перед выполнением вычислений k-го шага. Эти перестановки строк и столбцов запоминаются для дальнейшего использования.
Метод квадратного корня
Объем вычислений можно значительно сократить, если учесть
симметрию матрицы A. Пусть матрица A = (aij )n |
– симметричная |
i, j=1 |
|
матрица, т.е. aij=aji. Будем строить её представление в виде
A = U TU , где
6
|
|
|
|
|
|
u11 |
u12 |
... |
|
u1n |
|
|
|
|
|
|
|
u11 |
|
|
0 |
... |
|
0 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U = |
|
0 |
|
u22 |
... |
|
u2n |
|
|
U |
T |
= |
u12 |
|
u22 |
... |
|
0 |
|
. |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
... |
... ... |
|
|
|
|
|
|
|
|
|
|
|
... |
|
... |
|
|
|||||||||||
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
... ... |
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
0 |
|
0 |
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
u2n |
... |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
unn |
|
|
|
|
|
u1n |
|
|
unn |
|
|
||||||||||||||||
Составим систему |
n(n − 1) |
|
уравнений относительно такого же |
|||||||||||||||||||||||||||||||||
|
2 |
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
количества неизвестных элементов матрицы U: |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
u2 |
= a |
, |
u u |
= a |
|
, |
|
|
... , |
u u |
= a |
|
; |
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
11 |
11 |
|
11 |
12 |
|
12 |
|
|
|
|
|
11 nn |
|
1n |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
u2 |
+ u2 |
= a |
22 |
, |
... , |
|
|
u |
u |
|
+ u |
u |
2n |
= a |
|
; |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
12 |
22 |
|
|
|
|
|
|
|
|
|
12 1n |
22 |
|
|
|
2n |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u2 |
+ u2 |
+ ... + u2 |
|
= a |
nn |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
1n |
2n |
|
|
|
nn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Из первой строки уравнений находим сначала u11 = |
|
, |
затем |
|||||||||||||||||||||||||||||||||
a11 |
||||||||||||||||||||||||||||||||||||
|
= |
a1 j |
|
|
|
|
|
|
|
|
|
|
|
|
= |
|
|
|
|
|
|
|
||||||||||||||
u |
|
при |
|
j=2,…,n . |
|
Из |
|
второй |
|
– |
u |
|
|
a |
− u2 |
, |
|
|
затем |
|||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
1 j |
|
u11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
|
22 |
|
12 |
|
|
|
|
|||||
|
|
− u12u1 j |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
u2 j |
= |
a2 j |
при j=3,…,n |
, |
и так далее. Завершается процесс |
|||||||||||||||||||||||||||||||
|
u22 |
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n−1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
вычислением unn = |
ann − ∑ukn2 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
k =1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таким образом, матрица U может быть определена совокупностью формул:
|
|
|
i −1 |
|
|
|
uii |
= aii − ∑uki2 |
при i=1, 2, …, n ; |
(1.5) |
|||
|
|
|
k =1 |
|
|
|
|
|
|
i −1 |
|
|
|
|
|
aij − ∑uki ukj |
|
|
||
uij |
= |
|
k =1 |
при j=2,…,n ; j>i |
(uij=0 при j<i). |
|
|
uii |
|||||
|
|
|
|
|
Для важного в приложениях класса симметричных положительно определенных матриц разложение по формулам (1.5) выполнимо.
7
При наличии UTU-разложения решение симметричной системы Ax=b сводится к последовательному решению двух треугольных систем:
|
|
UTy=b |
|
|
|
|
|
|
|
|
|
и |
|
|
|
|
Ux=y. |
||
Первая из них имеет вид |
|
|
|
|
|
|
|
|
|
|
= b1 ; |
||||||||
|
|
|
u11 y1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
u |
y + u |
22 |
|
y |
2 |
|
|
|
|
|
= b ; |
|||||
|
|
|
|
12 |
1 |
|
|
|
|
|
|
|
|
|
|
|
2 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
y + u |
|
|
|
|
|
+ ... + u |
|
|
|
|
... |
||||
|
|
|
u |
2n |
y |
2 |
nn |
y |
n |
= b , |
|||||||||
|
|
|
|
1n |
1 |
|
|
|
|
|
|
|
|
n |
|||||
откуда вспомогательные переменные y1, y2, |
…, yn получаются по |
||||||||||||||||||
|
|
|
i −1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bi |
− ∑uki yk |
|
|
|
|
|
|
|
|
|
|
|
|||||
формуле yi = |
|
k =1 |
|
|
|
|
, полагая в ней i=1, 2, …, n . |
||||||||||||
|
uii |
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Из второй системы |
|
+ u |
|
|
|
|
|
+ ... + u |
|
|
|
|
= y ; |
||||||
|
|
|
u |
x |
|
x |
2 |
|
x |
n |
|||||||||
|
|
|
|
11 |
1 |
12 |
|
|
1n |
|
1 |
||||||||
|
|
|
|
|
|
|
|
u22 x2 |
|
+ ... + u2n xn |
= y2 ; |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
... |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unn xn |
= yn , |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
находим значения xi |
в обратном порядке, т.е. при i=n, n-1,…, 1 по |
||||||||||||||||||
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yi |
− ∑uik xk |
|
|
|
|
|
|
|
|
|
|
|
|||||
формуле xi = |
|
k =i +1 |
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
uii |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Первый метод ортогонализации
Пусть Ax=b – система линейных уравнений с положительно определенной симметричной матрицей. Скалярное произведение
произвольных |
векторов |
с |
и d обычно задается в виде |
n |
|
|
|
(c, d ) = ∑ci di , |
где ci и di |
– |
компоненты соответствующих векто- |
i=1 |
|
|
|
ров. Определим ещё одно произведение векторов с и d:
8
n |
n |
|
[c, d ]A = (c, Ad ) = ∑∑aij ci d j . |
(1.6) |
|
i =1 |
j =1 |
|
Свойства матрицы A позволяют утверждать, что произведение, определенное равенством (1.6), обладает всеми свойствами скалярного произведения. Если [c, d ]A = 0 , будем говорить, что векторы
A-ортогональны. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Пусть система векторов f1,…,f |
|
n A-ортогональна, т.е. для любых |
||||||||||||||||||||||
i ¹ j |
[fi , f j ] |
= 0 . Можно видеть, |
что в данном случае f1,…,f n об- |
|||||||||||||||||||||
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
разуют базис. Будем искать решение в виде |
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x = ∑c j f j |
, |
|
|
|
|
|
|
(1.7) |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j =1 |
|
|
|
|
|
|
|
|
|
|
где cj – |
неизвестные коэффициенты. |
|
|
|
|
|
|
|
|
|||||||||||||||
Подставив это выражение в уравнение системы, получим |
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A∑c j f j = ∑c j Af j = b . |
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
j =1 |
|
|
|
|
j =1 |
|
|
|
|
|
|
|
|
||
Умножив последнее равенство скалярно на fk, получим |
|
|||||||||||||||||||||||
|
n c |
j |
(Af |
j |
, f |
k |
)= |
|
n c |
j |
[f |
j |
, f |
] = c |
k |
[ f |
k |
, f |
] = (b, f |
k |
) . |
|||
|
∑ |
|
|
|
∑ |
|
|
|
k A |
|
|
|
k A |
|
||||||||||
|
j =1 |
|
|
|
|
|
|
|
j =1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Откуда |
|
|
|
|
|
|
|
|
(b, f k |
) |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
ck |
= |
|
, |
k=1,…,n . |
|
|
|||||||||||||
|
|
|
|
|
|
[ f k , f k |
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
]A |
|
|
|
|
|
|
|
|
|
Зная ck, из выражения (1.7) можно получить искомое решение. Построение A-ортогональной системы векторов f1, …, f n обычно проводят на системе e1, …, e n векторов-столбцов единичной матрицы.
Процедура ортогонализации Грама– Шмидта произвольной линей-
но независимой системы векторов
Пусть e1, …, e n – произвольная линейно независимая система векторов евклидова пространства Rn; (ei, ej) – означает скалярное произведение векторов. Требуется построить ортогональную по
9
заданному скалярному произведению систему векторов f1, …, f n, т.е. если i ¹ j .
Первый вектор ортогональной системы можно выбрать произвольно, поэтому положим f1=e1.
Вектор f2 будем искать в следующем виде: f2 = e2 + α21e1 . Коэффициент α21 выбирается из условия (f2, f1)=0 или (e2 + α21 f1 , f1 ) = (e2 , f1 ) + α21 ( f1 , f1 ) = 0 . Таким образом,
α21 = - |
(e2 , f1 ) |
. |
|
|
|
|
|
|
|
|
|
||
|
( f1, f1 ) |
|
|
|
||
Для любого k ≤ n вектор fk будем искать в виде |
|
|||||
|
|
k −1 |
|
|
|
|
fk = ek + ∑αkj × f j , |
(1.8) |
|||||
|
|
j =1 |
|
|
|
|
а неизвестные коэффициенты |
αkj |
|
находятся |
из условий |
||
( f k , f l ) = 0, l = 1,..., k -1. |
|
|
|
|
|
|
Поскольку ранее построенные векторы f1,f2,…,f k-1 |
ортогональны, |
|||||
то справедливо равенство: |
|
|
|
|
|
|
( fk , fl ) = (ek , fl ) + αkl ( fl , fl ) = 0; |
|
|||||
αkl = - |
(ek , fl ) |
. |
|
|||
|
|
|||||
|
|
( fl , fl |
) |
|
|
Из независимости системы e1, …, e n следует, что описанный выше процесс ортогонализации выполним, т.е. при любом 1 ≤ k ≤ n вектор f k ¹ 0 .
Второй метод ортогонализации
Пусть A – произвольная невырожденная матрица СЛАУ. Это означает, что система вектор-строк этой матрицы линейно независима. Эту систему векторов можно ортогонализировать по обычному скалярному произведению, т.е. построить новую систему век-
~T |
}, |
обладающую свойством |
~ |
~ |
)= 0, |
еслиi ¹ j . |
тор-строк {ai |
(ai |
, a j |
Допустим, что из системы строк {aiT } матрицы A необходимо полу-
~T |
~T |
T |
T |
}, у которой |
чить частично ортогональную систему {a1 |
, a2 |
, a3 |
,..., an |
первые два вектора ортогональны, а остальные совпадают с соот-
10