Вычисление
собственных значений
и сингулярных чисел
разреженных матриц
Применение
функции eigs решает проблему собственных значений, состоящую в нахождении нетривиальных
решений системы уравнений, которая может быть интерпретирована как алгебраический
эквивалент системы обыкновенных дифференциальных уравнений в явной форме Коши:
A*v=l*v.[
Усовершенствованный алгоритм eig позволяет использовать eig для
расчета собственных значений и полных, и разреженных матриц, но для получения
собственных векторов разреженных матриц по-прежнему желательно использовать
именно eigs. — Примеч. ред.
] Вычисляются только отдельные выбранные собственные
значения или собственные значения и собственные векторы:
-
eigs(A.B)
решает проблему обобщенных собственных значений A*V = В* V*D. В должна быть
симметрической (или эрмитовой) положительно определенной квадратной матрицей
того же размера, что и A. eigs С А, []....) решает стандартную проблему
собственных значений A*V = V*D.
-
[V,D]
= eigs(A) или [V.O] = eigs('Afun',n) — возвращает собственные значения для
первого входного аргумента — большой и разреженной квадратной матрицы размера
п. Этот параметр может быть как квадратной матрицей, так и строкой, содержащей
имя m-файла, который применяет линейный оператор к столбцам данной матрицы.
Матрица А — действительная и несимметрическая. Y=Afun(X) должна возвращать
Y=A*X.
В случае одного
выходного параметра D — вектор, содержащий 6 самых больших собственных значений
матрицы А. В случае двух выходных аргументов [V.D] = eigs(A) D — диагональная
матрица размера 6x6, содержащая эти 6 самых больших собственных значений, и
V — матрица, содержащая б столбцов, являющихся соответствующими собственными
векторами. [V.D.flag] = eigs(A) возвращает флаг, равный 0, если все возвращенные
собственные значения сходятся, и 1 в противном случае.
-
eigs(A.K)
и eigs(A,B,K) возвращают не 6, а К самых больших собственных значений. eigs(A,K,sigma)
Heigs(A,B,K.sigma) возвращают не 6, а К собственных значений, выбранных
в зависимости от значения параметра sigma;
-
'lm' —
самые большие (как и по умолчанию) по абсолютной величине;
-
' sm' —
самые малые по абсолютной величине;
-
' l а'
и ' sa' — соответственно самые большие и самые малые алгебраически собственные
значения для действительных симметрических матриц;
-
'be' —
для действительных симметрических матриц возвращает и самые большие, и самые
малые алгебраически собственные значения поровну, но если К нечетное, то
самых больших значений на 1 больше, чем самых малых;
-
'lr' и
'sr' — для несимметрических и комплексных матриц возвращают соответственно
собственные значения с самыми большими и самыми малыми действительными частями;
-
'1i' и
'si'— для несимметрических и комплексных матриц возвращают соответственно
собственные значения с самыми большими и самыми малыми мнимыми частями;
-
скаляр - ближайшие
к величине slgma. В этом случае матрица В может быть только симметрической
(или эрмитовой) положительно полуопределенной, а функция Y = AFUN(X) должна
возвращать Y = (A-SIGMA*B)\X.
-
eigs(A,K,SIGMA,OPTS)
и eigs(A,B,K,SIGMA.OPTS) имеют параметры в полях структуры OPTS (в фигурных
скобках { } — значения по умолчанию):
-
OPTS.issym:
симметрия А или A-SIGMA*B, представленной AFUN [{0} | 1];
-
OPTS.isreal:
комплексные А или A-SIGMA*B, представленной AFUN [0 | {1}];
-
OPTS.tol:
сходимость: аbs(с1_вычисленное-с1_действительное) < tоl*аbs(с1_вычисленное)
[скаляр){eps}];
-
OPTS.maxit:
наибольшее число итераций [положительное целое | {300}];
-
OPTS.р:
число векторов Ланцо (Lanczos): K+l<p<=N [положительное целое | {2К}];
-
OPTS.v0:
начальный вектор [вектор размера N| {произвольно выбирается библиотекой
ARPACK}];
-
OPTS.disp:
уровень вывода диагностической информации [0 | {1} | 2J;
-
OPTS.cholВ:
В — это множитель Холецкого chol (В) [{0} | 1];
-
OPTS.permB:
разреженная матрица В равна chol (B(perm(B) .perm(B)) [perm(B) | {1:N}],
perm — перестановка.
-
eigs(AFUN.N.К,SIGMA,OPTS,PI,...)
иeigsCAFUN.N,В.К.SIGMA.OPTS,PI....) предоставляют дополнительные аргументы
Р, которые поступают в AFUN(X,P1....).
Функция svds
служит для вычисления небольшого числа сингулярных чисел и векторов большой
разреженной матрицы. По мере возможности старайтесь использовать svd(fulKA))
вместо svds(A). Если А прямоугольная матрица mxn, svds(A....) манипулирует с
несколькими собственными значениями и собственными векторами, возвращенными
EIGS(B,...), где В = [SPARSE(М.М) A: A' SPARSE(N.N)]. Положительные собственные
значения симметрической матрицы В равны сингулярным числам А.
-
svds (А)
возвращает 6 самых больших сингулярных чисел А;
-
svds (А,К)
или svds(A,K.'L') возвращает К самых больших сингулярных чисел;
-
S = SVDSCA,К,SIGMA,OPTIONS)
устанавливает параметры:
-
OPTIONS.tol
— порог чувствительности (по умолчанию le-10), norm(A*V-. -U*S,1) <=
tol * norm(A.1);
-
OPTIONS.maxit
- наибольшее число итераций (по умолчанию 300);
-
OPTIONS.disp
— число значений, показываемых на каждой итерации (по умолчанию 0).
-
[U.S.V]
= svds(A.k) — возвращает k наибольших сингулярных чисел и соответствующих
сингулярных векторов матрицы А. Если А — матрица размера mxn, то U — матрица
размера mxk с ортонормальными столбцами, S — диагональная матрица размера
kxk, V — матрицы размера nxk с ортонормальными столбцами;
-
[U.S.V.
flag] = svdsC...) — возвращает флаг, равный 0, если eigs сошлась, и 1 в
противном случае;
-
[U.S.V]
= svds(A.k.sigma) — возвращает k сингулярных чисел, наиболее близких к скаляру
sigma, и К сингулярных векторов (при sigma=0 возвращает К наименьших сингулярных
чисел и К векторов);
-
s = svds(A.k....)
— возвращает только вектор сингулярных чисел.
Как видно
из приведенного материала, система MATLAB предлагает пользователям уникальный
набор матричных операторов и функций, заметно более полный, чем у других математических
систем. Это открывает широчайшие возможности в решении всех видов математических
задач, в которых используются современные матричные методы.
Содержание раздела