Дискретные перестановки (Permutations). Решение рекуррентных разностных уравнений (RSolve).
В подпакете Permutations определен ряд функций дискретных перестановок:
- RandomPermutation [n] – случайные перестановки из n элементов;
- Ordering [list] – дает перестановки в установленном списком list порядке;
- ToCycles [perm] – дает циклическую декомпозицию для списка list;
- FromCycles [ {cic1, cic2,…}] – возвращает перестановки из циклических декомпозиций cic1, cic2,…;
- PermutationQ [list] – возвращает True, если список list представляет перестановки, и False в ином случае.
Работа функций поясняется следующими примерами:
<
<
DiscreteMath`Permutations`
RandomPermutation[
16
]
{
16
,
12
,
11
,
5
,
3
,
4
,
9
,
14
,
2
,
8
,
15
,
1
,
13
,
7
,
10
,
6
}
ToCycles[
%
]
{{
16
,
6
,
4
,
5
,
3
,
11
,
15
,
10
,
8
,
14
,
7
,
9
,
2
,
12
,
1
}, {
13
}}
FromCycles[
%
]
{
16
,
12
,
11
,
5
,
3
,
4
,
9
,
14
,
2
,
8
,
15
,
1
,
13
,
7
,
10
,
6
}
Ordering[
%
]
{
12
,
9
,
5
,
6
,
4
,
16
,
14
,
10
,
7
,
15
,
3
,
2
,
13
,
8
,
11
,
1
}
Решение рекуррентных разностных уравнений (RSolve)
Для решения рекуррентных разностных уравнений в подпакет RSolve введены следующие функции:
- RSolve [eqn, a [n], n] – решает рекуррентное уравнение для а [n];
- RSolve [eqn, a, n] – решает рекуррентное уравнение для функции а;
- RSolvet {eqn1, eqn2,…}, {a1, a2,…},n] – решает систему рекуррентных уравнений, представленных списками.
Ниже представлены примеры применения данных функций:
<
<
DiscreteMath`RSolve`
RSolve[a[n
+
1
]
=
=
2
a[n], a[n], n]
{{a[n]
>
2nC
[
1
]}}
RSolve[a[n]
=
=
a[n
-
1
]
+
a[n
-
2
], a[
0
]
=
=
a[
1
]
=
=
1
, a[n], n]
RSolve[ a[
0
]
=
=
a[
1
]
=
=
2
,
(n
+
1
) (n
+
2
) a[n
+
2
]
-
2
(n
+
1
) a[n
+
1
]
-
3
a[n]
=
=
0
, a[n], n]