* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Язык программирования системы Maple
1049
• load=memberName – загружает нужный для определений процедуры мо дуль (см. также опцию unload и детали в справке); • operator – объявляет процедуру – функциональный оператор; • system – определяет процедуру как системную, • remember – определяет таблицу памяти для процедуры; • trace – задает трассировку процедуры; • unload=memberName – выгружает нужный для определений процедуры модуль (см. опцию load). Ключ remember обеспечивает занесение результатов обращений к процедуре в таблицу памяти, которая используется при исполнении процедуры. Функция op позволяет вывести таблицу:
> f:=proc(x) options remember; x^3 end: > f(2);
8
> f(3);
27
> op(4,eval(f));
table([2 = 8, 3 = 27]) Ключ remember особенно полезен при реализации итерационных процедур. К примеру, в приведенной ниже процедуре (без использования ключа remember) время вычисления n го числа Фибоначчи растет пропорционально квадрату n:
> f:=proc(n) if n<2 then n else f(n-1)+f(n-2) fi end;
f := proc(n) if n < 2 then n else f(n – 1) + f(n – 2) end if end proc
> time(f(30));
4.891 27.400
> f(30);
832040 Вычисление f(30) по этой процедуре на ПК в системе Maple 8 с процессором Pentium II 350 МГц занимает 27,4 c. На ПК с процессором Pentium IV HT 2,6 ГГц в системе Maple 9.5 время вычисления составляет менее 5 с – см. контроль этого времени с помощью функции time (результат в секундах). Стоит добавить в процедуру ключ remember, и время вычислений резко уменьшится:
> restart; > fe:=proc(n) options remember; if n<2 then n else fe(n-1)+fe(n-2) fi end: > fe(30);
832040
> time(fe(30));
0. При этом вычисление fe(30) происходит практически мгновенно, так как все промежуточные результаты в первом случае вычисляются заново, а во втором они