31
Анализ комбинаторных алгоритмов Лекция № 14 Матрицы.

Лекция 14 Матрицы

Embed Size (px)

Citation preview

Page 1: Лекция 14 Матрицы

Анализ комбинаторных алгоритмов

Лекция № 14Матрицы.

Page 2: Лекция 14 Матрицы

Матрицы и векторы

Матрицей называется прямоугольная таблица чисел:

При транспонировании матрицы ее строки становятся столбцами и наоборот

654321

232221

131211

aaaaaa

A

635241

2313

2212

2111

aaaaaa

AT

Page 3: Лекция 14 Матрицы

Матрицы и векторы

Вектором называется одномерный массив чисел.

Стандартной формой вектора принято считать вектор-столбец. При его транспонировании получается вектор-строка.

Вектор i элемент которого равен 1, а остальные равны 0 называют единичным вектором и обозначают ei

Page 4: Лекция 14 Матрицы

Матрицы и векторы

На практике часто встречаются квадратные матрицы – размером nxn.

Выделяют ряд видов квадратных матриц:Диагональная матрица – все элементы,

кроме диагональных равны 0, поэтому часто задается вектором диагональных элементов.

Симметрическая матрица удовлетворяет условию A = AT

Page 5: Лекция 14 Матрицы

Матрицы и векторы

Единичная матрица (In) – это диагональная матрица диагональ которой заполнена единицами

У верхнетреугольной матрицы элемен-ты под главной диагональю равны нулю.

У нижнетреугольной матрицы элементы над главной диагональю равны нулю.

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

Page 6: Лекция 14 Матрицы

Операции над матрицами

Сумма матриц определяется как матрица с элементами равными сумме соответствующих элементов складываемых матриц:

cij = aij+bij

Матрицу с элементами a’ij=-aij называют противоположной A матрицей

Вычитание матрицы B из A определяется как сумма А и матрицы противоположной B.

Page 7: Лекция 14 Матрицы

Операции над матрицами

Умножение матриц осуществимо, если они имеют согласованные размеры, т.е. С = AB, только если число столбцов A совпадает с числом строк в B.

Если A – m x n матрица, B – n x p матрица, то С = AB – m x p матрица с элементами:

n

jjkijik bac

1

Page 8: Лекция 14 Матрицы

Операции над матрицами

Для любых A B C согласованных размеров верны утверждения:A(BC) = (AB)CA(B+C) = AB + AC(A+B)C = AC + BC

При умножении матрицы на единичную согласованного размера, получается сама матрица: AIn= ImA=A

Page 9: Лекция 14 Матрицы

Операции над матрицами

Матрицей обратной к A (n x n) называется A-1, такая что A A-1 = In

Многие матрицы не имеют обратных – они называются необратимыми или вырожденными.

Если обратная матрица существует, то она только одна.

Page 10: Лекция 14 Матрицы

Операции над матрицами

Говорят, что векторы x1,x2,…xn линейно зависимы, если найдется набор коэффициентов с1,c2,…cn, не все из которых равны нулю, для которого c1x1 + c2x2 +… cnxn = 0

Векторы не являющиеся линейно зависимыми называют линейно независимыми.

Page 11: Лекция 14 Матрицы

Операции над матрицами

Столбцевым рангом ненулевой матрицы называется наибольшее число линейно независимых столбцов

Строчным рангом ненулевой матрицы называется наибольшее число линейно независимых строк

Если строчный и столбцевой ранги совпадают их значение называют просто рангом матрицы.

Page 12: Лекция 14 Матрицы

Операции над матрицамиРангом матрицы A (n x m) называется

наименьшее число r, для которого найдутся матрицы B (n x r) и C (r x m), такие что A = BC

Квадратная матрица (n x n) с рангом n называется матрицей полного ранга.

ТеоремаКвадратная матрица имеет полный ранг, тогда и только тогда, когда невырождена.

Page 13: Лекция 14 Матрицы

Операции над матрицами

Минором элемента aij называется матрица A[i,j] (n-1 x m-1), полученная вычеркиванием i строки и j столбца.

Определитель матрицы задается следующей формулой:

1 ),det(...)det()det(1 ,

)det(],1[1]2,1[12]1,1[11

11

nеслиAaAaAa

nеслиaA

nn

Page 14: Лекция 14 Матрицы

Операции над матрицами

Определитель обладает следующими свойствами: Если в какой-либо строке или столбце матрице

стоят одни нули, то определитель равен 0 Если умножить элементы матрицы на некоторое

число, то определитель умножится на это число Если добавить к элементам строки, элементы

другой строки определитель не изменится (аналогично для столбцов)

Определители A и AT равны При перестановке строк или столбцов опреде-

литель меняет знак.

Page 15: Лекция 14 Матрицы

Операции над матрицами

Если A и B квадратные матрицы одинакового размера, то верно что det(AB) = det(A) det(B)

ТеоремаКвадратная матрица A вырождена тогда и только тогда, когда det(A) = 0.

Page 16: Лекция 14 Матрицы

Алгоритм Штрассена

Алгоритм Штрассена умножает две (n x n) матрицы за время nlog7=n2.81

Алгоритм Штрассена действует по принципу «разделяй и властвуй»

hfge

dcba

utsr

Page 17: Лекция 14 Матрицы

Алгоритм Штрассена

Каждая матрица A, B, C разбивается на 4 блока (cм. рис.)

Вычисляются 14 матриц (n/2 x n/2): A1 = a B1 = g - h A2 = a + b B2 = h A3 = c + d B3 = e A4 = d B4 = f - e A5 = a + d B5 = e + h A6 = b - d B6 = f + h A7 = a - c B7 = e + g

Page 18: Лекция 14 Матрицы

Алгоритм Штрассена

Рекурсивно вычисляются 7 матриц P:Pi = Ai Bi

Вычисляются четыре блока результирую-щей матрицы:

r = P5+P4-P2+P6u = P5+P1-P3-P7s = P1+P2t = P3+P4

Page 19: Лекция 14 Матрицы

Системы линейных уравнений

Система линейных уравнений

может быть записана в матричном виде

nnnnnn

nn

nn

bxaxaxa

bxaxaxabxaxaxa

............

2211

22222121

11212111

nnnnnn

n

n

b

bb

x

xx

aaa

aaaaaa

.........

..................

2

1

2

1

21

22221

11211

Page 20: Лекция 14 Матрицы

Системы линейных уравнений

Если матрица A невырождена, то найдется обратная матрица A-1 и вектор x = A-1B будет являться решением.

Если ранг матрицы меньше числа переменных система называется недоопределенной.

Если число уравнений больше числа переменных – переопределенной.

Page 21: Лекция 14 Матрицы

Системы линейных уравнений

Приведенный метод часто сталки-вается с проблемой вычислительной неустойчивости: вещественные числа хранятся в памяти приближенно и ошибки приближения могут накап-ливаться.

Для того чтобы избежать этого используют LUP – разложение.

Page 22: Лекция 14 Матрицы

Системы линейных уравнений

Три матрицы L, U, P образуют LUP-разложение матрицы A, если:

PA = LU,причем

L – является нижнетреугольной матрицей c единицами на диагонали.

U – верхнетреугольной матрицейP – матрицей перестановки

Page 23: Лекция 14 Матрицы

Системы линейных уравнений

Решение системы линейных уравнений можно представить в виде:

PA x = PB или LU x = PB

Таким образом решение системы сводится к решениям двух систем с треугольными матрицами:

Ly = PB и y = Ux

Page 24: Лекция 14 Матрицы

Системы линейных уравнений

Система Ly = PB имеет вид:

Решения этой системы имеют вид

][2211

]2[2121

]1[1

......

npnnn

p

p

byylyl

byylby

1

1][

i

jjijibi ylby

Page 25: Лекция 14 Матрицы

Системы линейных уравнений

Система Ux = y имеет вид:

Решения этой системы имеют вид

nnnn

nn

nn

yxu

yxuxuyxuxuxu

......

...

22222

11212111

ii

n

ijjijii uxuyx /

1

Page 26: Лекция 14 Матрицы

Системы линейных уравнений

void LUPSolve(L,U,Bp,n){for(i=1; i<=n; i++){

sum = 0;for(j=1; j<i j++){

sum += L[i,j]*Y[j];}Y[i]= Bp[i]-sum;

}for(i=n; i>=n; i--){

sum = 0;for(j=i+1; j<=n; j++){

sum += U[i,j]*X[j];}X[i] = (Y[i]-sum)/u[i,i];

}}

Page 27: Лекция 14 Матрицы

Системы линейных уравнений

1 2 0 2 0.62 3 3 4 -23 5 5 4 24 -1 -2 3.4 -1

3 5 5 4 22 3 3 4 -21 2 0 2 0.64 -1 -2 3.4 -1

3 5 5 4 22 0.6 0 1.6 -3.21 0.4 -2 0.4 -0.24 -0.2 -1 4.2 -0.6

Page 28: Лекция 14 Матрицы

Системы линейных уравнений

3 5 5 4 21 0.4 -2 0.4 -0.22 0.6 0 1.6 -3.24 -0.2 0.5 4 -0.5

3 5 5 4 22 0.6 0 1.6 -3.21 0.4 -2 0.4 -0.24 -0.2 -1 4.2 -0.6

3 5 5 4 21 0.4 -2 0.4 -0.22 0.6 0 1.6 -3.24 -0.2 -1 4.2 -0.6

Page 29: Лекция 14 Матрицы

Системы линейных уравнений

3 5 5 4 21 0.4 -2 0.4 -0.22 0.6 0 1.6 -3.24 -0.2 0.5 4 -0.5

3 5 5 4 21 0.4 -2 0.4 -0.24 -0.2 0.5 4 -0.52 0.6 0 1.6 -3.2

3 5 5 4 21 0.4 -2 0.4 -0.24 -0.2 0.5 4 -0.52 0.6 0 0.4 -3

Page 30: Лекция 14 Матрицы

Системы линейных уравнений

0 0 1 0

1 0 0 0

0 0 0 1

0 1 0 0

2 0 2 0.6

3 3 4 -2

5 5 4 2

-1 -2 3.4 -1

*

5 5 4 20 -2 4 -0.2

0 0 4 0.5

0 0 0 -3

1 0 0 0

0.4 1 0 0

-0.2 0.5 1 0

0.6 0 0.4 1

*

=

P

L

A

U

Page 31: Лекция 14 Матрицы

Системы линейных уравнений

void LUPDecomposition(A,n){ for(i=1; i<=n; i++) pi[i] = i; for(k=1; k<=n; k++){

p=0;for(i=k; k<=n; i++){

if(abs(A[i,k])>p){ p=abs(A[i,k]); k1=i; } if(p=0) error(“Матрица вырождена”); x = pi[k]; pi[k]=pi[k1]; pi[k1]=x; for(i=1; i<=n; i++){ x=A[i,k];A[i,k]=A[i,k1];A[i,k1]=x; } for(i=1; i<=n; i++){ A[i,k]=A[i,k]/A[k,k]; for(j=k-1; j<=n; j++) A[i,j]=A[i,j]-A[i,k]*A[k,j]; }

}}