Вычисление собственных значений и сингулярных чисел разреженных матриц
Применение функции 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,…) и eigs(AFUN.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 = SVDS(A,К,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] = svds(…) – возвращает флаг, равный 0, если eigs сошлась, и 1 в противном случае;
- [U.S.V] = svds(A.k.sigma) – возвращает k сингулярных чисел, наиболее близких к скаляру sigma, и К сингулярных векторов (при sigma=0 возвращает К наименьших сингулярных чисел и К векторов);
- s = svds(A.k….) – возвращает только вектор сингулярных чисел.
Как видно из приведенного материала, система MATLAB предлагает пользователям уникальный набор матричных операторов и функций, заметно более полный, чем у других математических систем. Это открывает широчайшие возможности в решении всех видов математических задач, в которых используются современные матричные методы.
Что нового мы узнали?
В этом уроке мы научились:
- Создавать элементарные разреженные матрицы.
- Осуществлять преобразование разреженных матриц.
- Работать с ненулевыми элементами разреженных матриц.
- Осуществлять графическую визуализацию разреженных матриц.
- Использовать функции упорядочения.
- Осуществлять разложение Холецкого разреженных матриц.
- Проводить LU-разложение разреженных матриц.
- Вычислять норму, число обусловленности и ранг разреженных матриц.
- Вычислять собственные значения и сингулярные числа разреженных матриц.