Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
Рис. 3.15. Графики функций Бесселя и гамма-функции
3.3.4. Консультант по функциям
Математикам, серьезно работающим с функциями, большую помощь может оказать имеющийся в составе Maple 9.5 консультант по функциям, вводимый командой:
FunctionAdvisor()
FunctionAdvisor(topics, quiet)
FunctionAdvisor(Topic, function, quiet)
Здесь: topics — строковый параметр, задающий вывод тематической информации, quiet — строковый параметр, указывающий на вывод вычислительных данных, Topic — задание темы и function — задание имени функции или класса функций.
Команда FunctionAdvisor() выводит правила применения консультанта по функциям (файл funcadv):
> FunctionAdvisor(); The usage is as follows:
> FunctionAdvisor( topic, function, ... );
where 'topic' indicates the subject on which advice is required, 'function' is the name of a Maple function, and '...' represents possible additional input depending on the 'topic' chosen. To list the possible topics:
> FunctionAdvisor( topics ); A short form usage,
> FunctionAdvisor(function);
with just the name of the function is also available and displays a summary of information about the function.
Следующие примеры показывают вывод определений функций Бесселя:
> FunctionAdvisor(describe, Bessel);
BesselI = Modified Bessel function of the first kind,
BesselJ = Bessel function of the first kind,
BesselK = Modified Bessel function of the second kind,
BesselY = Bessel function of the second kind
> FunctionAdvisor(describe, BesselJ);
BesselJ = Bessel function of the first kind
В следующем примере выводится информация о представлении функции синуса в виде ряда, представленного суммой его членов:
> FunctionAdvisor(sum_form, sin);
Еще один пример показывает вывод интегрального представления синусного интеграла Френеля:
> FunctionAdvisor(integral form, FresnelS);
Представленные примеры дают представление лишь о малой части возможностей консультанта по функциям. С этим мощным средством получения информации о функциях можно дополнительно познакомиться по справке о нем, содержащей множество интересных примеров применения консультанта по функциям.
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);
[a,b,d]> randpart(10);
[2, 8]> randpart(10);
[10]> stirling1(10,5);
-269325> stirling2(10, 5);
42525> S:=subsets({1,2}):
> while not S[finished] do S[nextvalue]() od;
{ } {1} {2} {1,2}> vectoint([1,0,0]);
1> inttovec(6,3);
[1,0,1]3.4.2. Функции пакета структур комбинаторики combstruct
Еще девять функций, относящихся к структурам комбинаторики, содержит пакет combstruct:
> with(combstruct);
[agfeqns, agfmomentsolve, agfseries, allstructs, count, draw, finished, gfeqns, gfseries, gfsolve, iterstructs, nextstruct]Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций (файл combictruct):
> allstructs(Subset({one,two)));
{{ }, {one, two), {two}, {one)}> allstructs(Permutation([x,y,z]),size=2);
[[x,y], [x,z], [x,y], [y,z], [z,x], [z,y]]> count(Subset({1,2,3}));
8> draw(Combination(5),size=4);
{1, 3, 4, 5}> count(Permutation([a,a,b]));
> it :=iterstructs(Permutation([a,a,b]),size=2);
it:= table([finished = false, nextvalue = (proc(0) ... end proc)|)> draw(Partition(9));
[2, 2, 2, 3]> allstructs(Composition(3), size=2);
[[2, 1], [1,2]]3.4.3. Функции пакета теории чисел — numtheory
В обширном пакете numtheory собран ряд функций, относящихся к теории чисел. Их можно просмотреть, используя команду:
> with(numtheory);
Большинство функций этого пакета достаточно просты и заинтересовавшийся читатель вполне в состоянии провести их тестирование самостоятельно.
3.4.4. Пакет для работы с р-адическими числами — padic
Этот весьма специфический пакет содержит следующие функции для работы с р-адическими числами. Команда
> with(padic);
Выводит список имен этого пакета. Ввиду специфичности данных функций их изучение мы оставляем за читателем для самостоятельной работы — если она требует применения таких чисел.
3.4.5. Пакет для работы с гауссовыми целыми числами — GaussInt
Гауссово целое число — это число вида а+I*b, где а и b — любые целые рациональные числа. Таким образом они образуют решетку всех точек с целыми координатами на плоскости комплексных чисел. Пакет GaussInt содержит достаточно представительный набор функций для работы с этими числами: