для любого способа необходимо около 150МБ. Таким образом, при
использовании прямой рекурсии потребление памяти несуществен-
но превышает аналогичный показатель в случае обратной рекурсии.
Выигрыш же в быстродействии оказывается весьма существенным.
Так, время работы программы, вычисляющей все элементы матри-
цы координат
Z
, построенной на базе обратной рекурсии, превышает
аналогичный показатель для прямой рекурсии почти в 20 раз.
Рассмотрим теперь реализацию прямого рекурсивного алгоритма
вычисления проекций. Обозначим преобразования (18) как
τ
σ
fs
, где ин-
дексы
f
,
s
и
σ
принимают значения нуль или единица. Если
f
или
s
равны нулю, то
D
1
i
или
D
2
i
соответственно равны единичной матрице.
В противном случае они определяются указанными ранее соотношени-
ями. При
σ
= 1
используются соотношения для вращательного звена,
при
σ
= 0
— для поступательного. С учетом введенных обозначений
очевидна справедливость следующих соотношений:
ˆ
A
l
1
...l
k
k,j,k
+1
=
τ
σ
00
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,j,k
+1
#
, j
= 1
. . . k
−
1;
(19a)
ˆ
A
l
1
...l
k
k,k,k
+1
=
τ
σ
10
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,k,k
+1
#
;
(19б)
ˆ
A
l
1
...l
k
k,k
+1
,k
+1
=
τ
σ
00
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,k
+1
,k
+1
#
.
(19в)
Легко проверить, что матрицы
ˆ
A
l
1
...l
i
ijk
(
j
=
i
+ 1
, . . . , k
)
одинаковы,
поэтому далее будем их обозначать
ˆ
A
l
1
...l
i
i
0
k
. Индекс 0 выбран не случай-
но, ибо для этой матрицы
D
1
i
=
D
2
i
=
E
. Кроме того, проанализировав
преобразования (18), можно заметить, что для любых
j
справедливо
равенство
ˆ
A
l
1
...l
k
−
1
k
−
1
,jk
= ˆ
A
l
1
...l
k
−
1
k
−
1
,j,k
+1
. С учетом сказанного соотношения (19)
запишутся в виде
ˆ
A
l
1
...l
k
k,j,k
+1
=
τ
σ
00
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,j,k
#
, j
= 1
, . . . , k
−
1;
ˆ
A
l
1
...l
k
k,k,k
+1
=
τ
σ
10
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,
0
,k
#
;
ˆ
A
l
1
...l
k
k,
0
,k
+1
=
τ
σ
00
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,
0
,k
,
#
или, совмещая первое и третье равенства, получаем
ˆ
A
l
1
...l
k
k,j,k
+1
=
τ
σ
00
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,j,k
#
, j
= 0
, . . . , k
−
1;
ˆ
A
l
1
...l
k
k,k,k
+1
=
τ
σ
10
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,
0
,k
#
.
На основе вычисленных матриц можно определить величины
ˆ
U
l
1
...l
k
kjk
=
= ˆ
A
l
1
...l
k
kjk
(
k
= 1
, . . . , N, j
= 1
, . . . , k
)
с помощью следующих преобра-
зований:
ˆ
A
l
1
...l
k
kjk
=
τ
σ
01
"
ˆ
A
l
1
...l
k
−
1
k
−
1
,j,k
#
, j
= 1
, . . . , k
−
1;
52 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012. № 1