Функции приведения матрицы к треугольной форме



Функции приведения матрицы к треугольной форме

Треугольной называется квадратная матрица А, если при l>k (верхняя треугольная матрица) или при к>1(нижняя треугольная матрица) элементы матрицы A(l,k) равны нулю. В строго треугольной матрице нули находятся и на главной диагонали. В линейной алгебре часто используется приведение матриц к той или иной треугольной форме. Оно реализуется следующими функциями:

rref (A) — возвращает приведенную к треугольной форме матрицу, используя метод исключения Гаусса с частичным выбором ведущего элемента. По умолчанию принимается значение порога допустимости для незначительного элемента столбца, равное (max(s1ze(A))*eps*norm(A,inf));

[R, jb] = rref (A) — также возвращает вектор jb, так что:

r = length (jb) может служить оценкой ранга матрицы А;

х( jb) — связанные переменные в системе линейных уравнений вида Ах=b;


А(:, jb) — базис матрицы А;

R(l:r.jb) — единичная матрица размера rхr;

[R. jb] = rref (A,to!) — осуществляет приведение матрицы к треугольной форме, используя метод исключения Гаусса с частичным выбором ведущего элемента для заданного значения порога допустимости tol;

rrefmovie(A) — показывает пошаговое исполнение процедуры приведения матрицы к треугольной.

Примеры:

» s=magic(3)

s =

8     1

6

3     5

7

4      9

2

» rref(s)

ans =

1     0

0

0     1

0

0     0

1



LU- и QR-разложения



LU- и QR-разложения

Так называемые LU- и QR-разложения реализуются следующими матричными функциями:

Функция 1и выражает любую квадратную матрицу X как произведение двух треугольных матриц, одна из которых (возможно, с перестановками) — нижняя треугольная матрица, а другая — верхняя треугольная матрица[ В MATLAB 6 аргументом (входным аргументом) функции lu может быть и полная прямоугольная матрица. — Примеч. ред. ]. Иногда эту операцию называют LR-разложением. Для выполнения этой операции служит следующая функция:

[L,U] = lu(X) — возвращает верхнюю треугольную матрицу U и психологическую нижнюю матрицу L (т. е. произведение нижней треугольной матрицы и матрицы перестановок), так что X=L*U;

[L,U,P.] = lu(X) — возвращает верхнюю треугольную матрицу U, нижнюю треугольную матрицу L и сопряженную (эрмитову) матрицу матрицы перестановок Р, так что L*U =Р*Х;

lu(Х) — вызванная с одним выходным параметром функция возвращает результат из подпрограмм DGETRF (для действительных матриц) или ZGETRF (для комплексных) известного пакета программ линейной алгебры LAPACK.

lu(X, thresh) — где thresh в диапазоне [0...1] управляет центрированием в разреженных матрицах (см. урок 12). Отдельная форма предыдущего случая. Центрирование происходит, если элемент столбца на диагонали меньше, чем произведение thresh и любого поддиагонального элемента. Thresh=l — значение по умолчанию. Thresh=0 задает центрирование по диагонали. Если матрица полная (не разреженная), выводится сообщение об ошибке.

Функция qr выполняет QR-разложепие матрицы. Эта операция полезна для квадратных и треугольных матриц. Она выполняет QR-разложение, вычисляя произведение унитарной [ Квадратная матрица с комплексными элементами, обладающая тем свойством, что обратная матрица ее комплексно сопряженной матрицы равна транспонированной, т. е. (А*)''-А'. — Примеч. ред. ] матрицы и верхней треугольной матрицы. Функция используется в следующих формах: [ Квадратная матрица с комплексными элементами, обладающая тем свойством, что обратная матрица ее комплексно сопряженной матрицы равна транспонированной, т. е. (А*)''-А'. — Примеч. ред. ]

[Q.R] = qr(X) — вычисляет верхнюю треугольную матрицу R того же размера, как и у X, и унитарную матрицу Q, так что X=Q*R;

[Q.R.E] = qr(X) — вычисляет матрицу перестановок Е, верхнюю треугольную матрицу R с убывающими по модулю диагональными элементами и унитарную матрицу Q, так что X*E=Q*R. Матрица перестановок Е выбрана так, что abs(diag(R)) уменьшается;

[Q.R] = qr(X.O) и [Q.R.E] = qr(X,0) — вычисляют экономное разложение, в котором Е — вектор перестановок, так что Q*R=X(: ,Е). Матрица Е выбрана так, что abs(diag(R)) уменьшается;

А = qr(X) — возвращает результат из LAPACK.

Обращение матриц — функции inv, pinv



Обращение матриц — функции inv, pinv

Обращение матриц — одна из наиболее распространенных операций матричного анализа. Обратной называют матрицу, получаемую в результате деления единичной матрицы Е на исходную матрицу X. Таким образом, Х^-1=Е/Х. Следующие функции обеспечивают реализацию данной операции:

inv(X) — возвращает матрицу, обратную квадратной матрице X. Предупреждающее сообщение выдается, если X плохо масштабирована или близка к вырожденной.

Определение нормы вектора



Определение нормы вектора

Норма вектора — скаляр, дающий представление о величине элементов вектора. Нужно различать норму матрицы и норму вектора. Функция norm определяет, является ли ее аргументом (входным аргументом в терминологии MATLAB) вектор или матрица, и измеряет несколько различных типов норм векторов:

norm(X)=norm(X,2) — вторая норма возвращает наибольшее сингулярное число X, max(svd(X));

norm(X.p) , где р — целое положительное число, — возвращает корень степени р из суммы абсолютных значений элементов вектора, возведенных в степень р. При р = 1 это может совпадать либо с первой нормой, либо с нормой неопределенности матриц;

norm(X, 'inf') возвращает максимальное из абсолютных значений элементов вектора; О norm(X, '-Inf') возвращает минимальное из абсолютных значений элементов вектора.

Определение ортонормированного базиса матрицы



Определение ортонормированного базиса матрицы

Вычисление ортонормированного базиса матрицы обеспечивают нижеприведенные функции:

В = orth(A) — возвращает ортонормированный базис матрицы А. Столбцы В определяют то же пространство, что и столбцы матрицы А, но столбцы В ортогональны, то есть B*B=eye(rank(A)). Количество столбцов матрицы В равно рангу матрицы А.

Определение угла между двумя подпространствами



Определение угла между двумя подпространствами

Угол между двумя подпространствами вычисляет функция subsрасе:

theta = subspace(A.B) — возвращает угол между двумя подпространствами, натянутыми на столбцы матриц А и В. Если А и В — векторы-столбцы единичной длины, то угол вычисляется по формуле acos(A'*B). Если некоторый физический эксперимент описывается массивом А, а вторая реализация этого эксперимента — массивом В, то subspace(A.B) измеряет количество новой информации, полученной из второго эксперимента и не связанной со случайными ошибками и флуктуациями.

Определитель и ранг матрицы



Определитель и ранг матрицы

Для нахождения определителя (детерминанта) и ранга матриц в MATLAB имеются следующие функции:

det(X) — возвращает определитель квадратной матрицы X. Если X содержит только целые элементы, то результат — тоже целое число. Использование det(X)=0 как теста на вырожденность матрицы действительно только для матрицы малого порядка с целыми элементами.

На практике вычисление явной обратной



Пример 1

» inv(rand(4,4)) 
ans =

2.2631 -2.3495-0.4696-0.6631

-0.76201.2122 1.7041 -1.2146

-2.04081.4228 1.5538 1.3730 
1.3075 -0.0183-2.54830.6344
На практике вычисление явной обратной матрицы не так уж необходимо. Чаще операцию обращения применяют при решении системы линейных уравнений вида Ах=b. Один из путей решения этой системы — вычисление x=inv(A)*b. Но лучшим с точки зрения минимизации времени расчета и повышения точности вычислений является использование оператора матричного деления х=А\b. Эта операция использует метод исключения Гаусса без явного формирования обратной матрицы.
В = pinv(A) — возвращает матрицу, псевдообратную матрице А (псевдообращение матрицы по Муру-Пенроузу). Результатом псевдообращения матрицы по Муру-Пенроузу является матрица В того же размера, что и А', и удовлетворяющая условиям А*В*А=А и В*А*В=В. Вычисление основано на использовании функции svd(A) и приравнивании к нулю всех сингулярных чисел, меньших величины tol;
В = pinv (A. tol) — возвращает псевдообратную матрицу и отменяет заданный по умолчанию порог, равный max(size(A))*norm(A)*eps.

и RTaKHM образом, чтобы пересчитать



Пример 1

» C=rand(5.4)
С=
0.8381 0.5028 0.1934 0.6979
0.0196 0.7095 0.6822 0.3784
0.6813 0.4289 0.3028 0.8600 
0.3795 0.3046 0.5417 0.8537
0.8318 0.1897 0.1509 0.5936 
» [Q.R]=qr(C) 
Q=
-0.5922-0.11140.5197 0.0743 -0.6011
-0.0139-0.9278 -0.0011 -0.34480.1420
-0.4814-0.11730.0699 0.5940 0.6299
-0.2681-0.1525-0.82680.2632 -0.3898
-0.58770.2997 -0.2036-0.67340.2643 
R =
-1.4152    -0.7072    -0.5037    -1.4103
0     -0.7541    -0.7274    -0.4819
0     0     -0.3577    -0.4043
0    0    0     0.2573

0    0    0    0
[Q,R] = qrdelete(Q,R, j) — изменяет Q и RTaKHM образом, чтобы пересчитать QR-разложение матрицы А для случая, когда в ней удален j-й столбец (А(:, j )=[ ]). Входные значения Q и R представляют QR-разложение матрицы А как результат действия [Q. R]=qr(A)..Аргумент j определяет столбец, который должен быть удален из матрицы А. Примеры:
» C=rand(3.3) 
С =
0.0164 0.0576 0.7176
0.1901 0.3676 0.6927
0.5869 0.6315 0.0841
» [Q.R]=qr(C) 
Q=
-0.0265-0.2416-0.9700
-0.3080-0.92120.2378
-0.95100.3051 -0.0500 
R =
-0.6171-0.7153-0.3123
0 -0.1599-0.7858
0 0 -0.5356 
» [Q1.R1]=qrdelete(Q.R.2) 
Q1 =
-0.02650.7459 0.6655
-0.30800.6272 -0.7153
-0.9510-0.22390.2131 
R1 =
-0.6171-0.3123
0     0.9510 
0     0
[Q.R] = qrinsert(Q,R,j,x) — изменяет Q и R таким образом, чтобы пересчитать разложение матрицы А для случая, когда в матрице А перед j-м столбцом вставлен столбец х. Входные значения Q и R представляют QR-разложение матрицы А как результат действия [Q,R]=qr(A). Аргумент х — вектор-столбец, который нужно вставить в матрицу А. Аргумент j определяет столбец, перед которым будет вставлен вектор х. Примеры:
» C=rand(3.3) 
С =
0.1210 0.8928 0.8656
0.4508 0.2731 0.2324
0.7159 0.2548 0.8049 
» [Q,R]-qr(c)
 Q =
-0.14160.9835 0.1126
-0.52750.0213 -0.8493
-0.8377-0.17970.5157 
R =
-0.8546-0.4839-0.9194
0  0.8381 0.7116
0  0 0.3152 
» x=[0.5.-0.3.0.2];[Q2.R2]=qrinsert(Q.R.2,x') 
Q2 =
-0.14160.7995 -0.5838
-0.5275-0.5600-0.6389
-0.83770.2174 0.5010 
R2 =
-0.8546-0.0801-0.4839-0.9194
0 0.6112 0.6163 0.7369
0 0 -0.5681-0.2505

возвращает вектор сингулярных чисел. Команда



Пример 1

» В = [3 -12 -.6 2*eps:-2 48 -1 -eps;-eps/8 eps/2 -1 10;-.5 -.5 .3 1] 
В =
3.0000 -12.0000 -0.60000.0000
-2.0000 48.0000-1.0000-0.0000
-0.0000 0.0000 -1.0000 10.0000
-0.5000 -0.5000 0.3000 1.0000 
» [G.H]=eig(B) 
G =
-0.2548     0.7420     -0.4842     0.1956     
0.9670     0.0193     -0.0388     0.0276
-0.0015     -0.6181     -0.8575     0.9780
-0.0075     -0.2588     -0.1694     -0.0676 
H =
48.5287     0     0     0 
0     3.1873     0     0 
0     0     0.9750     0 
0     0     0     -1.6909
svd(X) — возвращает вектор сингулярных чисел. Команда svd выполняет сингулярное разложение матрицы X; [U.S, V] = svd(X) — вычисляет диагональную матрицу S тех же размеров, которые имеет матрица X, с неотрицательными диагональными элементами в порядке их убывания, и унитарные матрицы U и V, так что X=U*S*V ' ; [U.S.V] = svd(X.O) — выполняет экономичное сингулярное разложение.

Функция qz обеспечивает приведение пары



Пример 1

» А-[2 3 6;-4 0 3:1 5 -2] 
А =
2 3 6
-4 0 3
1 5 -2
»

 [S.D]=eig(A)

S

=

0.7081 + 0.32961

0.7081 - 0.32961

-0.3355

-0.3456 + 0.36881

-0.3456 - 0.36881

-0.5721

0.0837 + 0.35711

0.0837 - 0.35711

0.7484

D

=

3.1351 + 4.06031

0

0

0

3.1351 - 4.06031

0

0

0

-6.2702

»

 [S.D]=cdf2rdf(S.D)

S

=

0.7081   0.3296

-0.3355

-0.3456  0.3688

-0.5721

0.0837   0.3571

0.7484

D

=

3.1351  4.0603

0

-4.0603 3.1351

0

0         0

-6.2702

Функция qz обеспечивает приведение пары матриц к обобщенной форме Шура:
[AA.8B.Q.Z.V] = qz(A.B) — возвращает, возможно, комплексные верхние треугольные матрицы АА и ВВ и соответствующие матрицы приведения Q и I, такие что Q*A*Z=AA и Q*B*Z=BB. Функция также возвращает матрицу обобщенных собственных векторов V. Обобщенные собственные значения могут быть найдены из следующего условия:
A*V*diag(BB) = B*V*diag(AA)

Числа обусловленности матрицы определяют чувствительность



Пример 1

» A=[2.3.1:1.9.4:2.6.7]
A =
2 3 1
1 9 4
2 6 7
» norm(A.l) 
ans =
18
Числа обусловленности матрицы определяют чувствительность решения системы линейных уравнений к погрешностям исходных данных. Следующие функции позволяют найти числа обусловленности матриц.
cond(X) — возвращает число обусловленности, основанное на второй норме, то есть отношение самого большого сингулярного числа X к самому малому. Значение cond(X), близкое к 1, указывает на хорошо обусловленную матрицу; с = cond(X.p) — возвращает число обусловленности матрицы, основанное на р-норме: norm(X.p)*norm(inv(X),p), где р определяет способ расчета: р=1 — число обусловленности матрицы, основанное на первой норме; р=2 — число обусловленности матрицы, основанное на второй норме; p= 'fro' — число обусловленности матрицы, основанное на норме Фробе-ниуса (Frobenius); р='inf' — число обусловленности матрицы, основанное на норме неопределенности.
с = cond(X) — возвращает число обусловленности матрицы, основанное на второй норме.

матрицы вычисляется на основе треугольного



Пример 1

» А=[2,3,6:1.8.4;3.6,7]
А = 
2

3

6

1

8

4

3

6

7

» det(A)

ans = 
-29
Детерминант матрицы вычисляется на основе треугольного разложения методом исключения Гаусса:
[L.U>lu(A): s=det(L): d=s*prod(diag(U)).
Ранг матрицы определяется количеством сингулярных чисел, превышающих порог
tol=max(size(A))*nprm(A)*eps.
При этом используется следующий алгоритм:
s=svd(A);tol=max(size(A))*npnri(A)*eps;r=sum(s>tol);
Для вычисления ранга используется функция rank:
rank (А) — возвращает количество сингулярных чисел, которые являются большими, чем заданный по умолчанию допуск;  rank(A.tol) — возвращает количество сингулярных чисел, которые превышают tol.

возвращает ортонормированный базис для нулевого



Пример 1

» А=[2 4 6:9 8 2:12 23 43]
А =
2

4

6

9

8

2

12

23

43

» B=orth(A) 
В=
0.1453 -0.0414-0.9885
0.1522 -0.98630.0637
0.9776 0.1597 0.1371

null (А) — возвращает ортонормированный базис для нулевого (пустого) пространства А.

Пример Н = hadamard(20);



Пример 1

» Н = hadamard(20);A = Н(:.2:4);В = Н(:.5:8); 
» subspace(A,B) 
ans = 
1.5708

Пример trace(a)



Пример 1

» а=[2.3.4:5.6,7;8.9,1] 
а =
2 3 4
5 6 7
8 9 1 
» trace(a) 
ans =
9

Пример c=chol(pascal(4))



Пример 1

» c=chol(pascal(4)) 
с =
1    1    1    1
0    1    2    3
0    0    1    3
0    0    0    1

Пример pinv(rand(4,3))



Пример 2

» pinv(rand(4,3))
ans =
-1.3907-0.0485-0.24931.8640
-0.87751.1636 0.6605 -0.0034 
2.0906 -0.5921-0.2749-0.5987

Пример F=[23 12;3 5:6 0]



Пример 2

» F=[23 12;3 5:6 0] 
F =
23     12
3        5
6         0 
» [k,l,m]=svd(F)
k=
0.9628

-0.0034

-0.2702

0.1846

0.7385

0.6485

0.1974

-0.6743

0.7116

l=
26.9448

0

0

4.1202

0

0

m=
0.8863     -0.4630 
0.4630     0.8863

В возвращает действительные треугольную матрицу



Пример 2

» А=[1 2 3:6 3 0;4 7 0];В=[1 1 1:0 7 4:9 4 1]; 
» [aa.bb.f,g.h]=qz(A.B) 
аа =
-2.9395 0.4775 0.8751
0 9.5462 3.5985
0 0 3.2073
bb=
5.5356

3.5345

-2.2935

0

8.4826

6.7128

0

0

0.7667

-0.0367

0.7327

-0.6796

-0.1052

-0.6791

-0.7265

-0.9938

0.0448

0.1020

-0.7023 -0.7050 -0.0989
0.6867 -0.6343 -0.3552
-0.1877 0.3174 -0.9295 
h =
-1.0000 -0.4874 -0.0561
0.9778 -1.0000 0.6238
-0.2673 0.4340 -1.0000
Функция qz(A,B,' real') при заданных матрицах А и В возвращает действительные треугольную матрицу ВВ и квазитреугольную матрицу АА с 2x2 диагональными блоками, соответствующими парам сопряженных комплексных значений. Так как матрица АА квазитреугольная, то необходимо решить проблемы обобщения 2x2 для получения подлинных собственных значений.

возвращает вектор чисел обусловленности для



Пример 2

» d=cond(hilb(4))
d =
1.5514е+004
condeig(A) — возвращает вектор чисел обусловленности для собственных значений А. Эти числа обусловленности — обратные величины косинусов углов между левыми и правыми собственными векторами; [V.D.s] = condeig(A) — эквивалентно [V,D] = eig(A): s = condeig(A);. Большие числа обусловленности означают, что матрица А близка к матрице с   кратными собственными значениями.

Пример rank(hilbdl))



Пример 2

» rank(hilbdl)) 
ans = 
10

Пример null(hilb(11))



Пример 2

» null(hilb(11)) 
ans = 
0.0000
-0.0000
0.0009
-0.0099
 0.0593
-0.2101 
0.4606
-0.6318 
0.5276
-0.2453 
0.0487

и унитарную матрицу U, такие



Пример 3

» А=[1 2 3:6 3 0:4 7 0];В=[1 1 1:0 7 4;9 4 1];
» [aa.bb.f,g.h]=qz(A.B,'real') 
аа =
-2.9395 0.4775 0.8751
0     9.5462   3.5985

0     0     3.2073 
bb =

5.5356     3.5345     -2.2935
0             8.4826      6.7128
0                0             0.7667 
f =
-0.0367     0.7327     -0.6796
-0.1052     -0.6791     -0.7265
-0.9938     0.0448     0.1020 
g=
-0.7023     -0.7050     -0.0989     
0.6867     -0.6343     -0.3552
-0.1877     0.3174     -0.9295 
h =
-1.0000     -0.4874     -0.0561 
0.9778     -1.0000     0.6238
-0.2673     0.4340     -1.0000
Т = schur(A) — возвращает матрицу Шура Т. [U.T] = schur(A) — возвращает матрицу Шура Т и унитарную матрицу U, такие что A=U Т U и U' и=еуе(51ге(А))(единичная матрица размера А); [U,T] = rsf2csf(u.t)[ В MATLAB 6 в функции schur, если ее входной аргумент — действительная матрица, может использоваться новый параметр 'complex' (schur,'complex'), позволяющий получить комплексную форму Шура без использования функции преобразования rsf2csf. — Примеч. ред. ] — преобразование результатов предыдущей функции (действительной формы Шура) в комплексную форму Шура может использоваться только после вызова [u,t] = schur(A) Комплексная форма Шура — это верхняя треугольная матрица со всеми собственными значениями на диагонали. Действительная форма Шура имеет действительные собственные значения на диагонали, а комплексные собственные значения содержатся в 2x2 блоках, расположенных вдоль диагонали. И входные, и выходные матрицы U, u и Т, tпредставляют собой соответственно унитарные матрицы и матрицы Шура исходной матрицы А, которая удовлетворяет условиям A=UTU' и U' U=eye( si ze(A)); Н = hess(A) — находит Н, верхнюю форму Хессенберга для матрицы А;
[Р.Н] = hess(A) — возвращает матрицу Хессенберга Н и унитарную матрицу преобразований Р, такую что А=Р*Н*Р' и P'*P=eye(s1ze(A)). Элементы матрицы Хессенберга, расположенные ниже первой поддиагонали, равны нулю. Если матрица симметричная или эрмитова, то матрица Хессенберга вырождается в трехдиагональную. Эта матрица имеет те же собственные значения, что и оригинал, но для их вычисления необходимо меньшее количество операций.

возвращает обратную величину обусловленности матрицы



Пример 3

» d=condeig(rand(4))
d =
1.0766
1.2298
1.5862
1.7540
rcond(A) — возвращает обратную величину обусловленности матрицы А по первой норме, используя оценивающий обусловленность метод LAPACK. Если А — хорошо обусловленная матрица, то rcond(A) около 1.00, если плохо обусловленная, то около 0.00. По сравнению с cond функция rcond реализует более эффективный в плане затрат машинного времени, но менее достоверный метод оценки обусловленности матрицы.

f=magic(4)



Пример 4

» f=magic(4) 
f =
16 2 3 13 
5 11 10 8 
9 7 6 12 
4 14 15 1 
» hess(f) 
ans=
16.0000 -8.0577 8.8958 6.1595
-11.0454 24.2131 -8.1984 2.1241
0 -13.5058 -4.3894 -7.8918
0 0 3.2744 -1.8237

Пример » s=rcond(hilb(4))



Пример 4

» s=rcond(hilb(4)) 
s =
4.6461е-005

Приведение матриц к форме Шура и Хессенберга



Приведение матриц к форме Шура и Хессенберга

Ниже приводятся функции, обеспечивающие приведение матриц к специальным формам Шура и Хессенберга:

cdf2rdf — преобразование комплексной формы Шура в действительную. Если система [V,D]=eig(X) имеет комплексные собственные значения, объединенные в комплексно-сопряженные пары, то функция cdf2rdf преобразует систему таким образом, что матрица D принимает вещественный диагональный вид с 2x2 вещественными блоками, заменяющими первоначальные комплексные пары.

Конкретные столбцы матрицы V больше не являются собственными векторами, но каждая пара векторов связана с блоком размера 2x2 в матрице D.

Разложение Холецкого



Разложение Холецкого

Разложение Холецкого — известный прием матричных вычислений. Функция chol находит это разложение для действительных и комплексных эрмитовых матриц.

R = chol(X) — для квадратной матрицы [ Положительно определенной называется действительная симметрическая матрица, все собственные значения которой положительны. Поскольку используется только верхний треугольник матрицы X, матрица X не обязательно должна быть симметрической. — Примеч. ред. ]. X возвращает верхнюю треугольную матрицу R, так что R'*R=X new . Если симметрическая матрица X new , заданная верхней треугольной частью и диагональю матрицы X, не является положительно определенной матрицей, выдает сообщение об ошибке. Разложение Холецкого возможно для действительных и комплексных эрмитовых матриц [ Квадратная матрица с комплексными элементами, комплексно сопряженная матрица которой может быть получена транспонированием, т. е. равна транспонированной матрице (А*=А). — Примеч. ред. ];

[R.p] = chol (X) с двумя выходными аргументами никогда не генерирует сообщение об ошибке в ходе выполнения разложения Холецкого квадратной матрицы X. Если верхняя треугольная часть и диагональ X задают положительно определенную матрицу, то р=0, a R совпадает с вышеописанным случаем, иначе р. — положительное целое число, a R — верхняя треугольная матрица порядка q=p-l, такая что R'*R=X(l:q,l:q).

Матричные операции линейной алгебры


Урок 11. Матричные операции линейной алгебры Вычисление нормы и чисел обусловленности матрицы Определитель и ранг матрицы Определение нормы вектора Определение ортонормированного базиса матрицы Функции приведения матрицы к треугольной форме Определение угла между двумя подпространствами Вычисление следа матрицы Разложение Холецкого Обращение матриц - функции inv, pinv LU- и QR-разложения Вычисление собственных значений и сингулярных чисел Приведение матриц к форме Шура и Хессенберга Что нового мы узнали?

Вычисление нормы и чисел обусловленности матрицы



Вычисление нормы и чисел обусловленности матрицы

Для понимания всего нижеизложенного материала необходимо учесть, что нормы матриц в MATLAB отличаются от норм векторов.

Пусть А —матрица. Тогда n=norm(A) эквивалентно п=погп(А,2) и возвращает вторую норму, т. е. самое большое сингулярное число А. Функция n=norm(A, 1) возвращает первую норму, т. е. самую большую из сумм абсолютных значений элементов матрицы по столбцам. Норма неопределенности n=norm(A, inf) возвращает самую большую из сумм абсолютных значений элементов матрицы по рядам. Норма Фробениуса (Frobenius) norm(A, 'fro') = sqrt(sum(diag(A'A))).



Вычисление следа матрицы



Вычисление следа матрицы

След матрицы А — это сумма ее диагональных элементов. Он вычисляется функцией trace:

trace(A) — возвращает след матрицы.

Вычисление собственных значений и сингулярных чисел



Вычисление собственных значений и сингулярных чисел

Во многих областях математики и прикладных наук большое значение имеют средства для вычисления собственных значений (собственных чисел, характеристических чисел, решений векового уравнения) матриц, принадлежащих им векторов и сингулярных чисел. В новой версии MATLAB собственные вектора нормализуются, иначе, чем в предыдущих. Основной критерий: либо V'V=I, либо V'BV=I, где V — собственный вектор, I — единичная матрица. Поэтому результаты вычислений в новой версии, как правило, отличаются. Ниже дан список средств решения векового уравнения, реализованных в системе MATLAB.

Несимметрические матрицы могут быть плохо обусловлены при вычислении их собственных значений. Малые изменения элементов матрицы, такие как ошибки округления, могут вызвать большие изменения в собственных значениях. Масштабирование — это попытка перевести каждую плохую обусловленность собственных векторов матрицы в диагональное масштабирование. Однако масштабирование обычно не может преобразовать несимметрическую матрицу в симметрическую, а только пытается сделать (векторную) норму каждой строки равной норме соответствующего столбца. Масштабирование значительно повышает стабильность собственных значений.

[D.B] = balance(A) — возвращает диагональную матрицу D, элементы которой являются степенями основания 2, и масштабированную матрицу В, такую, что B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;

В = balance(A) — возвращает масштабированную матрицу В. Пример использования функции balance:

» А=[1 1000 10000:0.0001 1 1000:0.000001 0.0001 1]

А =

1.0е+004 *

0.0001 0.1000 1.0000

0.0000 0.0001 0.1000

0.0000 0.0000 0.0001 

» [F.G]=balance(A) 

F = 

1.0е+004 *

3.2768 0 0

0 0.0032 0

0 0 0.0000 

G =

1.0000 0.9766 0.0095

0.1024 1.0000 0.9766

1.0486 0.1024 1.0000

Величина, связывающая погрешность вычисления собственных значений с погрешностью исходных данных, называется числом обусловленности (собственных значений) матрицы и вычисляется следующим образом:

cond(V) = norm(V)*norm(inv(V)) где [V.D]=eig(A).[B=D\A*D, а норма каждого ряда масштабированной матрицы приближается к норме столбца с тем же номером;]

eig(A) — возвращает вектор собственных значений квадратной полной или симметрической разреженной матрицы А обычно после автоматического масштабирования, но для больших разреженных матриц (в терминологии MATLAB —

это просто полные матрицы со сравнительно большим [ Но небольшим по сравнению с числом нулей разреженной матрицы. Эталонное число нулей разреженной матрицы данного размера можно вычислить, применив к полной матрице этого же размера функцию sparse. — Примеч. ред. ] числом нулей), а также во всех случаях, где помимо собственных значений необходимо получать и собственные вектора разреженной матрицы, вместо нее рекомендовано использовать eigs(A);

eig(A.B) - возвращает вектор обобщенных собственных значений квадратных матриц А и В;

[V.D] = eig(A.B) — вычисляет диагональную матрицу обобщенных собственных значений D и матрицу V, столбцы которой являются соответствующими собственными векторами (правыми собственными векторами), таким образом что А V = В V D;

[V.D] = eig(A) — вычисляет диагональную матрицу собственных значений О матрицы А и матрицу V, столбцы которой являются соответствующими собственными векторами (правыми собственными векторами), таким образом что А V = V D.

Нужно использовать [W,D]=e1g(A'); W=W, чтобы вычислить левые собственные вектора, которые соответствуют уравнению W*A=D*W.

[V.D] = eig(A,'nobalance') — находит собственные векторы и собственные значения без предварительного масштабирования. Иногда это улучшает обусловленность входной матрицы, обеспечивая большую точность вычисления собственных векторов для необычно масштабированных матриц;

eig(A.B. 'chol') — возвращает вектор, содержащий обобщенные собственные значения, используя разложение матрицы В по методу Холецкого; если А - симметрическая квадратная матрица и В — симметрическая положительно определенная квадратная матрица, то eig(A.B) по умолчанию работает точно так же;

eig(A,B, 'qz') — не требует, чтобы матрицы были симметрическими и возвращает вектор, содержащий обобщенные собственные значения, используя QZ-алгоритм; при явном указании этого флага QZ-алгоритм используется вместо алгоритма Холецкого даже для симметрической матрицы и симметрической положительно определенной матрицы В, так как может давать более стабильные значения, чем предыдущий метод. Для несимметрических матриц в MATLAB 6 всегда используется QZ-алгоритм и параметр 'chol' или 'qz' игнорируется;

[V.D] = eig(A.B) — возвращает диагональную матрицу обобщенных собственных значений D и матрицу V, чьи столбцы являются соответствующими собственными векторами, так чтобы A*V=B*V*D.