Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алфавит и синтаксис Maple.doc
Скачиваний:
26
Добавлен:
27.04.2019
Размер:
848.38 Кб
Скачать

2.7. Типы объектов и выражений

Под объектами в Maple понимаются сами выражения и их части. Эволюция объектов зависит от их типа. Тип объекта (expr) можно проконтролировать с помощью функции вида

whattype(expr).

Эта функция выводит тип указанного объекта. Здесь под типом объекта понимается тип операции между подобъектами первого уровня, которая образовала этот объект. Перечислим некоторые из типов:

+, -, *, ^ - объекты представляют собой арифметические выражения, составленные из скалярных величин, результатами которых не есть число;

<, >, =, <>, <=, >= - объекты представляют собой неравенства или уравнения;

and, not, or – бинарные выражения;

array – массивы;

table – табличная величина;

indexed – индексированные переменные;

exprseq – последовательность выражений;

float, integer, fraction – арифметическое выражение, результат которого есть число в форме с плавающей точкой (float), в формате целых чисел (integer) или в виде обыкновенной дроби (fraction);

function, procedure – объект состоит из обращения к функции (function) или процедуре (procedure);

set – объект представляет собой множество;

list – список выражений;

series – результат разложения в степенной ряд.

Функция вида type(x, t) - возвращает true (истина) или false (ложь) в зависимости от того, является ли x выражением, имеющим тип t. Возможные значения параметра t не совпадают с типами выражений, возвращаемых оператором whattype. Это связано с тем, что, как правило, любое математическое выражение можно рассматривать как с точки зрения синтаксиса системы, так и со смысловой точки зрения. Например, выражение a*x^2+b*x+c с точки зрения синтаксиса – сумма, а с другой стороны – это полином. Полный список стандартных типов системы, определяемых этим оператором, включает в себя около 100 наименований. Его можно посмотреть в справке командой >?type

Примеры:

> whattype(x - y);

+

> whattype(x^2*f(y));

*

> whattype(1/x);

^

> type( a + b, polynom );

true

> type( a * b, `+` );

false

> type( a and b, `and` );

true

Функция вида

hastype(expr, t)

возвращает значение true (истина) или false (ложь) в зависимости от того, содержит ли выражение expr подвыражение типа t.

Примеры:

> hastype((x+1/2)*exp(3),fraction);

true

> hastype(x^2+3*x+5,radical);

false

> hastype(x^2+3*x+5,`*`);

true

2.8. Преобразование типов выражений

Одни и те же математические выражения в Maple могут быть записанными различными конструкциями. В зависимости от вида конструкции, полученный объект будет иметь определенную форму представления, тип и присущий этому типу набор функций обработки. Например, одно и тоже число может быть записано в системах с различным основанием, координаты точки А(2,3) на плоскости можно задавать в виде последовательности целых чисел 2,3, вещественных чисел 2.,3., набора [2,3], одномерного массива array(1..2,[2,3]) и т.д.

Для преобразования выражения expr к типу form используется команда вида

convert(expr, form, arg3, ...) .

Здесь arg3 и т.д. – необязательные параметры, содержащие, возможно, дополнительные переменные, участвующие в преобразовании.

Отметим, что не каждое выражение можно преобразовать к любому из имеющихся в системе типов. Способ преобразования зависит от типа исходного выражения и типа, к которому это выражение преобразуется. Список допустимых значений второго параметра уже списка всех типов выражений системы и включает в себя около 70 типов. Некоторые из преобразований - преобразования типов данных, например, convert([x,y],set). Другие - преобразование формы, например, команда convert(x^3-3*x^2+7*x+9,horner,x) возвратит (((x ^ 3) *x + 7) *x) + 9.

Примеры:

> convert(1.2315,fraction);

> convert(2463/2000,float);

1.231500000

> convert(12,binary);

1100

> convert(1100,decimal,binary);

12

> t:=taylor(sin(x),x=0);whattype(t);

series

> p:=convert(t,polynom);whattype(p);

+