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



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

Пусть А —матрица. Тогда n=norm(A) эквивалентно n=norm(A,2) и возвращает вторую норму, т. е. самое большое сингулярное число А. Функция n=norm(A, 1) возвра1 щает первую норму, т. е.

15

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

Пример:

» 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) .р), где р определяет способ расчета

 с = cond(X) — возвращает число обусловленности матрицы, основанное на второй норме.

Пример:

» d=cond(hi1b(4)) d =

1.5514е+004

 condeig(A) — возвращает вектор чисел обусловленности для собственных значений А. Эти числа обусловленности — обратные величины косинусов углов между левыми и правыми собственными векторами;

 [V.D.s] = condeig(A) — эквивалентно [V.D] = eig(A); s = condeig(A);.

Большие числа обусловленности означают, что матрица А близка к матрице с кратными собственными значениями.

Пример:

» d=condeig(rand(4)) d =

1.0766

1.2298

1.5862

1.7540

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

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

Детерминант матрицы вычисляется на основе треугольного разложения методом исключения Гаусса:

[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))*nprm(A)*eps;r=sum(s>tol);

Для вычисления ранга используется функция rank:

О rank (А) — возвращает количество сингулярных чисел, которые являются большими, чем заданный по умолчанию допуск;

О rank(A.tol) — возвращает количество сингулярных чисел, которые превышают tol.

Пример:

» rank(hi1Ь(11)) ans »

10

16

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

 Функция norm определяет, является ли ее аргументом (входным аргументом в терминологии MATLAB) вектор или матрица, и измеряет несколько различных типов норм векторов:

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

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

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

norm(КХ. -inf’) возвращает минимальное из абсолютных значений элементов вектора

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

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

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

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

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

Пример:

» f=[3.5,4;12.7.5:34,65.23] f =

3 5 4

12 7 5

34 65 23

Cd.hHutf)

0.0882 0.0461 1.0000

0.3529 1.0000 0

1.0000 0 0

34.000065.000023.0000

0 -15.9412 -3 .1176

0 0 d*h 2. 1144

> =

3.0000 5.0000 4.0000

12.0000 7.0000 5.0000

34.0000 65.0000 23.0000

Функция qr выполняет QR-разложение матрицы. Эта операция полезна для квадратных и треугольных матриц. Она выполняет QR-разложение, вычисляя произведение унитарной матрицы и верхней треугольной матрицы. Существуют 6 форм такого разложения: [Q.R] = qrinsert(Q,R, j,х); [Q.R] = qrdelete(Q,R. J); A = qr(X); [EQ.R] = qr(X.О); [Q.R.E] = qrСX); [Q,R] = qrCX).

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

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

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

 В = balance(A) — возвращает масштабированную матрицу В.

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

17

образом: cond(V) - norm(V)*norm(inv(V)) где [V.D]—eig(A).

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

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

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

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

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

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

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

Пример:

» В - [3 -12 -.6 2*eps;-2 48 -1 -eps:-eps/8 eps/2 -1 10;-.5 -.5 .3 1]

В =

3.0 -12.0000 -0.60000.0000

-2.0000 48.0000-1.0000-0.0000

 svd(X) — возвращает вектор сингулярных чисел. Команда svd выполняет сингулярное разложение матрицы X;

 [U.S.V] = svd(X) — вычисляет диагональную матрицу S тех же размеров, которые имеет матрица X, с неотрицательными диагональными элементами в порядке их убывания, и унитарные матрицы U и V, так что X=U*S*V’;

 [U.S.V] = svd(X.O) — выполняет экономичное сингулярное разложение.

Пример:

=[23 12;3 5:6 23 12 3 5 6 0 .,1. m]=s vd (F) 0]

0.9628 -0.0034 -0.2702

0.1846 0.7385 0.6485

0.1974 -0.6743 0.7116

26.9448 0

0 4.1202

0 0

0.8863


Дата добавления: 2019-11-25; просмотров: 181; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!