logo search
Самоучитель по Maple

24. Пакет Domains.

Пакет Domains

Этот небольшой пакет служит для создания доменов — таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:

>restart;with(Domains):

Domains version 1.0

Initially defined domains are Z and Q the integers and rationale Abbreviations, e.g. DUP for DenseUnivariatePolynomial, also made Warning, the protected names Array, Matrix and Vector have been redefined and unprotected [Array, Matrix, Matrixlnverse, Vector, init, show]

Пакет допускает применение следующих конструкций:

Domains[domain] Doma1ns[evaldomains]

Domains[example] Domains[coding]

Приведенный ниже пример поясняет создание и использование доменов Q (для рациональных

данных) и Z (для целочисленных данных):

> Q['+'](l/2,2/5,3/8);

51/40

> Z[Gcd](660,130);

10

Следующая операция показывает, что домен Z является таблицей:

> type(Z,table);

true

А функция show позволяет вывести полный перечень всех операций, доступных для домена Z:

> show(Z,operations);

Signatures for constructor Z'

note: operations prefixed by -- are not available

*: (Integers,Z) ->Z

* :(Z,Z*) ->Z

+ :(Z,Z*) ->Z

-: (Z,Z) -> Z'

- :Z ->Z

0:Z

1:Z

< :(Z,Z) -> Boolean

<= : (Z.Z) -> Boolean

<> : (Z.Z) -> Boolean

=:(Z.Z) -> Boolean

>: (Z.Z) -> Boolean

>-: (Z.Z) -> Boolean

Abs : Z ->Z

Characteristic : Integers

Coerce : Integers-> Z

Div : (Z.Z) -> Union(Z,.FAIL)

EuclideanNorm : Z -> Integers

Factor : Z -> [Z,.[[Z,Integers]*]]

Gcd : Z* -> Z

Gcdex : (Z,Z,Name) ->Z

Gcdex : (Z,.Z,Name,Name) -> Z

Input : Expression -> Union(Z,.FAIL)

Inv : Z -> Union(Z,FAIL)

Lcm : Z* -> Z

Max : (Z,Z*) -> Z

Min : (Z,.Z*)-> Z

Modp : (Z,.Z) ->Z

Mods : (Z.Z)--> Z

ModularHoraomorphlsm : () -> (Z -> Z.Z)'

Normal : Z -> Z

Output : Z -> Expression

Powmod : (Z,Integers,Z) -> Z

Prime : Z -> Boolean

Quo : (Z,.Z,Name) ->Z

Quo : (Z,.Z) -> Z

Random : О ->Z

RelativelyPrime : (Z,.Z) -> Boolean'

Rem : (Z,.Z,.Name)-> Z

Rera : (Z,Z) -> Z

Sign : Z -> UNIONU,.-l,0)

SmallerEuclideanNorm : (Z,.Z) -> Boolean

Sqrfree : Z ->[Z,.[[Z,.Integers]*]]

Type : Expression -> 'Boolean'

Unit : Z -> Z

UnitNormal : Z -> [Z,.Z,.Z]

Zero : Z -> Boolean

^ : (Z,Integers) -> Z.

Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целою, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная экзотика, чем как реальное средство для оптимизации вычислений. Потребуется время, чтобы показать, что это не так.