Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование вычислений. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
В зависимости от требований алгоритма, использующего матрицу,
0
0
0
0
0 0 0
0
0 0 0 0
0
0 0 0 0
0
0
0
0
0
ее можно хранить строками (рис.4, а), столбцами (рис. 4, б), или хранение может быть разным для нижнего и верхнего треугольников матрицы (рис. 4, в, г). В последнем случае, при раздельном хранении верхнего и нижнего треугольников, главная диагональ обычно хранится отдельно.
0 0
0
0
по строкам
n
0 0
0
0
0
а) строчное б) столбцовое
0
0
0
0
0
0
по столбцам
n
0
0
0
n
по строкам
по столбцам
по строкам
по столбцам
n
0 0 0
0
0
0
0 0
в) строчно-столбцовое
г) столбцово-строчное
Рис. 4. Способы хранения матрицы
Заметим, что если матрица симметричная, то можно хранить только один, например, нижний треугольник матрицы (строками или столбцами).
31
Рассмотрим описанные выше форматы хранения на примере ленточ-
63 64 65 66 67 68 69
74 75 76 77 78 79
85 86 87 88 89
96 97 98 99
 
9 9
7m
9 7
9 3
0 0 0 11 12 13 14
0 0 21 22 23 24 25
0 31 32 33 34 35 36
41 42 43 44 45 46 47
52 53 54 55 56 57 58
63 64 65 66 67 68 69
74 75 76 77 78 79 0
85 86 87 88 89 0 0
96 97 98 99 0 0 0
ной матрицы A, изображенной на рис. 5.
11 12 13 14
21 22 23 24 25
31 32 33 34 35 36 41 42 43 44 45 46 47
A
52 53 54 55 56 57 58
Матрица A имеет размерность
Рис. 5. Ленточная матрица
и ширину ленты
. В случае строчного (или столбцового) формата матрица будет храниться в виде мас­сива a размерности
, а в случае строчно-столбцового (или столбцово­строчного) – в виде совокупности трех массивов di, al, au, где di – век­тор диагональных элементов; al и au – прямоугольные матрицы размер­ностью
, в которых хранятся нижний и верхний треугольники соот­ветственно. При этом дополнение матрицы нулями происходит в соответ­ствии с форматом (см. рис. 3).
Строчный формат хранения:
a
32
Строчно-столбцовый формат хранения:
0 0 0
0 0 21
0 31 32
41 42 43
52 53 54
63 64 65
74 75 76
85 86 87
96 97 98
0 0 0
0 0 12
0 13 23
14 24 34
25 35 45
36 46 56
47 57 67
58 68 78
69 79 89
11223344556677
88
99
21 31 41
32 42 52
43 53 63
54 64 74
65 75 85
76 86 96
87 97 0
98 0 0
0 0 0
12 13 14
23 24 25
34 35 36
45 46 47
56 57 58
67 68 69
78 79 0
89 0 0
0 0 0
11
22
33
44
55
66
77
88
99

al
au
Столбцово-строчный формат хранения:
al
au
di
,
di
.
обобщением ленточного формата на случай, когда матрица не обладает строго диагональной структурой и ненулевые элементы расположены в произвольном порядке, но при этом они сосредоточены у главной диаго­нали, т.е. в каждой строке матрицы ширина ленты может быть разная. В таких матрицах в каждой строке (столбце) можно выделить так называ­емый профиль строки (столбца) – это количество элементов от первого ненулевого элемента в строке (столбце) до диагонального элемента (не включая его). Заметим, что часто всю структуру матрицы, в которой выде­лены профили строк (столбцов), называют профилем матрицы. Таким образом, профиль матрицы определяет положение ненулевых элементов в ней, но не их значения.
3.3. ПРОФИЛЬНЫЙ ФОРМАТ
Профильный формат хранения матриц в некотором смысле является
33
Обычно в профильном формате хранят матрицы, профили строк ниж-
53 54 55 56 0 58 59
63 0 65 66 0 68 0
74 0 0 77 0 79
85 86 0 88 0
95 0 97 0 99
al
au
ia k
1n
1
1 1

ia k ia k
него треугольника которых обязательно совпадают с профилями столбцов верхнего треугольника, т.е. структурно матрица симметрична относи­тельно главной диагонали (хотя сами значения в верхнем и нижнем тре­угольнике на симметричных местах могут быть разные). Пример такой матрицы приведен на рис. 6.
11
22 23 24
32 33 0 35 36
42 0 44 45 0 47
A
профиль
6-й строки
и
совпадают и
Рис. 6. Профильная матрица
Для хранения квадратной матрицы размерности n в профильном
строчно-столбцовом формате используется следующая структура данных:
1. Вещественный массив di, содержащий последовательно диагональ-
ные элементы матрицы.
2. Вещественные массивы al и au для хранения внедиагональных элементов матрицы нижнего (по строкам) и верхнего (по столбцам) тре­угольников матрицы соответственно. Если матрица симметричная не только по структуре, но и по значениям, то массивы хранится только один из них.
3. Целочисленный массив ia для хранения информации о профиле. Элемент
наются элементы k-й строки (столбца) в массивах al и au. Размерность массива ia равна
элемента в массивах al и au. Очевидно:
 
равен индексу (в нумерации с единицы), с которого начи-
, причем
ia n
(столбце) нижнего (верхнего) треугольника.
– размерность массивов al и au;
1
ia n
– количество хранимых элементов в k-й строке
равен индексу первого свободного
34
В качестве примера приведем значения всех массивов для матрицы,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
0

7 6 9 6 3
  
6 6
63
63
64
0
65
65
36
36
46
0
56
56
изображенной на рис. 6.
{11 22 33 44 55 66 77 88 909}
di
{ 1 1 1 2 4 6 9 12 15 19}
ia
{32 42 0 53 54 63 0 65 74 0 0 85 86 0 95 0 97
al
{23 24 0 35 45 36 0 56 47 0 0 58 68 0 59 0 79
au
 
Заметим, что рассмотренная структура данных позволяет легко нахо­дить элементы строки нижнего треугольника (или столбца верхнего), например, для 6-й строки нижнего треугольника 6-го столбца верхнего треугольника хранится по
ia ia
рых находятся соответственно в массивах al и au, начиная с
элемента, значения кото-
ia
позиции. Учитывая, что в профильном формате хранятся элементы от пер­вого ненулевого до диагонального (не включая его), получим
a
a
,
a
,
,
a
a
,
a
,
.
Поиск же элементов столбца нижнего (строки верхнего) треугольника в этой структуре данных не столь прост, и это необходимо учитывать в применяемых алгоритмах.
Аналогично строчно-столбцовому можно определить столбцово- строчный профильный формат. Например, матрица, изображенная на рис. 6, в столбцово-строчном формате будет храниться в следующих мас­сивах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
{11 22 33 44 55 66 77 88 990}
di
{ 1 1 3 6 9 13 15 17 17 17}
ia
{32 42 0 53 63 54 0 74 65 0 85 9
al
{23 24 0 35 36 45 0 47 56 58 59 0 68 0 79
au
0
05 0 86 0 97
 
Как уже говорилось выше, для профильного строчно-столбцового формата легко находить элементы строк нижнего треугольника и столбцов верхнего треугольника. Для профильного столбцово-строчного формата, наоборот, легко находить элементы столбцов нижнего треугольника и строк верхнего треугольника.
35
3.4. РАЗРЕЖЕННЫЙ ФОРМАТ
al
al
au
ja j
al j
au j
ia k
1n
Разреженный формат хранения матриц используется, когда в мат­рице ненулевые элементы расположены в произвольном порядке. Этот формат похож на профильный формат, но хранятся не все элементы внутри профиля, а только ненулевые. Поэтому дополнительно использу­ется еще один массив, содержащий информацию о втором индексе внеди­агонального элемента. Обычно при рассмотрении разреженных матриц ис­пользуют понятие портрет матрицы – местоположение её ненулевых элементов. Чаще всего на практике встречаются матрицы с симметричным относительно главной диагонали портретом (хотя значения на симметрич­ных местах матрицы могут быть разными). Поэтому далее мы будем по­нимать под несимметричной матрицей портретно-симметричную матрицу с несовпадающими значениями на симметричных местах.
Разреженный формат может быть строчным (когда хранятся нену­левые элементы строк и дополнительно номера столбцов), столбцовым (когда хранятся ненулевые элементы столбцов и дополнительно номера строк) или смешанным, когда нижний и верхний треугольники хранятся симметрично (строчно-столбцовый и столбцово-строчный форматы).
Рассмотрим сначала разреженный строчно-столбцовый формат. Для хранения квадратной матрицы размерности n в этом формате использу­ется следующая структура данных.
1. Вещественный массив di, содержащий последовательно диагональ-
ные элементы матрицы.
2. Вещественные массивы элементов матрицы нижнего (по строкам) и верхнего (по столбцам) тре­угольников матрицы соответственно. Если матрица симметричная, то мас­сивы
хранимых внедиагональных элементов нижнего (верхнего) треугольника матрицы. Элемент
меру строки для элемента
рации с единицы), с которого начинаются элементы k-й строки (столбца) в массивах ja, al и au. Размерность массива ia равна
и
совпадают и хранится только один из них.
3. Целочисленный массив ja, содержащий номера столбцов (строк)
4. Целочисленный массив ia. Элемент
равен номеру столбца для элемента
и au для хранения внедиагональных
.
равен индексу (в нуме-
, причем
и но-
36
1
ia n
au
1 1

ia k ia k
1 2 3 4 5 6 7 8 9 10 11
{ 2 7 }
{32 97}
{23 79}

7 6 7 5 2
  
6 5
5 63
6 65
5 36
6 56
мых элементов и часто именно они называются портретом матрицы.
форматов массивы ia, ja, al и au определяются аналогично.
ровки по возрастанию элементов массивов ja, относящиеся к одной строке (или столбцу). Однако рекомендуется всё же хранить их в порядке
возрастания, поскольку тогда можно использовать ускоренный поиск эле­мента по строке (например, дихотомией).
рицы, приведенной на рис. 6:
например, для 6-й строки (столбца) нижнего (верхнего) треугольника хра­нится по
ответственно в массивах al и au, начиная с
ствующие этим значениям номера столбцов (строк) находятся в массиве ja , причем в той же позиции, что и само значение элемента. Таким образом:
равен индексу первого свободного элемента в массивах ja, al и
. Очевидно:
ia n
(столбце) нижнего (верхнего) треугольника.
Заметим, что массивы ia и ja полностью определяют места храни-
Для строчного, столбцового и столбцово-строчного разреженных
Обратим внимание, что формально отсутствует требование сорти-
В качестве примера заполним описанную структуру данных для мат-
{11 99}
di
ia
ja
al
au
Элементы в этой структуре данных можно искать следующим образом,
– в нижнем треугольнике 6-й строки ненулевые элементы
– в верхнем треугольнике 6-го столбца ненулевые элементы
22 33 44 55 66 77 88
{ 1 12}
1 1 2 3 5 7 8 10
2 3 4 3 5 4 5 6 5
42 53 54 63 65 74 85 86 95
24 35 45 36 56 47 58 68 59
ia ia
– размерность массивов ja, al и au;
1
– количество хранимых элементов в k-й строке
элемента, значения которых находятся со-
ia
a al
63
a au
36
,
a al
65
,
a au
56
позиции, а соответ-
,
.
37
Аналогично строчно-столбцовому можно определить столбцово-
1 2 3 4 5 6 7 8 9 10 11
{ 2 7 }
{32 97}
{23 79}
1 2 3 4 5 6 7 8 9 10
{ 1 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
9
9
5
19 20 21 22 23 24 25 26 27 28 29 30 31
3 5 6 8 4 7 9 5 6 8 5 7 9}
63 65 66 67 74 77 79 85 86 88 95 97 99}
1 2 3 4 5 6 7 8 9 10
{ 1 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
5
9
9
19 20 21 22 23 24 25 26 27 28 29 30 31
3 5 6 8 4 7 9 5 6 8 5 7 9}
63 65 66 67 74 77 79 85 86 88 95 97 99}
строчный разреженный формат, а также строчный и столбцовый раз­реженный формат. Например, матрица, изображенная на рис. 6:
– в столбцово-строчном формате будет храниться в массивах
{11 99}
di
ia
ja al au
22 33 44 55 66 77 88
{ 1 12}
1 1 2 3 5 7 8 10
2 3 4 3 5 4 5 6 5
42 53 54 63 65 74 85 86 95
24 35 45 36 56 47 58 68 59
– в строчном формате будет храниться в массивах
2}35 9 13 19 23
jaa
2 3 4 2 3 5 6 2 4 5 7
{ 1 3 4 5 6 8
22 23 24 32 3 35 36 42 44 45 47 53 54 55 56 5
{11 8
26 29ia
3
– в столбцовом формате будет храниться в массивах:
2}35 9 13 19 23
jaa
2 3 4 2 3 5 6 2 4 5 7
{ 1 3 4 5 6 8
22 32 42 23 3 53 63 24 44 54 74 35 45 55 65 8
{11 5
26 29ia
3
38
3.5. ОБЩИЕ РЕКОМЕНДАЦИИ
Мы рассмотрели некоторые из возможных форматов хранения разре­женных матриц. Обратим внимание, что алгоритмы работы с разрежен­ными матрицами должны учитывать используемую для хранения матрицы структуру данных. Например, алгоритм умножения матрицы на вектор не должен пытаться умножать строку матрицы на вектор, если матрица хра­нится в каком-то из столбцовых форматов, а должен умножать каждый столбец на соответствующий элемент вектора и накапливать в векторе ре­зультата сумму. Это позволит существенно сократить время работы алго­ритма.
При необходимости использования специальных форматов, напри­мер, для вызова программ из каких-либо специализированных библиотек, следует внимательно ознакомиться с их описанием в документации биб­лиотеки. Большинство библиотек программ для работы с разреженными матрицами позволяет выбрать наиболее удобный из нескольких форматов, многие библиотеки допускают использование индексных массивов с ну­мерацией как с единицы, так и с нуля.
ГЛАВА 4. ИНТЕРПОЛЯЦИЯ
1n
, ,...,
n
x x x
( )nL x
i
x
( ) ( )
n i i
L x f x
0,
i n
( ) ( )
f x L x
, ,...,
n
x x x
1n
( )...( )( )...( )
( )...( )( )...( )
i i i i i i n
x x x x x x x x
x x x x x x x x
0,
i n
i
x
i
f x
n i i
L x p x f x
4.1. ИНТЕРПОЛЯЦИОННЫЙ ПОЛИНОМ
Рассмотрим классическую задачу интерполяции. Пусть известны зна- чения некоторой функции f в
ется вычислить (естественно, приближенно) значение функции f в произ­вольной точке x. Одним из способов решения этой задачи является построение интерполяционного полинома: полинома который в точках
(называемых в этом случае узлами интерполяции)
принимает заданные значения:
Приближенное вычисление функции f по формуле называют интерполяцией в случае, когда x расположен внутри мини­мального отрезка, содержащего все узлы интерполяции траполяцией, если x расположен вне этого отрезка.
Теорема о существовании и единственности интерполяционного полинома. Существует единственный интерполяционный полином n-й
степени, удовлетворяющий условию (18).
Докажем сначала единственность такого полинома. Предположим, что условию (18) удовлетворяют два различных полинома степени n. Вы­чтем их друг из друга. Полученная разность, очевидно, является полиномом степени не выше n. При этом в узлах интерполяции эта разность по усло­вию (18) равна нулю, т.е. мы получили полином, у которого ных корней, но степень не выше n, что возможно только в случае, когда разность тождественно равна нулю.
Существование докажем конструктивно. Рассмотрим функции
различных точках
,
. (18)
0 1
степени n,
0 1
. Требу-
n
, и экс-
различ-
( )
p x
i
0 1 1
Очевидно, что эти функции по построению являются полиномами сте­пени n, в точке
равны единице и в остальных узлах интерполяции равны
нулю. Поэтому их линейная комбинация с весами
является искомой функцией.
0 1 1
i i n
n
( ) ( )
0
i
40
,
. (19)
(20)
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]