Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/org/org_matr.htm
Дата изменения: Wed Jun 25 15:51:08 2014 Дата индексирования: Sat Apr 9 23:13:18 2016 Кодировка: Windows-1251 |
Некоторые подпрограммы Библиотеки имеют дело с матрицами специального вида, для которых приняты следующие способы компактного представления в памяти машины.
Симметричная матрица размера n * n представляется в виде вектора длины n ( n + 1 ) / 2, который состоит из элементов нижнего треугольника матрицы, выписанных последовательно по строкам. Тем самым, элемент матрицы a i j может быть найден как элемент этого вектора с индексом k = i (i - 1) / 2 + j для i > или = j ( для i < j элемент a i j = a j i ). Например, для симметричной матрицы A размера 3 * 3 имеем:
| a11 a12 a13 | | a21 a22 a23 | -- > | a31 a32 a33 | | a11 | | a21 | -- > | a22 | | a31 | | a32 | | a33 |
Аналогично, для эрмитовой матрицы размера n * n принято представление в виде комплексного вектора длины n ( n + 1 ) / 2. При этом хранятся лишь элементы на и под главной диагональю по строкам.
Верхняя (нижняя) треугольная матрица размера n * n задается вектором длины n ( n + 1 ) / 2, в котором последовательно записаны столбцы (строки) ненулевого треугольника матрицы. Например, для нижней треугольной матрицы A размера 3 * 3 имеем:
| a11 0 0 | | a21 a22 0 | -- > | a31 a32 a33 | | a11 | | a21 | -- > | a22 | | a31 | | a32 | | a33 |
Ленточная квадратная матрица размера n * n с K нижними и m верхними ненулевыми кодиагоналями задается прямоугольной матрицей размера n * (K + 1 + m), в первых K столбцах которой расположены нижние кодиагонали, в (K+1) - ом столбце - главная диагональ, а в последних m столбцах - верхние кодиагонали. Например, для ленточной матрицы A размера 5 * 5 c K = 2 и m = 1 имеем:
| a11 a12 0 0 0 | | a21 a22 a23 0 0 | | a31 a32 a33 a34 0 | -- > | 0 a42 a43 a44 a45 | | 0 0 a53 a54 a55 | | 0 0 a11 a12 | | 0 a21 a22 a23 | -- > | a31 a32 a33 a34 | | a42 a43 a44 a45 | | a53 a54 a55 0 |
Симметричная ленточная матрица размера n * n с K нижними и K верхними ненулевыми кодиагоналями задается прямоугольной матрицей размера n * (K+1), в первых K столбцах которой расположены нижние кодиагонали, а в (K+1)-ом столбце - главная диагональ. Например, для симметричной ленточной матрицы A размера 4 * 4 с K=1 имеем:
| a11 a12 0 0 | | a21 a22 a23 0 | | 0 a32 a33 a34 | -- > | 0 0 a43 a44 | | 0 a11 | | a21 a22 | -- > | a32 a33 | | a43 a44 |
Верхняя (нижняя) треугольная ленточная матрица размера n * n с K верхними (нижними) ненулевыми кодиагоналями задается прямоугольной матрицей размера n * (K+1), в первом(последнем) столбце которой расположены элементы главной диагонали, а в последних(первых) K столбцах - верхние(нижние) кодиагонали. Например, для верхней треугольной ленточной матрицы A размера 4 * 4 с K=1 имеем:
| a11 a12 0 0 | | 0 a22 a23 0 | | 0 0 a33 a34 | -- > | 0 0 0 a44 | | a11 a12 | | a22 a23 | -- > | a33 a34 | | a44 0 |
а для нижней треугольной ленточной матрицы B размера 4 * 4 с K=1 имеем:
| b11 0 0 0 | | b21 b22 0 0 | | 0 b32 b33 0 | -- > | 0 0 b43 b44 | | 0 b11 | | b21 b22 | -- > | b32 b33 | | b43 b44 |
Диагональная матрица размера n * n задается вектором длины n, в котором записаны диагональные элементы матрицы. Например, для диагональной матрицы A размера 3 * 3 имеем:
| a11 0 0 | | 0 a22 0 | -- > | 0 0 a33 | | a11 | -- > | a22 | | a33 |