Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Inf&syst12 (2).doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
310.27 Кб
Скачать

2.3.1Простые типы

К простым типам относят: символьное имя (symbols), индексированное имя (indexed), строка (string), логический (Boolean), целый (integer), дробный (fraction), с плавающей запятой (float), комплексный (complex), алгебраический (algebraic). Типы целый и дробный объединены в тип рациональный (rational). Типы рациональный и с плавающей запятой объединены в тип числовой (numeric). Тип extended_numeric объединяет numeric, infinity, –infinity и undefined (неопределённость).

Символьные имена, индексированные имена, строки и целые кратко были описаны выше.

2.3.1.1fraction.

Дробные числа задаются в виде

[знак]натуральное/натуральное

Здесь в квадратных скобках взят необязательный знак числа. Отметим, что рациональное число (rational) может быть задано отношением переменных содержащих рациональные числа, в частности это отношение может быть дробным числом (fraction).

Примеры дробных и рациональных чисел

> type(1/2, fraction);

true

> type(-1/2, fraction);

true

> type(1, fraction);

false

> type(1, rational);

true

> x:= 1/3: y:=1/2: type(-x/y, fraction);

true

> x:= 1/2: y:= 1/2: type(-x/y, fraction); type(-x/y, rational);

false

true

2.3.1.2float.

(Действительные) числа с плавающей запятой могут задаваться двумя способами

[знак]{неотриц_целое.неотриц_целое | .неотриц_целое | неотриц_целое.}

[знак]мантисса{E | e}[знак]экспонента

Примеры задания десятичных чисел с плавающей запятой.

> x := -1.1; type(x, float);

x := -1.1

true

> x:= .1;

x := 0.1

> x:= 1.;

x := 1.

> -1E-10;

-.1 10-9

Число цифр мантиссы участвующих в вычислениях определяется пакетной переменной Digits. Её исходное значение равно 10. Для увеличения числа цифр участвующих в вычислениях следует присвоить переменной Digits большее значение. Для получения значения с плавающей запятой используется функция evalf[n](x). Необязательный параметр n — точность вычисления значения: число десятичных знаков. Переменная Digits имеет «глобальное значение»: изменяет точность вычислений не только функции evalf, но и других функций имеющих дело с float.

Пример использования переменной Digits

> evalf(1/3);

0.3333333333

> evalf[12](1/3);

0.333333333333

> Digits := 16: evalf(1/3);

0.3333333333333333

2.3.1.3complex.

Комплексные числа имеют вид

a + b*I

Здесь a, b числа типа integer, fraction или float; I — мнимая единица. В зависимости от того, какого типа a и b комплексные числа делятся на подтипы.

Примеры определения различных комплексных чисел

> type(1 + 2*I, complex(integer));

true

> type(1/2 + 2*I, complex(fraction)), type(1/2 + 2*I, complex(rational));

false, true

> type(1/2 + 3/2*I, complex(fraction));

true

> type(1.0 + 2.0*I, complex(float)), type(1.0 + 2/3*I, complex(float));

true, true

> type(1/2 + 3/2*I, complex(float)), type(1/3 + 3/2*I, complex(numeric));

false, true

Для получения реальной и мнимой части могут быть использованы функции Re(x) и Im(x).

2.3.1.4Boolean.

Имеется три значения типа boolean: true, false, FAIL (неопределённая истинность). Maple использует трёхзначную логику. Выражения, имеющие тип boolean, строятся при помощи логических операторов (not, and, xor, or, implies) и операторов отношения (<, <=, >, >=, <>). Логические операторы применяются к логическим подвыражениям; все операторы отношения к числовым (numeric). Операторы отношений = и <> применимы к комплексным числам. Для получения значения логического выражения необходимо воспользоваться функцией evalb.

Примеры логических выражений

1. Примеры выражений с типом numeric

> x:=1: y:= 2: z:= 0:

> A:= evalb(x=z); B :=evalb(x < y);

A := false

B := true

> evalb(x=z) xor evalb(x < y);

true

2. Пример выражений с комплексными числами

> с1:= 2 + 3*I: c2:= 3 + 2*I:

> evalb(c1=c2), evalb(c1<>c2);

false, true

2.3.1.5algebraic.

Алгебраический (algebraic) тип включает типы: «+», «-», «^», complex, extended_numeric, functions, name, indexed, uneval, zppoly, series,… Типы complex, extended_numeric, name (символьное имя) и indexed (индексированное имя) описаны выше.

Тип «+» — это выражения содержащие сумму/разность произведений переменных, функций, радов и других алгебраических подтипов.

Примеры типа «+»; тип третьего выражения не «+»

> type(2*x+z*y-sin(z), `+`), type(z*x+y, `+`), type(x+x, `+`);

true, true, false

Отметим, что nops(2*x+z*y-sin(z)) вернёт 3, а op(2*x+z*y-sin(z)) — 2*x, z*y, -sin(z).

Тип «*» — это выражения содержащие произведение/частное степеней переменных, функций,...

Примеры типа «*»; тип третьего выражения не «*»

> type(x*sin(y), `*`), type(x/sin(y), `*`), type(x^y, `*`);

true, true, false

Отметим, что nops(x*sin(y)) вернёт 2, а op(x*sin(y)) — x, sin(y).

Тип «^» это выражение содержащее степени.

Примеры типа «^»; тип третьего и четвертого выражений не «^»

> type((x+y)^z, `^`), type((x*y)^z, `^`), type(x*y^z, `^`), type(x^z+x, `^`);

true, true, false, false

Отметим, что nops((x+y)^z) вернёт 2, а op((x+y)^z) — x+y, z.

Тип «function» — это выражения вида name([arg1[, arg2,…]).

[Здесь в скобках указаны необязательные элементы — аргументы]

Примеры типа «function»; тип третьего выражения не является типом «function»

> type(f(), function), type(f(x), function), type(x*f(x), function);

true, true, false

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]