Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР Численные методы (Трухачев)

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
482.29 Кб
Скачать

Министерство образования и науки Российской Федерации Национальный исследовательский ядерный университет «МИФИ»

А.А. Трухачев

ЛАБОРАТОРНЫЙ ПРАКТИКУМ

по курсу «ЧИСЛЕННЫЕ МЕТОДЫ»

Учебное пособие

Москва 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 in

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ac 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

(fi , f j ) = 0,

заданному скалярному произведению систему векторов 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

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