> restart:with(RealDomain);
[ℑ, ℜ, ^, arccos, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsin, arcsinh, arctan, arctanh, cos, cosh, cot, coth, csc, csch, eval, exp, expand, limit, ln, log, sec, sech, signum, simplify, sin, sinh, solve, sqrt, surd, tan, tanh]Нетрудно заметить, что этот пакет переопределяет элементарные функции и некоторые другие вычислительные функции таким образом, что вычисления с ними ведутся только с реальными (вещественными, действительными) числами. Это видно из представленных ниже примеров:
> simplify(sqrt(х^2));
|x|> ln(-2);
undefined> solve(х^3-8=0,х);
2Следует отметить, что вычисляемые выражения при работе с данным пакетом надо размещать после его загрузки.
2.1.10. Модификация графической функции plot
В старых версиях Maple функция plot нередко отказывалась строить графики функций, значения которых были комплексными числами. Но уже в Maple 8 алгоритм построения графиков переработан. Теперь, если выражение, по которому строится график, в ходе оценивания дает мнимую часть, она отбрасывается, так что строится график только действительной части выражения. Малые по модулю мнимые части также нередко отбрасываются — впрочем, когда именно не совсем ясно.
Рис. 2.4 дает примеры этого. В верхней части документа строятся графики функции квадратного корня от х, логарифма и синуса. Нетрудно заметить, что для квадратного корня и логарифма строится и впрямь только та часть графиков, где значения функций действительны — при х положительном. Для х< 0 строится только график функции синуса, поскольку синус дает вещественные значения при любом x — как положительном, так и отрицательном.
Рис. 2.4. Особые случаи применения функции plot
Еще более интересен случай, представленный снизу рис. 2.4. Здесь функция задана как решение выражения f, которое дает корни в виде комплексных выражений. Несмотря на это возможные части графика функции f(x) строятся.
2.2. Сложные типы данных
Сложными являются такие типы данных, которые являются представлением множественных и подчас разнохарактерных объектов. Нередко такие данные включают как часть себя рассмотренные выше простые типы данных.
2.2.1. Создание наборов (множеств)
В системе Maple любые выражения могут включаться в наборы, относящиеся к множественным данным. Такие наборы в виде множеств создаются с помощью фигурных скобок { }:
> {a,b,a,a,b,d,e,c,d};
{a, b, с, е, d}> {10,2+3,4+4,8,5,1};
{1, 5, 8, 10}> {`Hello` ,`my`,`friend`};
{friend, Hello, my}Отличительная черта множеств — автоматическое устранение из них повторяющихся по значению элементов. Кроме того, Maple расставляет элементы множеств в определенном порядке — числа в порядке увеличения значения, а символы и строки в алфавитном порядке. Для множеств нет строгого математического определения, и мы будем считать их наборами, удовлетворяющими перечисленным выше признакам.
2.2.2. Создание и применение списков выражений
Для создания упорядоченных наборов — списков — служат квадратные скобки []:
> [10,2+3,4+4,8,5,1];
[10, 5, 8, 8, 5, 1]> [а, b, c, a, a, d, d, e] ;
[a, b, с, a, a, d, d, e]Как нетрудно заметить, элементы списков преобразуются и выводятся строго в том порядке, в каком они были заданы. Списки широко применяются для задания векторов и матриц.
В ряде случаев, например, при подготовке данных для двумерных графиков, возникает необходимость в подготовке парных списков — скажем, координат точек (х, у) графика. Для этого можно использовать функцию zip(f, u, v) или zip(f, u, v, d). Здесь f — бинарная функция, u, v — списки или векторы, d — необязательное значение.
Примеры применения функции zip даны на рис. 2.5. Там же показано применение этих средств для построения точек, представляющих множество действительных чисел на плоскости. Для этого использована функция pointplot из пакета plots.
Рис. 2.5. Представление множества чисел на плоскости
2.2.3. Создание массивов, векторов и матриц
Важным типом данных являются списки или листы. В Maple 9.5 они создаются с помощью квадратных скобок, например:
[1,2,3,4] — список из четырех целых чисел;
[1,2.34,5] — список из двух вещественных и одного целого числа;
[a,b, "Привет"] — список из двух символов (переменных) и строковой константы;
[sin(x), 2*cos(x),a^2-b] — список из трех математических выражений.
Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в следующих формах: