И другие программы этой серии
Элементарные разреженные матрицы
Вначале рассмотрим элементарные разреженные матрицы и относящиеся к ним функции системы MATLAB.
Функция spdiags расширяет возможности встроенной функции diag. Возможны четыре операции, различающиеся числом входных аргументов:
• [B,d] = spdiags(A) извлекает все ненулевые диагонали из матрицы À размера m×n. B – матрица размера min(m,n)×p, столбцы которой ð являются ненулевыми диагоналями A. d – вектор длины p, целочисленные элементы которого точно определяют номера диагоналей матрицы A (положительные номера – выше главной диагонали, отрицательные – ниже);
• B = spdiags(A,d) извлекает диагонали, определенные вектором d;
• A = spdiags(B,d,A) заменяет столбцами матрицы B диагонали матрицы À, определенные вектором d;
• A = spdiags(B,d,m,n) создает разреженную матрицу размера m×n, размещая соответствующие столбцы матрицы Â вдоль диагоналей, определяемых вектором d. Пример:
>> A=[1 3 4 6 8 0 0;7 8 0 7 0 0 5; 0 0 0 0 0 9 8 ; 7 6 54 32 0 9 6];
>> d=[1 3 2 2]
>> B = spdiags(A,d)
B =
3644
0077
0900
0699
• S = speye(m,n) возвращает разреженную матрицу размера m×n с единицами на главной диагонали и нулевыми недиагональными элементами;
• S = speye(n) равносильна speye(n,n). Пример:
>> S = speye(4) S =
(1.1) 1
(2.2) 1
(3.3) 1
(4.4) 1
Матрица R = sprand(S) имеет ту же структуру, что и разреженная матрица S, но ее элементы распределены по равномерному закону:
• R = sprand(m,n,density) возвращает случайную разреженную матрицу размера m×n, которая имеет приблизительно density×m×n равномерно распределенных ненулевых элементов (0≤density≤1).
• R = sprand(m,n,density,rc) в дополнение к этому имеет в числе параметров число обусловленности по отношению к операции обращения, приблизительно равное rc. Если вектор rc имеет длину lr ( lr≤min(m,n)), то матрица R имеет rc в качестве своих первых lr сингулярных чисел, все другие значения равны нулю.
Начало в части 1