3.4. Работа с функциями пакетов расширения Maple

3.4.1. Работа с функциями пакета комбинаторики combinat

Функции комбинаторики достаточно известны из обычного курса математики. Но они применяются сравнительно редко. Поэтому они не включены в состав ядра системы, но имеются в пакете расширения combinat. При вызове пакета

> with(combinat);

выводится список имен его функций. Ввиду важности функций комбинаторики для некоторых специальных вычислений приведем их полные определения:

• Chi(x) — гиперболический косинусный интеграл;

• bell(n) — возвращает числа из решения уравнения ехр(ехр(х)-1)= sum(bell(n)/n!*x^n, n=0..infinity), причем для вычислений используется рекуррентное соотношение bell(n+1) = (bell(n)+1)^n;

• binomial(n, r) — возвращает биноминальные коэффициенты, причем, если n и r — целые числа, удовлетворяющие условию 0<=r<=n, то функция возвращает C(n,r)=n!/(r!(n-r)!), а в общем случае C(n, r) = limit(GAMMA(N+1)/ GAMMA(R+1)/GAMMA(N-R+1),R=r,N=n).

• composition(n, k) — возвращает списки композиций для целых неотрицательных n и k;

• fibonacci(n) — возвращает числа Фибоначчи, вычисляемые по рекуррентной формуле F (n) = F(n–1)+F(n–2), где F(0) = 0 и F(1)=1;

• fibonacci(n, х) —возвращает значение полинома Фибоначчи F (n, х) = х F(n–1, х) + F(n–2, х), где F(0, х)–0 и F(1, а)=1, при этом F(n) =F(n, 1);

• firstpart(n) — возвращает первый член последовательности из наборов чисел, сумма которых равна n (в оригинале каноническую последовательность);

• nextpart(1) — возвращает следующую часть указанной выше последовательности;

• lastpart(n) — возвращает последний член последовательности, указанной для функции firstpart;

• prevpart(1) — возвращает предпоследнюю часть канонической последовательности ряда;

• conjpart(1) — возвращает объединенный раздел в канонической последовательности ряда;

• graycode(n) — возвращает список кодов Грея для n-битовых чисел;

• multinomial(n, k1, k2,…, km) — возвращает мультиномиальные коэффициенты;

• numbcomb(n) и numbcomb(n, m) — возвращает число комбинаций;

• numbcomp(n, k) — возвращает число различных упорядоченных наборов из к натуральных чисел, сумма которых равна n;

• numbpart(n) — возвращает список всех возможных сумм, дающих n;

• permute(n) и permute(n, r) — возвращает numbperm(n, r) = nops(permute(n, r));

• powerset(s) — возвращает степень множества в множестве s;

• randcomb(n, m) — возвращает случайную комбинацию;

• randpart(n) — возвращает случайную часть:

• randperm(n) — возвращает случайную композицию;

• stirling1(n, m) — возвращает число Стирлинга первого рода;

• stirling2(n, m) — возвращает число Стирлинга второго рода;

• subsets(L) — задает итерационную процедуру над степенями множества или списка L;

• vectoint(I) — возвращает индекс вектора канонического упорядочения I;

• inttovec(m, n) — возвращает вектор канонического упорядочения для неотрицательных целых чисел m и n.

Следующие примеры (файл combinat) иллюстрируют применение функций комбинаторики:

> choose(4,3);

[[1,2,3], [1, 2, 4], [1,3,4], [2, 3, 4]]

> choose([a,a,b,с],3);

[[a,a,b], [a,a,с],[a,b,c]]

> composition(3,2);

{[2, 1], [1,2]}

> decodepart(4,2);

[1,1,2]

> fibonacci(10);

55

> seq(fibonacci(i),i=1..12);

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144

> partition(5);

[[1, 1, 1, 1, 1], [1, 1, 1, 2], [1, 2, 2], [1, 1, 3], [2, 3], [1, 4], [5]]

> firstpart(3);

[1, 1, 1]

> nextpart(%);

[1,2]

> prevpart(%);

[1, 1, 1]

> lastpart(3);

[3]

> conjpart(%);

[1, 1, 1]

> multinomial(8,2,3,3);

560

> numbcomp(8,5);

35

> numpart(3);

numpart(3)

> numbperm(4);

24

> numbperm([a, b]);

2

> numbperm({a,b,c}, 2);

6

> permute(3,2);

[[1,2], [1,3], [2, 1], [2, 3], [3, 1], [3, 2]]

> permute([a,a,b],2);

[[a,.a], [a,b], [b,a]]

> powerset([a,a,b]);

[[ ], [a], [b], [a,b], [a,a], [a,a,b]]

> randcomb([a,b,c,d],3);

[a,c,d]

> randcomb([a, b, c, d], 3);

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату