Матричные операции линейной алгебры
Вычисление нормы и чисел обусловленности матрицы
Пусть А —матрица. Тогда 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!