LEC-25 (Материалы к лекциям), страница 3
Описание файла
Файл "LEC-25" внутри архива находится в следующих папках: Материалы к лекциям, Lecturessemestr7. Документ из архива "Материалы к лекциям", который расположен в категории "". Всё это находится в предмете "методы решения задач механики сплошных сред" из 7 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "методы решения задач механики сплошных сред" в общих файлах.
Онлайн просмотр документа "LEC-25"
Текст 3 страницы из документа "LEC-25"
loc (i, j, ... , ) (location - размещение),
определенной на множестве индексов. Для любой комбинации индексов i, j, ... , элемента исходного множества адресная функция дает адрес этого элемента в записи массива. Разные структуры исходного множества требуют различных адресных функций. Рассмотрим ряд частных примеров.
1. Массив прямоугольной структуры с лексикографическим упорядочением.
Адресная функция в этом случае является функцией индексов
loc (i, j, ... , )= loc (1, 1, ... , 1 )+ Со+ С1 i + С2 j + ... + Сt , (1)
где C0 , C1 , ... , C t - коэффициенты линейной формы, представляющей
адресную функцию;
t - размерность (т.е. число индексов массива).
Обозначим через n1 , n2 , ..., nt , размер исходного массива, соответственно по индексам i , j , ... , .Можно показать, что :
С t = 1
С t-1 = nt
С t -2= nt nt-1
........................
С 2= nt ...... n3
С 1 = nt...... n3 n2
C0 = - (C1 + C2 + ... + Ct )
В loc (1, 1, ... , 1 ) хранится адрес начала записи массива в ЗУ.
Постоянное смещение C0 возникает вследствие того, что индексы i, j, ... , начинаются не с нуля, а с единицы. Объем памяти, необходимый для записи массива описываемой структуры
l1 = n1 n2 n3 ...... nt
Например, при t = 3 будет:
loc (i, j,k )= loc (1, 1,1 )+ Со+ С1 i +С2 j + ... + С3k
Пусть i = n1 = 5 j = n2 = 3 k = n3= 7
C3 =1 C2 =7 C1 = n3 n2 = 21
C0 = - (C1 + C2 + C3 ) = - (21 + 7 + 1) = - 29
loc (1, 1,2 )= - 29 + 211 + 71 + 12 = 1
loc (1, 1,3 )= - 29 + 211 + 71 + 13 = 2
loc (1, 1,7 )= - 29 + 211 + 71 + 17 = 6
loc (1, 2,1 )= - 29 + 211 + 72 + 11 = 7
2. Симметричные матрицы
В большинстве алгоритмических языков высокого уровня стандартом языка предусматривается использование только прямоугольных массивов, в которых присутствуют элементы, соответствующие всем возможным комбинациям индексов. В ряде случаев, однако, учет специфичности структуры матрицы позволяет ограничиться хранением только части ее элементов. Так, при расчетах по МСЭ наибольшие затраты памяти связаны с запоминанием матриц жесткости подструктур и суперэлементов.
Эти матрицы жесткости симметричны, т.е. ai j = a ji и в силу этого достаточно запоминания только элементов ai j , для которых j i .
Если порядок соответствующей матрицы равен n, то число таких элементов
3. Симметричные ленточные матрицы
Матрицы жесткости подструктур при надлежащей нумерации узловых неизвестных приобретают ленточную структуру. Не равными нулю оказываются элементы, расположенные на ( h-1 ) линиях, параллельных главной диагонали ( h - ширина ленты)
a ji = 0 ( j i + h-1, j i - h+1 )
В этом случае с учетом симметрии матриц достаточно ограничиться запоминанием только элементов главной диагонали и ( h-1) наддиагоналей.
Часто для упрощения адресной функции таких матриц не учитывают сокращения длины строки при i > n - h +1 ( i - h+1 < j < i + h-1).
При этом адресная функция принимает вид
loc (i , j)= loc (1,1) - h + i ( h - 1) + j
Подобное представление целесообразно при малых h, так как с ростом этой величины потери памяти на дополнение строк матрицы стремительно возрастают. В этом случае число хранимых элементов матрицы
l3 = n h
В качестве примера можно предложить адресную функцию более совершенного вида, используемую в комплексе КАСКАД-2.
Количество хранимых элементов в этом случае
Эта адресная функция приводит к появлению лишних ячеек, что демонстрируется ниже в последнем примере.
Для записи ленточных верхних треугольных матриц можно использовать этот же метод. Такие матрицы появляются, например, в алгоритме МКЭ в результате выполнения прямого хода методом исключения Гаусса в системе уравнений равновесия подструктуры с симметричной ленточной матрицей.
Иллюстрация приведенных методов хранения матриц:
a11 | a12 | a13 | a14 | a15 | a16 | |
a21 | l1 = n2 | |||||
a31 | a11 a12 a13.... a16 a21 a22... a26 a31 a32... a66 | |||||
a41 | ||||||
a51 | ||||||
a61 | a62 | a63 | a64 | a65 | a66 |
a11 | a12 | a13 | a14 | a15 | a16 | |
a22 | a23 | a24 | a25 | a26 | ||
a33 | a34 | a35 | a36 | |||
a44 | a45 | a46 | a11 a12 a13.... a16 a22 a23... a26 a33 a34... a55 a56 a66 | |||
0 или симметрично | a55 | a56 | ||||
a66 |
j
1
2
3
4
5
6
1 i a11 | a12 | a13 | l3 = n h | |||
1 a21 | a22 | a23 | a24 | |||
1 a31 | a32 | a33 | a34 | a35 | ||
4 | a44 | a45 | a46 | a11 a12 a13 a22 a23... a55 a56 a66 | ||
0 или симметрично 5 0 0 упрощенная адресная функция | a55 | a56 | ||||
6 0 | a66 |
Для сокращения записи матрицы и ускорения ее обработки следует стремиться к минимизации ширины ленты. Однако часто, особенно в конструкциях с вырезами, затруднительно получить малую по сравнению с порядком системы ширину ленты.
В заключение следует упомянуть еще об одном методе уплотнения записи больших матриц, основанном на различном представлении в ЭВМ чисел с фиксированным положением десятичной точки и чисел, представленных в виде мантиссы и порядка. При обычном развороте матрицы с учетом ее структуры (симметричная, ленточная и т.д.) каждая группа подряд идущих нулевых элементов заменяется целым числом, равным количеству таких элементов.
Поскольку это целое число имеет соответствующее представление в памяти, оно может быть автоматически выделено в процессе обработки матрицы, и ее структура будет восстановлена. Объем хранимой информации при таком методе не превышает объема исходной матрицы, при значительном количестве групп нулевых элементов может быть получена большая экономия памяти. Такая форма записи целесообразна для матриц жесткости подструктур, особенно нижних уровней.