> f := х -> sqrt(1 + х);
> f(f(0));
√2
> f(f(f(0)));
> (f@@10)(x);
> for k from 1 to 10 do (f@@k)(0) = evalf((f@@k)(0)); od;
3.1.4. Работа с множествами
Множества, относящиеся к первичным понятиям, не являются точно определенными математическими объектами. Можно рассматривать, например, различные множества чисел, множества людей или деревьев и т.д. Будем считать, что они определяют группу неповторяющихся объектов. Для работы с множествами определены следующие бинарные операторы:
• union — включает первый операнд (множество) во второй;
• intersect — создает множество, содержащее общие для операндов элементы;
• minus — исключает из первого операнда элементы второго операнда.
В любом случае в результирующем множестве устраняются повторяющиеся элементы. Примеры вычисления выражений с этими операторами приведены ниже (файл sets):
> {a,a,b,с,с,d} union {e,e,f,g};
{f,g,a,b,e,с,d}
> {a,a,b,с,с,d} intersect {a,c,e,e,f,g};
{a, c}
> {a,a,b,c,c,d} minus {a,d};
{b, c}
Напоминаем, что эти операторы заданы ключевыми словами. Несмотря на фундаментальность понятия множества, множества применяются в конкретных расчетах довольно редко.
3.1.5. Новый оператор in в множествах
Начиная с Maple 8 для удобства работы с множествами был добавлен новый оператор in. Он может использоваться в виде (файл sets):
element in objs
или
element in SetOf(type)
где element — элемент множества или списка objs, type — тип выражения. Применение оператора in поясняет несколько примеров:
> a in {а, b, с, d};
а ∈ {b, а, с, d}
> evalb(%);
true
> 3 in {1,2,3} intersect ({1,2,6} minus {1,4,7});
3 ∈ {2}
> evalb(%);
false
> evalb(1 in '{1,2,3} intersect ({1,2,6} minus {1,4,7})');
false
> is( у in SetOf( real ) ) assuming x :: fraction;
false
> is( x in SetOf( real ) ) assuming x :: fraction;
true
> coulditbe( x in SetOf ( integer ) ) assuming x ::rational;
true
3.1.6. Применение унарных арифметических операторов
Унарные операторы используются с одним операндом. Они могут быть префиксными , если оператор стоит перед операндом, и постфиксными , если он стоит после операнда. К унарным относятся семь операторов, приведенных в табл. 3.2.
Таблица 3.2. Унарные операторы
Обозначение |
Оператор |
+ |
Унарный плюс (префикс) |
- |
Унарный минус (префикс) |
! |
Факториал (постфикс) |
. |
Десятичная точка (префикс или постфикс) |
$ |
Последовательность (префикс) |
not |
Логическое отрицание (префикс) |
&string |
Метка (префикс) |
Примеры применения унарных операторов в Maple 9.5:
> [-x,x+(-x),х+(+х)];
[-x, 0, 2х]
> 20!;
2432902008176640000
> .234;
.234
> 2.34;
2.34
> 2*%;
4.68
> а$3;
а, a, а
3.1.7. Применение оператора % и команды history
Мы уже неоднократно отмечали, что в Maple оператор % обеспечивает подстановку в строку ввода (или в выражение) последнего результата операции, %% — предпоследнего и %%% — третьего с конца. Есть еще одна иногда полезная возможность проследить за ходом частных вычислений внутри документа — применение команды-функции history.
Функция history(expr) или history() создает список переменных вида Oi, где индекс i=1, 2, 3… . Этим переменным можно присваивать значения в диалоговом режиме и отслеживать результаты вычислений. Команда off;, вводимая после использования данной функции, завершает работу с ней. Ниже представлен диалог с применением функции history:
> history();
O1 := 2;
2
O2 := sin(1.);
.8414709848
O3 := O1*O2;
1.682941970
O4 := off;
> %;
history
К сожалению, полученный результат и значения глобальных переменных Oi после завершения работы с данной функцией становятся недоступными, так что практической пользы от ее применения не так уж много. Разумеется, внутри блока history вы можете присвоить результат другой переменной, и он сохранится. При каждом очередном применении функции history нумерация переменных Oi начинается с начала, так что какой-либо преемственности при использовании этой функции нет.
Читать дальше
Конец ознакомительного отрывка
Купить книгу