Upload
simplepeople
View
75
Download
0
Embed Size (px)
Citation preview
Анализ комбинаторных алгоритмов
Лекция № 14Матрицы.
Матрицы и векторы
Матрицей называется прямоугольная таблица чисел:
При транспонировании матрицы ее строки становятся столбцами и наоборот
654321
232221
131211
aaaaaa
A
635241
2313
2212
2111
aaaaaa
AT
Матрицы и векторы
Вектором называется одномерный массив чисел.
Стандартной формой вектора принято считать вектор-столбец. При его транспонировании получается вектор-строка.
Вектор i элемент которого равен 1, а остальные равны 0 называют единичным вектором и обозначают ei
Матрицы и векторы
На практике часто встречаются квадратные матрицы – размером nxn.
Выделяют ряд видов квадратных матриц:Диагональная матрица – все элементы,
кроме диагональных равны 0, поэтому часто задается вектором диагональных элементов.
Симметрическая матрица удовлетворяет условию A = AT
Матрицы и векторы
Единичная матрица (In) – это диагональная матрица диагональ которой заполнена единицами
У верхнетреугольной матрицы элемен-ты под главной диагональю равны нулю.
У нижнетреугольной матрицы элементы над главной диагональю равны нулю.
Матрица перестановки имеет ровно одну единицу в каждой строке и в каждом столбце
Операции над матрицами
Сумма матриц определяется как матрица с элементами равными сумме соответствующих элементов складываемых матриц:
cij = aij+bij
Матрицу с элементами a’ij=-aij называют противоположной A матрицей
Вычитание матрицы B из A определяется как сумма А и матрицы противоположной B.
Операции над матрицами
Умножение матриц осуществимо, если они имеют согласованные размеры, т.е. С = AB, только если число столбцов A совпадает с числом строк в B.
Если A – m x n матрица, B – n x p матрица, то С = AB – m x p матрица с элементами:
n
jjkijik bac
1
Операции над матрицами
Для любых A B C согласованных размеров верны утверждения:A(BC) = (AB)CA(B+C) = AB + AC(A+B)C = AC + BC
При умножении матрицы на единичную согласованного размера, получается сама матрица: AIn= ImA=A
Операции над матрицами
Матрицей обратной к A (n x n) называется A-1, такая что A A-1 = In
Многие матрицы не имеют обратных – они называются необратимыми или вырожденными.
Если обратная матрица существует, то она только одна.
Операции над матрицами
Говорят, что векторы x1,x2,…xn линейно зависимы, если найдется набор коэффициентов с1,c2,…cn, не все из которых равны нулю, для которого c1x1 + c2x2 +… cnxn = 0
Векторы не являющиеся линейно зависимыми называют линейно независимыми.
Операции над матрицами
Столбцевым рангом ненулевой матрицы называется наибольшее число линейно независимых столбцов
Строчным рангом ненулевой матрицы называется наибольшее число линейно независимых строк
Если строчный и столбцевой ранги совпадают их значение называют просто рангом матрицы.
Операции над матрицамиРангом матрицы A (n x m) называется
наименьшее число r, для которого найдутся матрицы B (n x r) и C (r x m), такие что A = BC
Квадратная матрица (n x n) с рангом n называется матрицей полного ранга.
ТеоремаКвадратная матрица имеет полный ранг, тогда и только тогда, когда невырождена.
Операции над матрицами
Минором элемента 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
Операции над матрицами
Определитель обладает следующими свойствами: Если в какой-либо строке или столбце матрице
стоят одни нули, то определитель равен 0 Если умножить элементы матрицы на некоторое
число, то определитель умножится на это число Если добавить к элементам строки, элементы
другой строки определитель не изменится (аналогично для столбцов)
Определители A и AT равны При перестановке строк или столбцов опреде-
литель меняет знак.
Операции над матрицами
Если A и B квадратные матрицы одинакового размера, то верно что det(AB) = det(A) det(B)
ТеоремаКвадратная матрица A вырождена тогда и только тогда, когда det(A) = 0.
Алгоритм Штрассена
Алгоритм Штрассена умножает две (n x n) матрицы за время nlog7=n2.81
Алгоритм Штрассена действует по принципу «разделяй и властвуй»
hfge
dcba
utsr
Алгоритм Штрассена
Каждая матрица 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
Алгоритм Штрассена
Рекурсивно вычисляются 7 матриц P:Pi = Ai Bi
Вычисляются четыре блока результирую-щей матрицы:
r = P5+P4-P2+P6u = P5+P1-P3-P7s = P1+P2t = P3+P4
Системы линейных уравнений
Система линейных уравнений
может быть записана в матричном виде
nnnnnn
nn
nn
bxaxaxa
bxaxaxabxaxaxa
............
2211
22222121
11212111
nnnnnn
n
n
b
bb
x
xx
aaa
aaaaaa
.........
..................
2
1
2
1
21
22221
11211
Системы линейных уравнений
Если матрица A невырождена, то найдется обратная матрица A-1 и вектор x = A-1B будет являться решением.
Если ранг матрицы меньше числа переменных система называется недоопределенной.
Если число уравнений больше числа переменных – переопределенной.
Системы линейных уравнений
Приведенный метод часто сталки-вается с проблемой вычислительной неустойчивости: вещественные числа хранятся в памяти приближенно и ошибки приближения могут накап-ливаться.
Для того чтобы избежать этого используют LUP – разложение.
Системы линейных уравнений
Три матрицы L, U, P образуют LUP-разложение матрицы A, если:
PA = LU,причем
L – является нижнетреугольной матрицей c единицами на диагонали.
U – верхнетреугольной матрицейP – матрицей перестановки
Системы линейных уравнений
Решение системы линейных уравнений можно представить в виде:
PA x = PB или LU x = PB
Таким образом решение системы сводится к решениям двух систем с треугольными матрицами:
Ly = PB и y = Ux
Системы линейных уравнений
Система Ly = PB имеет вид:
Решения этой системы имеют вид
][2211
]2[2121
]1[1
......
npnnn
p
p
byylyl
byylby
1
1][
i
jjijibi ylby
Системы линейных уравнений
Система Ux = y имеет вид:
Решения этой системы имеют вид
nnnn
nn
nn
yxu
yxuxuyxuxuxu
......
...
22222
11212111
ii
n
ijjijii uxuyx /
1
Системы линейных уравнений
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];
}}
Системы линейных уравнений
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
Системы линейных уравнений
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
Системы линейных уравнений
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
Системы линейных уравнений
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
Системы линейных уравнений
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]; }
}}