Дискретные перестановки (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]