Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
• unary — унарные операторы (с одним операндом);
• nullary — нуль-арные операторы (без операнда — это одна, две и три пары кавычек);
• precedence — операторы старшинства (включая логические операторы);
• functional — функциональные операторы.
Для просмотра операторов и их свойств можно использовать следующие команды вида:
> ?operators[вид];
где вид — название вида оператора, указанное выше. Будет выведена страница справки по операторам заданного вида. А для изучения примеров применения операторов нужно задать и исполнить команду
> ?operators[examples];
Команда
> ?define;
позволяет ознакомиться с функций define. С ее помощью можно определять новые операторы.
3.1.3. Применение бинарных (инфиксных) операторов
Бинарные операторы, именуемые также инфиксными, используются с двумя операндами, обычно размещаемыми по обе стороны от оператора. В ядро Maple включено около трех десятков бинарных операторов. Основные из них перечислены в таблице 3.1. Чуть позже мы рассмотрим и другие бинарные операторы. Примеры вычисления выражений с бинарными операторами (файл ор):
> 2+3-(-4);
9> [2^3,2**3];
[8,8]> 7 mod 5;
2> [[email protected],[email protected]@2];
[3, 3(2)]> [х@х,х@@х];
[x(2), x(x)]> [х$3,х$4];
[х, x, x, x, x, x, x]Таблица 3.1. Бинарные операторы
Обозначение Оператор Обозначение Оператор + Сложение @ Оператор композиции - Вычитание @@ Повторение композиции * Умножение , Разделитель выражений / Деление := Присваивание ** или ^ Возведение в степень .. Задание интервала mod Остаток от деления , Разделитель выражений $ Оператор последовательности &* Некоммутативное умножение . Разделительная точка &<string> Нейтральный оператор || Конкатенация (объединение)> int(х^2,х=1..4);
21> S: = `Hello` || ` my ` || `friend!`;
S := Hello my friend!Оператор композиции @@ может использоваться для создания и вычисления сложных функций, содержащих цепные дроби:
> f:=а->1/(1+а);([email protected]@3)(а);
> f(5);
> g:=а->1/(1+а^2);([email protected]@3)(а);
> g(2);
А вот еще один пример применения этого оператора для составления цепного радикала и вычисления ряда таких цепочек в цикле:
> f := х -> sqrt(1 + х);
> f(f(0));
√2> f(f(f(0)));
> ([email protected]@10)(x);
> for k from 1 to 10 do ([email protected]@k)(0) = evalf(([email protected]@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;
true3.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;
2O2 := sin(1.);
.8414709848O3 := O1*O2;
1.682941970
O4 := off;
> %;
historyК сожалению, полученный результат и значения глобальных переменных Oi после завершения работы с данной функцией становятся недоступными, так что практической пользы от ее применения не так уж много. Разумеется, внутри блока history вы можете присвоить результат другой переменной, и он сохранится. При каждом очередном применении функции history нумерация переменных Oi начинается с начала, так что какой-либо преемственности при использовании этой функции нет.
Функция history может применяться в качестве средства начальной отладки вычислений. Внутри фрагмента программы, заданного функцией history, можно задавать построения графиков. Например, при исполнении фрагмента программы
> history();
O1 := sin(х);
sin(x)O2 := plot(O1,х=0..20) ;
O3:= off;
будет построен график синусоиды. В целом работа с функцией history отличается не слишком высокой стабильностью, так что возможности этой функции пока остаются не слишком востребованными.
3.1.8. Работа с логическими операторами
Логические операторы, именуемые также булевыми, указывают на логическую связь величин (или выражений). Они представлены рядом бинарных операторов, приведенных в табл. 6.3 и реализованы во всех СКМ.
Таблица 3.3. Бинарные логические операторы
Обозначение Оператор < Меньше <= Меньше или равно > Больше >= Большее или равно = Равно о Не равно And Логическое «и» Or Логическое «или»Конструкции с этими операторами, такие как х=у, возвращают логическое значение — константу true, если условие выполняется, и false, если оно не выполняется. Кроме того, к логическим операторам относится унарный оператор not — он представляет логическое «нет». Для возврата логических значений выражений с этими операторами в Maple 9.5 используется функция evalb(условие), например (файл evalb):