for
l := 1
to
m
do
Добавить l в конец list;
a :=
˜
A
l
k
k
;
//Вычисление
˜
T
l
1
...l
k
k
cur_t := prev_t * a;
//Вычисление проекций
for
p := 7
to
10
do
row := idx_to_row_number (list, 0, 0);
col := 10 * (k - 1) + p;
coor_matr[row, col] := g * cur_t * DH[p] * u;
end for
//Рекурсивный вызов функции, если текущее звено не
последнее
if
k != n
ProjPotEnergy (list, cur_t, DH, coor_matr);
end if
Убрать из list последний элемент;
end for
end func
Тогда процедура вычисления проекций полностью может быть вы-
полнена с помощью функции, псевдокод которой представлен далее.
function
CalcProjections (coor_matr)
Создать пустой список list целых чисел;
Создать пустой массив u матриц размера
4
×
4
;
Создать массив a матриц размера
4
×
4
из одного элемента;
Создать массив DH матриц размера
4
×
4
из 10 элементов;
a[0] :=
E
4
;
t :=
E
4
;
for
l := 1
to
10
do
DH[l] :=
DH
l
;
end for
ProjKinEnergy (list, u, a, DH, coor_matr);
ProjPotEnergy (list, t, DH, coor_matr);
end func
Матрица координат coor_matr, заполняемая в процессе работы этой
функции, в случае небольшого числа звеньев (не более четырех) хра-
нится в оперативной памяти вычислительной машины. В противном
случае она представляется в виде файла базы данных, расположенного
на жестком диске вследствие своего большого размера. Так, например,
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012. № 1 55