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

Алгоритмы решения систем линейных уравнений с блочно-ленточными матрицами. Монография

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 3 61
( ) ( 1) *(1 ( 1)) ( 1) * ( 1)
k k bk k hk
δ ≤δ − + − +ε − − ≤
++− +− + ε +
− ε− −+ε− −≤
23
(1 )* ( 2)* ( 2) ( 1)* ( 1)
kk
b b bh
b k hk k hk
−−
++ ε− −+ε− −≤
1
(1 )* ( 2)* ( 2) ( 1)* ( 1)
k
b k hk k hk
++ ε− −+ε− −≤
11
11
22
kk
ks
bb
−−
−−
−−
+ ε+
13
22
1
kk
bb
b
−−
−−
+ ε+
=
Запишем следующую лемму, которая очевидным образом доказывается
методом математической индукции.
Лемма 1. Пусть имеется система неравенств
x
u
k
k – 1*xk – 1
где все числа u
+ v
; k = 2, 3, …
k – 1
, vi, i = 1, 2, … и x1 положительны. Тогда для любого k = 2, 3, …
i
выполняется неравенство
x
u
k
+…+ u
k – 1*uk – 2
*…*u1*x1 + u
k – 1*vk – 2
+ v
k – 1
k – 1*uk – 2
*…*u2*v1 + u
k – 1*uk – 2
*…*u3*v2
.
Используя эту лемму, получим оценку погрешности решения системы
(1 ( 1) ) *(1 ( 2 ) ) *. . . * (1 (1) ) *
bk bk b
≤+− +− + δ+
(1 ( 1) ) *(1 ( 2 ) ) *. . . * (1 ( 2) ) * (1) * (1)
bk bk b h
.........................................................................
(1 (
b
++ 1)) * ( 2) * ( 2) ( 1) * ( 1)k k hk k hk
22
(1 ) *(1 ) * . . . * (1 ) *
bb b
≤ + + + δ+
23
kk
−−
22 2
(1 ) *(1 ) * . . . * (1 ) * (1) * (1)
++ + + ε +
.........................................................................
2
k
2
(1 ... )*
≤ + + + + + δ+
(1 .. . ) * (1) * (1)
++++ + ε +
23 2 1
bb b b
246 2 2
bbb b h
k
1
.........................................................................
k
2
2
22
1 1
bb
−−
δ+ ε +
...................................................................................
1 1
... *(2 * * )*( * ) ...
.....................
1 1
1
k
(2 * * )*( * )
* **
1
b
s
2
1
b
.................................................................
2
k
2
b
k
22 1
−−
bh
1
b
12 1
s
−−
bh
k
32 1
k
−−
*(2 * * )*( * )
bh
2
2
1
s
3
1
h
1
b
1
b
2
k
2
b
62 Б. Я. Штейнберг, О. Б. Штейнберг
-1
1
1
s
b
s
= δ+ ε =
=
11
1sb
+
2
k
s
b
=+ + + ++ =
2
1
b
≤+ ++++++++
≤+
-1 1 2
2 2 21
12
22
1 1 21
1 21
kk k
kk
bb b
bb b
bb
−−
−−
−−
δ δ+ ε +
−−
δ+ε +
−−
24
1 21
1 21
nn
bb
bb
−−
δ δ+ε +
−−
δ+ε +
−−
11
kk
−−
22
1 1
bb
−−
1 1
−−
= δ+ ε
* ** * 2 * *
11
bb
−−
11
kk
−−
22
bb
* ** * 2 * *
11
bb
−−
1
k
hb
hb
s
1
s
=
1
k
s
1
s
12 1
−−
1
s
12 1
−−
2
1
b
s
2
1
b
1
1
s
2
+
Заметим, что при b<1 выполняются
;
1
2
2
1
s
2 * 1 *( 2* 4* ... 2 * )
s
1
=
2
=+ ++++++++
1 *( ... )
1 *( ... )
b
1 2* * .
1
12 1
−−
b bbb b
2 4 8 32
k
b
k
2
24 48888 2
bbbbbbb b
2345678 2
bbbbbbb b
k
2
21
1
b
b
2
k
k
2
Это позволяет продолжить основную цепочку неравенств следующим образом:
1 1 1 1
( ) * * * * (1 2 * * )
k hb
1 1
b bb
−−
*( * * (1 2* ))
h
Вспоминая, что n = 2**k, получаем
1 1
( ) *( * * (1 2* ))
kh
1 1
b bb
*( * * (1 2* ))
h
b
Следует отметить, что при b > 1 проведенные оценки показывают, что оценка погрешности растет как экспонента от размерности матрицы. В этом случае данным алгоритмом пользоваться нецелесообразно, т. к. при
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 3 63
относительно небольших размерностях матриц решению системы нельзя доверять.
Требование b < 1 можно смягчить, например, условием, чтобы произве-
дение соседних элементов матрицы было меньше единицы.
b
* b
< 1 для всех i = 1, 2, …, (n – 1).
i
i +1
В этом случае матрица, которая получается на втором шаге алгоритма,
удовлетворяет условию b < 1.
Если выполняется условие
b
*b
i
i +1*bi +2
*b
< 1 для всех i = 1, 2, …, (n – 3),
i +3
то требование b < 1 выполняется для матрицы, которая получается на треть- ем шаге алгоритма.
4. РАСПАРАЛЛЕЛИВАНИЕ РЕКУРРЕНТНЫХ ЦИКЛОВ
4.1. Рекуррентно вычисляемые переменные и рекуррентные циклы
Рекуррентные циклы будем определять через рекуррентно вычисляе-
мые переменные.
Будем говорить, что переменная в цикле вычисляется рекуррентно, если генератор этой переменной на некоторой итерации цикла k использует (воз- можно, через другие промежуточные переменные) значения, вычисленные этим же генератором на итерации с некоторым номером m, меньшим k.
Пример 11. Рекуррентно вычисляемая индексная переменная A.
for (i = 0; i < N; i++) { A[i+2] = 3*A[i]+B[i]; }
Конец примера.
Пример 12. Переменная A не является рекуррентно вычисляемой, поскольку в данном примере используются элементы массива А, вы­численные до выполнения данного цикла (оба вхождения перемен­ной А не являются информационно зависимыми).
for (i = 0; i < N; i = i+1) { A[i+N] = 3*A[i]+B[i]; }
Конец примера.
Пример 13. Рекуррентно вычисляемая индексная переменная A.
for (i = 0; i < N; i = i+1) { A[i] = B[i] + C[i]; C[i+1] = A[i] + B[i]; }
Здесь на итерации k используется значение переменной C, которое генерируется на предыдущей итерации k – 1. При этом вычисление C на k-ой итерации зависит от значения C, вычисленного на (k – 1)-ой
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 4 65
итерации через переменную A. Аналогично, и переменная С также является рекуррентно вычисляемой.
Конец примера.
Пример 14. Нерекуррентно вычисляемая индексная переменная.
for (i = 0; i < N; i++) {
A[i] = B[i] + C[i];
C[i+1] = A[i+1] + B[i];
}
Здесь на итерации k используется значение переменной C, которое генерируется на итерации k – 1, но используется оно не для вычис­ления C.
Конец примера.
Пример 15. Нерекуррентный цикл.
for (i = 0; i < N; i++) {
A[i+50] = B[i] + C[i];
B[i+50] = A[i];
}
Поучительность этого примера состоит в том, что граф информаци­онных связей тела этого цикла является сильно связным, но пере­менные А и В не являются рекуррентно вычисляемыми.
Конец примера.
Пример 16. Программный цикл с рекуррентно вычисляемой пере-
менной x, реализующий алгоритм Гаусса-Зейделя решения (трех-
мерной) задачи Дирихле в пространстве итераций, имеющем форму
прямоугольного параллелепипеда.
for (It = 0; It < maxIt; It++) {
for (i1 = 1; i1 < N; i1++) {
for (i2 = 1; i2 < N; i2++) {
for (i3 = 1; i3 < N; i3++) {
x[i1, i2, i3] = 1/6*(x[i1–1, i2, i3] +
x[i1+1, i2, i3] + x[i1, i2–1, i3] +
x[i1, i2+1, i3] + x[i1, i2, i3–1] +
x[i1, i2, i3+1]);
}}}}
Конец примера.
66 Б. Я. Штейнберг, О. Б. Штейнберг
Теорема 1 (см.: [54]). Одномерный цикл содержит рекуррентно вычис­ляемые переменные тогда и только тогда, когда существует такая последо­вательность вхождений G1, U1, G2, U2, ..., Gk, Uk, G
= G1, в которой Ui —
k + 1
использования, а Gi — генераторы, и такая последовательность итераций
I1 ≤ I2 ≤...≤ Ik ≤ I дуги (Ui, G
i +1
чем вхождение Ui на I
, что в графе информационных связей есть тривиальные
k +1
) и дуги истинной информационной зависимости (Gi, Ui), при-
итерации использует результат срабатывания гене-
i +1
ратора Gi на Ii итерации.
При раскрутке цикла одному вхождению исходного цикла соответствует много вхождений результирующего фрагмента программы, которые далее будут называться копиями исходного вхождения.
Теорема 2. Переменная в одномерном цикле является рекуррентно вы­числяемой тогда и только тогда, когда в графе информационных связей рас­крутки этого цикла существует путь между копиями некоторого генератора этой переменной.
Далее под рекуррентным циклом понимается цикл, содержащий хотя бы одну рекуррентно вычисляемую переменную. При этом будем рассматри­вать рекуррентно вычисляемые переменные только с регулярной информа­ционной зависимостью.
4.2. Рекуррентно замкнутое множество отображений
Опишем требования к рекуррентным циклам, при выполнении которых эти циклы можно будет преобразовывать к виду, допускающему распараллелива­ние с помощью расматриваемого метода. Ранее предлагались и исследовались алгоритмы распараллеливания рекуррентных циклов [66; 54; 30]. В данной работе предлагаются новые алгоитмы, которые ориентированы на новые ВС.
Пусть D — подмножество Rm и ∆ — множество отображений простран­ства D в D, замкнутое относительно суперпозиции.
Разумеется, суперпозиция любых отображений является отображением, но не обязательно эта суперпозиция будет принадлежать этому же множеству.
Пример 17. Множество многочленов степени не более 2, отобража­ющее отрезок [0, 1] в себя не является замкнутым относительно су­перпозиции, поскольку суперпозиция многочленов степени 2 может иметь степень 4.
Конец примера.
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 4 67
Множество отображений ∆ называется рекуррентно замкнутым при вы-
полнении условий:
1. Множество ∆ замкнуто относительно суперпозиции.
2. Существует такая константа T
суперпозиции
позиции любых двух отображений G1 и G2 из ∆ не более T
3. Существует такая константа T
функции
бой функции G из ∆ для любого x из D не более T
, что время выполнения супер-
суперпозиции
.
, что время вычисления G(x) лю-
.
функции
4. На множестве ∆ вычисление суперпозиции отображений на компью-
тере ассоциативно. (Суперпозиция математических отображений всегда ассоциативна, но это свойство может нарушаться из-за погрешности окру­глений или переполнения регистров на компьютере).
Множество ∆ будем называть N-рекуррентно замкнутым, если выполня-
ются условия 1-3, а вместо условия 4 выполняется:
4а. Если вычисление суперпозиции N отображений из ∆ на компьютере
выполнить с различным порядком взятия операций суперпозиции, то ре­зультаты будут отличаться на незначительную величину.
Описанное множество ∆ введено в [54; 66]. Очевидно, что множество ∆ рекуррентно замкнуто тогда и только тогда,
когда для каждого N это множество N-рекуррентно замкнуто. Далее будем исследовать программные циклы с N итерациями, тело которых может рас­сматриваться как отображение данных из некоторого N-рекуррентно зам­кнутого множества ∆.
Пример 18. Пусть в качестве D будем рассматривать множество
всех векторов длины m с целыми координатами D = Zm, тогда мно-
жество ∆ всех линейных отображений из Zm в Zm вида y = A*x, где
матрица A с целыми элементами, удовлетворяет указанным выше
требованиям.
Конец примера.
Пример 19. Пусть в качестве D будем рассматривать множество
всех векторов длины m с целыми координатами D = Z
ство ∆ всех аффинных отображений из Zm в Zm вида y = A*x + b, где
матрица A с целыми элементами, b — фиксированный вектор из Zm,
удовлетворяет указанным выше требованиям.
Конец примера.
m
, тогда множе-
68 Б. Я. Штейнберг, О. Б. Штейнберг
Пример 20. Пусть в качестве D будем рассматривать множество всех векторов длины m с вещественными координатами D = Rm, тог­да, если погрешность округлений на компьютере достаточно мала, то множество ∆ всех аффинных отображений из Rm в Rm удовлет­воряет указанным выше требованиям. Это свойство выполняется, если количество разрядов в машинном слове достаточно велико для рассматриваемых погрешностей и значений N.
Конец примера.
Пример 21. Множество всех булевых отображений вида f(X) = PXR удовлетворяет перечисленным выше условиям множества ∆ (неслож но проверить, что суперпозиция таких отображений опять является отображением такого же вида).
Конец примера.
Пример 22. Множество всех дробно-линейных отображений удов­летворяет указанным выше требованиям множества ∆, поскольку суперпозиция дробно линейных отображений опять является дробно линейным.
Конец примера.
Будем исследовать распараллеливаемость цикла вида:
for(i = 1; i < N + 1; i++) { x
= Gi(x
i
i-1
)
}
где G
, i = 1, ..., N — отображения из некоторого N-рекуррентно замкнутого
i
множества D.
Пример 23. Следующий рекуррентный программный цикл, в котором вычисляется одно число, может быть распараллелен по такой же схеме, как и цикл, вычисляющий элементы массива.
for(i = 0; i < N; i++) { X = A[i]*X+B[i]; }
Конец примера.
Алгоритмы решения СЛАУ с блочно-ленточными матрицами. Глава 4 69
Пример 24. Матричная рекуррентная зависимость. Следующий ре-
куррентный программный цикл написан на псевдокоде и обобщает
некоторые другие примеры.
for(i = 0; i < N; i++) {
xi = Ai*xi + bi;
}
Здесь Ai — матрица размера m * k, а xi, bi — векторы размеров m и k соответственно.
Конец примера.
Пример 25. Следующий рекуррентный программный цикл, в котором
вычисляются два массива, может быть распараллелен по такой же
схеме, как и цикл, вычисляющий элементы одного массива.
for(i = 1; i < N+1; i++) {
X[i] = A1[i]*X[i-1] + B1[i]*Y[i-1] + C1[i];
Y[i] = A2[i]*X[i-1] + B2[i]*Y[i-1] + C2[i];
}
Конец примера.
4.3. Рекуррентные циклы с несколькими
использованиями рекуррентно вычисляемой
переменной
Всякое вычисление членов рекуррентной последовательности
x
= f(x
n
может быть описано с помощью программного цикла
for (i = k; i < N + k; i++) {
x
}
Если функция f линейна, то и рекуррентную последовательность, и ре-
куррентный цикл называют линейными.
n – 1
= f(x
i
, x
n – 2
i – 1
, …, x
, x
) (9)
nk
,..., x
i – 2
i – k
)
70 Б. Я. Штейнберг, О. Б. Штейнберг
12 1 0
1 21 0
1 0 . 0 0 0 . . (0)
X
       
+ + +− +
  
 
Итак, линейный рекуррентный цикл имеет вид
for (i = k; i < N + k; i++) { X[i] = A1[i]*X[i – 1] + A2[i]*X[i – 2] + ... + Ak[i]*X[i – k] + A0[i]; }
Выполнение этого цикла равносильно решению системы линейных уравнений с ленточной треугольной матрицей
0 1 . 0 0 0 . . (1)
X
. . . . . . .. .
0 0 . 1 0 0 . . ( 1)
() () . () 1 0 . . ()
Ak Ak A k A k
0 ( 1) . ( 1) ( 1) 1 . . ( 1)
Ak A k A k Ak
k
kk
−−
Xk
.
. . . . . . .. .
. . . . . . .. .
Если в формуле (9) x
является вектором, а f — линейное отображение,
n
то в теле соответствующего программного цикла будет несколько операто­ров присваивания.
В следующем примере по линейной рекуррентной формуле вычисляет­ся пара массивов.
Пример 26.
for (i = 1; i < N+1; i++) { X[i] = A[i]*X[i-1] + B[i]*Y[i-1] + C[i]; Y[i] = D[i]*X[i-1] + E[i]*Y[i-1] + F[i]; (10) }
Выполнение такого цикла равносильно решению СЛАУ с блочной двухдиагональной матрицей.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]