LEC-27 (Материалы к лекциям)
Описание файла
Файл "LEC-27" внутри архива находится в следующих папках: Материалы к лекциям, Lecturessemestr7. Документ из архива "Материалы к лекциям", который расположен в категории "". Всё это находится в предмете "методы решения задач механики сплошных сред" из 7 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "методы решения задач механики сплошных сред" в общих файлах.
Онлайн просмотр документа "LEC-27"
Текст из документа "LEC-27"
13
В.А. Столярчук. “Моделирование систем”. Конспект лекций. Лекция №27Лекция №27
11.2.2. Хранение симметричных ленточных матриц
Пусть А - симметричная положительно определенная матрица порядка N с элементами ai j . Для i -ой строки А , i=1,2,..., N положим:
fi(A)=minj , ai j 0 и i(A)=i- fi (A).
Число fi(A) - это столбцовый индекс первого ненулевого элемента i-ой строки А. Так как диагональные элементы aii - положительны, имеем:
fi(A) i i(A) 0.
Согласно Катхиллу и Макки определим ширину ленты А как:
(A)=max i(A) , 1 i N = max i-j , ai j 0
Число i(A) называется i -ой шириной ленты. Ленту определяем таким образом:
Band(А)=i,j , 0<i-j(A) т.е. как область матрицы, удаленную от главной диагонали не более, чем на (А) позиций.
Поскольку А симметрична в последней формуле используются неупорядоченные пары i,j.
* | * | * | i | fi(A) | i(A) | |||||||||
* | * | 1 | 1 | 0 | ||||||||||
0 | 0 | * | * | * | 2 | 1 | 1 | |||||||
A= | * | 0 | 0 | * | * | 3 | 3 | 0 | ||||||
0 | 0 | * | * | * | * | 4 | 1 | 3 | ||||||
0 | 0 | * | 0 | 0 | * | * | 5 | 3 | 2 | |||||
0 | 0 | 0 | 0 | * | * | * | 6 | 3 | 3 | |||||
| 7 | 5 | 2 |
Эта матрица имеет ширину ленты, равную 3. Матрицы с шириной ленты, равной единице называются трехдиагональными.
Понятие оболочки (профиля)
Оболочка матрицы А, обозначаемая через Env(A) определяется как :
Env(A)= )=i,j, 0 < i-j i (A)
То же самое можно записать посредством столбцовых индексов fi(A):
Env(A)=i,j, fi(A) j< i
Схемы хранения симметричных матриц
Диагональная схема хранения
Распространенным методом хранения симметричной матрицы А является так называемая диагональная схема хранения (Мартин 1971г)
Поддиагонали нижнего треугольника А, составляющие Band (A), вместе с главной диагональю хранятся по строкам в прямоугольном массиве с размерами N( (A)+1)
| a11 | _ | _ | _ | a11 | |||||||||
Cимметрично | a21 | a22 | _ | _ | a21 | a22 | ||||||||
0 | 0 | a33 | _ | 0 | 0 | a33 | ||||||||
a41 | 0 | 0 | a44 | a41 | 0 | 0 | a44 | |||||||
0 | a53 | a54 | a55 | 0 | a53 | a54 | a55 | |||||||
a63 | 0 | 0 | a66 | a63 | 0 | 0 | a66 | |||||||
0 | a75 | a76 | a77 | 0 | a75 | a76 | a77 |
Такая схема хранения очень проста и вполне эффективна, если i(A) не слишком меняется с изменением i.
Профильная схема хранения (схема Дженнингса 1966г)
Хранение производится с помощью двух массивов:
VE - значений ненулевых элементов,
PD - положений диагональных элементов в массиве VE.
Для каждой строки в VE хранится крайний левый ненулевой элемент и все следующие элементы, расположенные справа от него вплоть до диагонального включительно. Поэтому i-я строка матрицы А требует i+1 ячеек для хранения и VE будет состоять из элементов. Добавляя N элементов, необходимых для PD, получим общее количество в ячеек для хранения А. Если лента является полной, т.е. ai j0 для всех i-j i при i>j, то
и требуемый объем памяти будет составлять ячеек.
Для ранее рассмотренной матрицы:
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
1 | a11 | ||||||||||||||||
2 | a21 | a22 | |||||||||||||||
3 | a33 | ||||||||||||||||
4 | a41 | a44 | |||||||||||||||
5 | a53 | a54 | a55 | ||||||||||||||
6 | a63 | a66 | |||||||||||||||
7 | a75 | a76 | a77 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | |
VE | a11 | a21 | a22 | a33 | a41 | 0 | 0 | a44 | a53 | a54 | a55 | a63 | 0 | 0 | a66 | a75 | a76 | a77 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||||||
PD | 1 | 3 | 4 | 8 | 11 | 15 | 18 |
Элемент матрицы ai j исходной матрицы может быть восстановлен по этой схеме следующим образом. Положение ai j в VE определяется значением PD(i)-(i-j), если только PD(i)-(i-j)> PD(i-1). Последнее условие означает, что aij не будет лежать влево от первого ненулевого элемента i-ой строки, иначе ai j =0 и не хранится в VE.
Например, чтобы найти элемент a53 в массиве VE вычисляем
PD(5)-(5-3)=11-2=9>(PD(4)=8) и следовательно a53 хранится в VE(9).
Ещё примеры:
a51 : PD(5)-(5-1)=11-4=7 < PD(4), следовательно a51 = 0
a42 : PD(4)-(4-2)=8-2=6 > PD(3), следовательно a42 = PD(6)
a31 : PD(3)-(3-1)=4-2=2 < PD(2), следовательно a31 = 0
Главное преимущество этой схемы упаковки состоит в следующем. Если в процессе вычислений - (например, при исключении по методу Гаусса) создаются дополнительные ненулевые элементы только вправо от крайнего левого элемента каждой строки, то они могут запоминаться в VE без перемещений всех следующих за ними элементов.
Модификация профильной схемы хранения
Рассмотрим модификацию этой схемы, в которой дополнительные элементы хранятся отдельным вектором.
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||||||||||
1 | a11 | ||||||||||||||||
2 | a21 | a22 | |||||||||||||||
3 | a33 | ||||||||||||||||
4 | a41 | a44 | |||||||||||||||
5 | a53 | a54 | a55 | ||||||||||||||
6 | a63 | a66 | |||||||||||||||
7 | a75 | a76 | a77 |