Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование вычислений. Учебное пособие
.pdf
В зависимости от требований алгоритма, использующего матрицу,
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)
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
