Инструментальные средства математического моделирования. Учебное пособие
.pdf
1.3. Файловые операции
Рис. 1.3. Меню файловых операций
После этой группы команд имеется список документов (файлов с расширением .ms), которые были загружены в систему в предшествующие сеансы работы. Выбрав в этом списке название одного из файлов, можно быстро загрузить его, не тратя времени на открытие файла через команду Open. Последняя группа представлена единственной командой:
• Exit (Alt+F4) – выйти из Maple.
Контрольные вопросы
1.Состав пакета Maple.
2.Назначение команд меню View.
3.Назначение команд меню Window.
4.Форматы файлов в Maple.
5.Назначение команд меню File.
11
2. Типы данных. Встроенные операторы и функции
2.1. Типы данных
Язык Maple (или Maple-язык) является одновременно входным языком общения с Maple и языком ее программирования. При этом при решении подавляющего большинства типовых математических задач от пользователя не требуется знаний даже основ программирования. Обычно достаточно составить алгоритм и подобрать набор нужных для его реализации функций и иных средств
Maple-языка.
В то же время Maple-язык – один из самых мощных языков программирования математических задач, содержащий почти 3000 операторов, команд и функций, входящих в ядро, основную библиотекуипакетыфункцийMaple.БольшинствофункцийMaple написаны на этом языке. Поэтому его знание является определяющим в серьезном изучении Maple.
Алфавит Maple-языка содержит 26 малых латинских букв (от а до z), 26 больших латинских букв (от А до Z), 10 арабских цифр (от 0 до 9) и 32 специальных символа (арифметические операторы +, -, *, /, знак возведения в степень ж и др.). Все они будут рассмотрены в данной главе. Имеется пять пар альтернативных символов (означающих одно и то же):
К специальным одиночным и составным знакам относятся элементы синтаксиса языка:
•% – системная переменная, хранящая результат предшествующей операции;
•: – фиксатор выражения, предотвращающий вывод результата вычисления в ячейку вывода;
•; – фиксатор выражения, дающий вывод результата вычисления в ячейку вывода;
•# – указатель программного комментария;
•« – ограничитель строки (например, 'string');
•:= – оператор присваивания (например, х:=5);
•: ; – пустой оператор;
•:: – указатель типа переменной (например, n::integer или z::complex);
12
2.1.Типы данных
•\ – знак обратного деления, который имеет множественные значения в зависимости от контекста.
Комментарии в программе, не выводимые в ячейки вывода, за-
даются после символа #. В них допустимо использовать все символы кодовых таблиц, в том числе при вводе русскоязычных комментариев. Применение последних для идентификаторов (имен) объектов недопустимо.
Выражение в системе Maple – это объект, соответствующий обычному математическому выражению. Оно может содержать операторы, операнды и функции с параметрами. Для выполнения любых математических операций необходимо обеспечить ввод в систему исходных данных, в том числе и математических выражений. Для ввода их и текстовых комментариев служат два соответствующих типа строк ввода. Переключение типа текущей строки ввода осуществляется клавишей F5. Строка ввода математических выражений имеет отличительный символ >, а строка ввода текстов такого признака не имеет.
В строке ввода может располагаться несколько выражений. Фиксаторами, т. е. указанием, что выражение окончено, могут быть символы «;» и «:». Символ «;» фиксирует выражение и задает вывод результатов его вычисления. А символ «:» фиксирует выражение и блокирует вывод результатов его вычисления. Фиксаторы выполняют также функцию разделителей выражений, если в одной строке их несколько. Ввод выражения оканчивается нажатием клавиши Enter.
Maple работает с числами следующего типа: целыми (0, 1, 123, –456 и т. д.), рациональными в виде отношения целых чисел (7/9, –123/127 и т. д.), вещественными с мантиссой и порядком (1.23Е5, 123.4567Е-10). Признаком вещественного числа является десятичная точка (запятая).
Maple может работать с комплексными числами. Мнимая единица в комплексном числе обозначается как I. Функции Re(x) и Im(x) возвращают действительную и мнимую части комплексных чисел.
Например: 5+7*I, Re(5+7*I), Im(5+7*I).
Выражения могут включаться также в наборы. Наборы в виде множеств создаются с помощью фигурных скобок { }.
Пример: {a, b, c, d, e}.
13
2. Типы данных. Встроенные операторы и функции
Отличительная черта множеств – автоматическое устранение из них повторяющихся по значению элементов. Кроме того, Maple расставляет элементы множеств в определенном порядке – числа в порядке увеличения значения, а символы и строки в алфавитном порядке. В дальнейшем, будем считать множества – наборами, удовлетворяющими перечисленным выше признакам.
Для создания упорядоченных наборов – списков – служат квад-
ратные скобки [ ]. Пример: [10,2+3.4+4,8,5,1]; [10,5,8,8,5,1].
Элементы списков преобразуются и выводятся строго в том порядке, в каком они были заданы. Списки широко применяются для задания векторов и матриц. В ряде случаев, например при подготовке данных для двумерных графиков, возникает необходимость в подготовке парных списков – скажем, координат точек (х, у) графика. Для этого можно использовать функцию zip(f, u, v) или zip(f, u, v, d). Здесь f – бинарная функция, u, v –
списки или векторы, d – необязательное значение.
Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в следующих формах:
•аrrау[а..b, sl] – возвращает вектор с индексами от а до b и значениями в одномерном списке s1;
•аrrау[а..b, c..d, s2] – возвращает матрицу с номерами строк от
адо b, номерами столбцов от с до d и значениями в двумерном списке s2.
Векторы и матрицы составляют отдельный тип данных. Эле-
ментами векторов и массивов могут быть константы, переменные, выражения, списки и иные объекты. Эти элементы являются индексированными переменными, положение которых указывается индексами. Возможно также создание многомерных массивов.
Еще одним важным типом множественных данных являются таблицы. Они задают данные с произвольной индексацией. Для создания таблиц служит функция table, которая при вызове в простейшем виде table[] создает шаблон пустой таблицы. Пустая таблица резервирует память под данные. Когда параметром функции table является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации.
Строки как тип данных – это цепочки символов. В частности они используются для создания текстовых комментариев. Строки-
14
2.1. Типы данных
комментарии имеют внутренний разделительный признак, который устанавливается при их вводе (нажатием клавиши F5, которое приводит к исчезновению знака >). В других случаях последовательность символов рассматривается как строка, если она заключена в обратные апострофы, то есть в знаки '. Два апострофа подряд формируют апостроф как знак символьной строки, например `abc``def ` дает строку abc`def. Любое математическое выражение может входить в строку, разумеется, оно при этом не выполняется.
Константы – это именованные объекты, несущие заранее предопределенные значения. Их имена (идентификаторы) также заранее определены и не могут меняться. Подробную информацию о константах можно найти, исполнив команду ?constant.
Обычные числовые константы не имеют имени и представлены просто числами, типы которых были указаны выше. Можно считать, что именем такой константы является само ее значение. Например: в выражении 2*sin(1.25) числа 2 и 1.25 являются числовыми константами. При этом указание десятичной точки делает константу действительным числом – например, 2 – это целочисленная константа, а 2., 2.0 или 1.25 – это уже действительные константы.
Переменные – это объекты, значения которых могут меняться по ходу выполнения документа. Пока мы рассматриваем лишь глобальные переменные, доступные для модификации значений в любом месте документа. Тип переменной в системе Maple определяется присвоенным ей значением – это могут быть целочисленные (integer), рациональные (rational), вещественные (real), комплексные (complex) или строчные (string) переменные и т. д. Переменные могут также быть символьного типа (их значением является математическое выражение) или типа списка (см. далее). Для явного указания типа переменных используется конструкция: name::type, где name – имя (идентификатор) переменной, type – тип переменной, например целочисленный (integer), вещественный с плавающей точкой (float), с неотрицательным значе-
нием (nonneg), комплексный (complex) и т. д.
Переменные задаются своим именем – идентификатором, который должен начинаться с буквы и быть уникальным. Так, ключевые слова языка Maple нельзя использовать в качестве имен переменных. Хотя имена ряда команд и функций можно исполь-
15
2. Типы данных. Встроенные операторы и функции
зовать в качестве идентификаторов переменных, делать это крайне нежелательно. Длина идентификатора не должна превышать 524275 символов.
Имена переменных могут содержать одну букву (например, х, Y или Z) либо ряд букв (Xmin или Хmах). В любом случае имя переменной надо начинать с буквы. Некоторые символы, например знак подчеркивания «_», могут использоваться в именах (например, Var_l, Var_2). Нельзя вводить в имена переменных знаки, обозначающие операторы, – например, а/b или а–b будет истолковано как деление а на b или вычитание из переменной а переменной b. Имена могут задаваться в обратных апострофах. При этом они просто тождественны именам без апострофов.
Строчные и прописные буквы в идентификаторах различаются. Например, Var1 и var1 – это разные переменные.
Для присваивания переменным конкретных значений используется комбинированный символ присваивания «:=», например: n:=1 – переменной n присваивается, целочисленное значение 1; х:=123.456 – переменной х присваивается вещественное значение 123.456; у:=17/19 – переменной у присваивается рациональное значение 17/18; name:='Piter' – переменной name присваивается строковое значение «Piter»; V:=[1,2,3] – переменной V присваивается значение списка чисел [1,2,3]; М:=[[1,2,3],[4,5,8]] – переменной М присваивается значение двумерного массива; f:=х- >х^2 – переменной f присваивается значение функции пользователя f(x)=x^2. Правая часть выражения присваивания определяет тип переменной.
Переменная, имеющая какое-либо значение, занимает в памяти намного больше места, чем неопределенная переменная. Поэтому целесообразно отменять присваивание у неиспользуемых переменных. Это может понадобиться и когда переменную нужно использовать просто как неопределенную переменную. Можно сделать переменную х неопределенной с помощью команды x:=’x’ или выражения вида x:=evaln(x). Для глобального освобождения переменных предназначена команда restart.
2.2. Операторы и операнды
Операторы во входном языке и языке программирования Maple служат для конструирования выражений. Формально операторы представлены своими идентификаторами в виде специальных ма-
16
2.2. Операторы и операнды
тематических знаков, слов и иных имен. Операторы обеспечивают выполнение операций над данными, представленными операндами. Имеется пять основных типов операторов:
•binary – бинарные операторы (двумя операндами);
•unary – унарные операторы (с одним операндом);
•ullary – нульарные операторы (без операнда —до трех пар кавычек);
•precedence – операторы старшинства (включая логические операторы);
•functional – функциональные операторы.
Для данных типа «множество» определены следующие бинарные операторы:
•union – включает первый операнд (множество) во второй;
•intersect – создает множество общих для операндов элементов;
•minus – исключает из первого операнда элементы второго операнда.
Унарные операторы используются с одним операндом. Они
могут быть префиксными, если оператор стоит перед операндом, и постфиксными, если он стоит после операнда. К унарным относятся следующие операторы:
+ – унарный плюс;
– – унарный минус; ; – факториал;
. – десятичная точка; $ – последовательность;
not – логическое отрицание; &string – метка.
Логическиеоператоры указывают на логическую связь величин (или выражений). Они представлены бинарными операторами:
< – меньше; <= – меньше или равно; > – больше;
>= – большее или равно; = – равно; <> – не равно;
and – логическое «и»; or – логическое «или».
Конструкции с этими операторами, такие как х=у, возвращают логическое значение – константу true, если условие выполняется,
17
2.Типы данных. Встроенные операторы и функции
иfalse, если оно не выполняется. Кроме того, к логическим операторам относится унарный оператор not – он представляет логическое «нет». Для возврата логических значений выражений с этими операторами используется функция evalb(условие). Пример: evalb(х=у); .
ВMaple имеется возможность создания операторов с заданными
свойствами с помощью оператора define. Он записывается в следу-
ющей форме: define(oper, property1, property2, …). Здесь ореr – имя определяемого оператора, property1, property2
и т. д. – наименования свойств. В принципе, оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему. Могут быть указаны следующие свойства операторов:
•unary – унарный оператор;
•binary – бинарный оператор;
•diff – дифференциальный;
•linear – линейный оператор;
•multilinear – множественный линейный оператор;
•flat – ассоциативный оператор, для него f(x,f(y,z))=f(f(x,y),z);
•orderless – коммутативный симметричный оператор, т. е. f(x,y)=f(y,x);
•antisymmetric – асимметричный оператор, такой что f(x,y) = =–f(y,x);
•zero–нулевойоператор(например,V:=Vector(5,shape=zero)
задает вектор с 5 нулевыми элементами);
•identity – единичный оператор (например,
M:=Matrix(3,3,shape=identity) задает единичную матри-
цу).
Пример: > define(L, linear);
>L(a*x+b*x+c*x); .
2.3. Математические функции
Mapleимеетполныйнаборэлементарныхматематическихфункций. Все они, кроме арктангенса двух аргументов, имеют один аргумент х, например sin(x). Он может быть целым, рациональным, дробно-рациональным, вещественным или комплексным числом. При обращении к ним элементарные функции возвращают соот-
18
2.3. Математические функции
ветствующее значение и могут быть включены в математические выражения.
Целочисленные функции:
•factorial (n) – функция вычисления факториала (альтернатива – !);
•iquo(a.b) – целочисленное деление а на b;
•irem(a,b) – остаток от деления а на b;
•igcd(a b) – наибольший общий делитель;
•lcm(a,b) – наименьшее общее кратное.
Тригонометрические функции:
•sin – синус;
•cos – косинус;
•tan – тангенс;
•sec – секанс;
•csc – косеканс;
•cot – котангенс.
Обратные тригонометрические функции:
•arcsin – арксинус;
•arccos – арккосинус;
•arctan – арктангенс;
•arcsec – арксеканс;
•arccsc – арккосеканс;
•arccot – арккотангенс.
Степенные и логарифмические функции:
•ехр – экспоненциальная функция;
•ilog10 – целочисленный логарифм по основанию 10 (возвращает целую часть от логарифма по основанию 10);
•ilog – целочисленный логарифм (библиотечная функция, возвращающая целую часть от натурального логарифма);
•ln – натуральный логарифм;
•log – логарифм по заданному основанию (библиотечная функция);
•log10 – логарифм по основанию 10;
•sqrt – квадратный корень.
19
2.Типы данных. Встроенные операторы и функции
Валгоритме вычисления ряда функций заложено сравнение результата с некоторым опорным значением. К таким функциям относятся:
•abs – абсолютное значение числа;
•ceil – наименьшее целое, большее или равное аргументу;
•floor – наибольшее целое, меньшее или равное аргументу;
•frac – дробная часть числа;
•trunc – целое, округленное в направлении нуля;
•round – округленное значение числа;
•signum (х) – знак х (–1 при х < 0, 0 при х = 0 и +1 при х > 0).
Функции комплексного аргумента:
•argument – аргумент комплексного числа;
•conjugate – комплексно-сопряженное число;
•Im – мнимая часть комплексного числа;
•Re – действительная часть комплексного числа;
•роlаr – полярное представление комплексного числа.
Функции для работы со строками:
•lenght(str) – возвращает число символов, содержащихся в строке str;
•substring(str,a..b) – для str возвращает подстроку от а-го символа до b-го;
•cat(strl,str2....) – возвращает строку, полученную объе-
динением строк strl, str2,... (альтернатива – оператор конкатенации в виде точки .);
•SearchText(s.str) – производит поиск подстроки s в строке str и при его успехе возвращает номер позиции s в строке str (при отсутствии s в str функция возвращает 0).
Контрольные вопросы
1.Алфавит Maple-языка.
2.Выражение в системе Maple.
3.Типы данных в системе Maple.
4.Множества и списки.
5.Таблицы.
6.Константы и переменные.
7.Типы операторов в Maple.
8.Математические функции в Maple.
20
