Эта глава посвящена первому знакомству с возможностями, которые Вам открывает Mathpar. Язык Mathpar, который описывается ниже, может рассматриваться, как некоторое развитие языка TeX. Язык TeX предназначен для записи математических текстов и подготовке их к публикации. Его можно считать пассивным по сравнению с языком Mathpar, который позволяет делать вычисления, то есть является активным языком математики. Как формулировка задачи, так и результаты вычислений, записываются на языке Mathpar.
Сразу после вычислений Вы видите весь математический текст в виде pdf-изображения, в том виде, как принято представлять математическую запись в научных и технических публикациях.
Этот результат может быть использован дальше несколькими способами. (1) Можно кликнуть по тексту мышкой, и он вернется к исходному виду языка Mathpar. Есть и другой способ переключения изображения текста: при помощи кнопки , расположенной между кнопками <<$\blacktriangleright$>> и <<$+$>>.
(2) Можно кликнуть по изображению математической записи правой кнопкой мышки. В этом случае появится выпадающее меню. Верхнее поле <<Show Math As>> позволяет перейти к выбору языка вывода. Предлагается выбрать TeX или MathML. И затем открыть поле с желаемым текстом.
Например, матрица A, размера $2\times 2$, в Mathpar будет записана так:
A=[[a, b], [c, d]];
в TeX она выглядит так:
A= $\backslash$left(begin{array}{${cc}$}$ a \& b$ $\backslash\backslash c \& d \backslash\backslash$ end{array}$\backslash$right).
В MathML это еще более громоздкое выражение. Полученный текст на языке TeX или MathML можно скопировать и поместить в TeX- или html-файл и использовать для публикации. Кроме того, можно получить обычное изображение и разместить его в любом документе. Это необходимо, например, когда требуется сохранить график функции или решение задачи.
В центральной части экрана находится поле ввода. Здесь Вы размещаете математические выражения. Для решения задачи надо нажать на кнопку <<${\blacktriangleright}$>>, которая расположена над полем ввода. Кроме того, можно использовать сочетание клавиш Ctrl+Enter. Например, можно набрать 2+2 и нажать <<$\blacktriangleright$>>.
В верхней части экрана находятся активные поля $\fbox{Помощь}$ и $\fbox{Руководство}$. Указывая мышкой на эти поля, Вы можете перейти к страницам Помощи или открыть Руководство по языку Mathpar.
На страницах Помощи все поля с примерами являются активными полями, содержащиеся там задачи можно тут же решить и увидеть ответ. Для этого нужно кликнуть по кнопке <<$\blacktriangleright$>> или же можно поставить курсор на поле примера и нажать Ctrl+Enter. Можно копировать текст из любого примера и перенести его в Ваше основное поле ввода. Для этого можно использовать выделение текста мышкой, копирование и вставку этого текста с помощью сочетания клавиш Ctrl+С и Ctrl+V, соответственно, для копирования и вставки.
Текст, который Вы можете вводить в поле ввода, состоит из комментариев и математических операторов.
При вводе комментариев, то есть любого поясняющего текста, необходимо брать его в кавычки. Например: ($"$ это комментарий $"$). Кавычки разрешается использовать только для комментариев. В тексте комментариев можно использовать, например, такие кавычки << >>. Когда в комментариях нужно иметь математическое выражение, как часть комментария, то его необходимо окаймить знаками доллара ($\$$). Например, можно написать такой комментарий: $"$Два обозначения $\$ \backslash exp(x)\$$ и $\$\backslash e \widehat{ }{} x\$$ применяются для экспоненциальной функции.$"$
При вводе математических выражений их необходимо разделять точкой с запятой (;) или текстом комментариев, которые заключены в кавычки. Можно не ставить точку с запятой после последнего оператора. В математических операторах, когда необходимо вставить текст, нужно использовать апострофы: ('текст в математическом операторе' ).
Для вывода результатов можно использовать команду print(), где в качестве аргументов, разделенных запятыми, необходимо указать имена тех выражений, которые требуется вывести. Если среди команд не встретился оператор печати print() или какой-нибудь другой оператор вывода (plot(), prints() и т. д.), то будет выводится результат, полученный в последнем операторе или последней новой переменной.
Команды и операторы начинаются с символа <<back slash>> ($\backslash$).
Кнопка $\fbox{+}$ предназначена для добавления полей ввода. Для удаления поля ввода можно воспользоваться сочетанием клавиш Ctrl+Del или крестиком $\fbox{х}$, расположенным над полем ввода справа.
Кнопка $\fbox{C}$, расположенная над полем ввода справа, предназначена для отмены всех введенных раннее обозначений. Отмена обозначений позволяет получать формулы, в которых стоят символы, а не числа.
В левой верхней части экрана находятся поля, в которых указано текущее окружение и объем оперативной памяти в мегабайтах. Окружение фиксируется числовым множеством и именами основных переменных. Под этим полем расположены различные меню, которые облегчают ввод функций и операторов.
Функции для работы с файлами доступны из раскрывающейся панели «Файлы», расположенной в меню слева.
Существуют следующие возможности для обработки файлов:
1) Сохранение последней выполненной секции в виде файла PDF с помощью кнопки «Сохранить PDF». Можно указать собственный размер страницы (в сантиметрах), по умолчанию указан размер А4 (21х29.7 см).
2) Загрузка текстовых файлов на сервер Mathpar с помощью кнопки «Загрузить файл». Под этой кнопкой расположен список загруженных файлов. Файлы должны содержать выражения на языке Mathpar или таблицы в специальном формате.
Таблица состоит из строки с заголовком (произвольные строки) и строк с числами. Столбцы отделяются знаком табуляции. Функции для работы с таблицами доступны в разделе «Графики и таблицы» (см. также раздел 3.1 Построение графиков функций системы помощи).
3) Ввод выражений на языке Mathpar из загруженного файла с помощью функции fromFile(). Например, создать выражение из загруженного файла myfile.txt и присвоить это выражение переменной $a$ можно командой a = fromFile('myfile.txt').
Приняты следующие обозначения для элементарных функций и констант.
$\backslash$i — мнимая единица,
$\backslash$e — основание натурального логарифма,
$\backslash$pi — число $\pi$, то есть отношение длины окружности к диаметру,
$\backslash$infty — знак бесконечности.
$\backslash$ln — натуральный логарифм,
$\backslash$lg — десятичный логарифм,
$\backslash$sin — синус,
$\backslash$cos — косинус,
$\backslash$tg — тангенс,
$\backslash$ctg — котангенс,
$\backslash$arcsin — арксинус,
$\backslash$arccos — арккосинус,
$\backslash$arctg — арктангенс,
$\backslash$arcctg — арккотангенс,
$\backslash$sh — синус гиперболический,
$\backslash$ch — косинус гиперболический,
$\backslash$th — тангенс гиперболический,
$\backslash$cth — котангенс гиперболический,
$\backslash$arcsh — арксинус гиперболический,
$\backslash$arcch — арккосинус гиперболический,
$\backslash$arcth — арктангенс гиперболический,
$\backslash$arccth — арккотангенс гиперболический,
$\backslash$exp — экспонента,
$\backslash$sqrt — корень квадратный,
$\backslash$abs — абсолютное значение для действительных чисел, модуль для комплексного числа,
$\backslash$sign — знак числа. Возвращает 1, 0, -1, когда число положительное, ноль или отрицательное, соответственно,
$\backslash$unitStep$(x)$ — это функция, которая при $x\geqslant 0$ принимает значение $1$, а при $x<0$ принимает значение $0$;
$\backslash$fact — факториал. Определен для целых положительных чисел. Равносильная запись — <<n!>>.
$\widehat{ }{}$ — степень,
$\backslash$log — логарифм от функции по указанному основанию,
$\backslash$rootOf(x, n) — корень степени n из x,
$\backslash$Gamma — функция Гамма,
$\backslash$Gamma2 — функция Гамма 2,
$\backslash$binomial — число сочетаний.
Для перечисленных выше функций и их композиций можно вычислить значение функции в точке, подставить выражения в функцию вместо аргументов, вычислить предел функции, ее производную. Для этого определены следующие команды.
Для вычисления значения функции в точке необходимо выполнить команду value(f, [var1, var2,…, varn]), где $f$ — функция, а $var1, var2, …, varn$ — значения соответствующих переменных кольца. Для подстановки выражений в функцию необходимо выполнить команду value(f, [func1, func2, …, funcn]), где $f$ — это функция, $func1, func2, …, funcn$ — функции, которые подставляются вместо соответствующих переменных.
Для вычисления предела функции в точке необходимо выполнить команду lim(f, var), где $f$ — это функция, а $var$ — точка, в которой требуется найти предел.
Для вычисления производной функции $f$ по переменной $y$ из кольца $\mathbb{Z}[x, y, z]$ необходимо выполнить команду D(f, y). Для нахождения смешанной производной первого порядка от функции $f$ существует команда D(f, [x, y]), для нахождения производной высших порядков нужно использовать команду $\backslash {\mathbf {D}} (f, [x \widehat{ }{} k, z \widehat{ }{} m, y \widehat{ }{} n])$, где $k, m, n$ указывают, какого порядка по соответствующей переменной вычисляется производная.
Для решения алгебраических уравнений нужно выполнить команду solve. Ниже используется команда настройки окружения <<FLOATPOS=N>>. Она устанавливает число десятичных знаков после запятой $(N)$, которые должны появиться при выводе числового результата приближенных вычислений. Она не связана с процессом вычислений, а только с выводом. По умолчанию $FLOATPOS=2$.
Для решения алгебраических неравенств нужно выполнить команду solve, в которой записано неравенство. Можно решать строгие и не строгие алгебраические неравенства. Открытый интервал обозначается круглыми скобками ( ), а закрытый интервал — квадратными скобками [ ], множество обозначается фигурными скобками { }.
Для решения систем алгебраических неравенств нужно выполнить команду solve[In1, In2, ..., Ink], где $[In1, In2, ..., Ink]$ — вектор неравенств. Система может содержать строгие и не строгие алгебраические неравенства. Открытый интервал обозначается круглыми скобками ( ), а закрытый интервал — квадратными скобками [ ], множество обозначается фигурными скобками { }.
Подмножество, содержащее несколько интервалов можно задать так set((a,b),(c,d]) , где $a,b,c,d$ — числа. Здесь интервал обозначается круглыми скобками ( ), полуоткрытый интервал — одной круглой и одной квадратной скобкой [ ) или ( ], а отрезок — квадратными скобками [ ]. Точка обозначается фигурными скобками { } или как закрытый интервал.
Простые подмножества обозначаются такими же скобками, но перед каждой скобкой необходимо добавлять backslash ($\backslash$). Например $\backslash (3,4.5)\backslash ]$ или $\backslash[7,7\backslash]$. Оператор $\backslash {\mathbf {set}}$ не требуется.
С подмножествами можно совершать операции объединения, пересечения, вычитания, вычисления симметрической разности и дополнения при помощи команд $\backslash cup$ и $\backslash cap$, $\backslash setminus$, $\backslash triangle$ и знака апостроф (') соответственно.
\newpage
Для задания вектора нужно перечислить его элементы в квадратных скобках. Так задаются вектор-строки. Для задания матрицы нужно заключить в квадратные скобки ее вектор-строки, разделенные запятыми, например, $A = [[1, 2], [3, 4]]$.
Подматрицу размера $Nr\times Nc$ матрицы A определяет команда $\backslash submatrix( A,r1,Nr,c1,Nc)$. Здесь $r1,c1$ — это позиция верхнего левого элемента.
Элемент матрицы можно получить, указав номер строки и столбца в нижних индексах у элемента матрицы, а элемент вектора можно получить указав один индекс. Например, можно определить элементы матрицы так: $a=\backslash elementOf(A)$, и потом обращаться к отдельным элементам: $a$_{$i, j$}. Или же определить элементы вектора $B$ так: $b=\backslash elementOf(B)$, затем обращаться к ним $b$_{$i$}.
Можно получить строку $i$ матрицы в виде вектор-строки: $a$_{$i, ?$} или столбец матрицы $j$ в виде вектор-столбца: $a$_{$?, j$}. Имена некоммутативных объектов, например матриц и векторов, положено писать с первым символом backslash ($\backslash$) и заглавной латинской буквы, если предполагается их использовать в таких выражениях, в которых нельзя допускать перестановок. Например $\backslash A *\backslash B - \backslash B *\backslash A$ не приведет автоматически к нулю, в отличие от $A *B - B *A$, что сразу упростится в 0.
Для обозначения нулевой и единичной матрицы используются заглавные буквы $\backslash O$ и $\backslash I$, у которых указаны два индекса, обозначающих число строк и столбцов. С помощью символа $\backslash I$ можно создавать прямоугольные матрицы любого размера, у которых элементы на главной диагонали равны $1$, а остальные элементы нулевые. Например, $\backslash I$_{$2, 3$} и $\backslash O$_{$2, 2$} обозначают матрицы $\left(\begin{array}{ccc} 1&0&0 0&1&0\ \end{array}\right)$ и $\left(\begin{array}{cc} 0&0 0&0\ \end{array}\right)$. Можно задавать нулевые векторы, указывая в индексе число элементов: $\backslash O$_{$3$} обозначает вектор $[0, 0, 0]$, а $I$_{$3$} обозначает вектор $[1, 0, 0]$.
Отметим, что в качестве одномерных и двумерных массивов в языке Mathpar используются векторы и матрицы, например, O$_{n}$, O$_{n,m}$.
Вектор-столбец может быть образован транспонированием вектор-строки, например, $D=[7, 2, 3]^T$ — это вектор-столбец из трех элементов. Кроме обычных арифметических операций (+,-,*) можно вычислять функции от векторов поэлементно.
Mathpar может создавать случайные числа, полиномы и матрицы. Это удобно, когда Вам нужно создать некоторый произвольный сложный объект или требуется получить много случайных объектов.
Для того чтобы получить случайное число, необходимо выполнить команду randomNumber(k), где в аргументе $k$ указывается количество двоичных разрядов в записи случайного числа. Это соответствует примерно $0.3 k$ десятичным цифрам.
Для того чтобы создать случайный полином от s переменных, необходимо выполнить команду randomPolynom(d1, d2,…, ds, dens, bits), где $dens$ — плотность полинома, а $bits$ — количество двоичных разрядов в записи случайного числа, $d1, d2, …, ds$ означают старшие степени переменных. Если $dens=100$, то будет получен полином, у которого все коэффициенты отличны от нуля, всего $(d1+1)(d2+1)..(ds+1)$ членов. Если $dens<100$, то $dens\%$ будут ненулевые, а $(100-dens)\%$ нулевых.
Для того чтобы получить случайную числовую матрицу, необходимо выполнить команду randomMatrix(m, n, dens, bits), где $m$ — количество строк в матрице, $n$ — количество столбцов матрицы, $dens$ — это плотность матрицы в процентах, $bits$ — число двоичных разрядов в записи числовых коэффициентов.
Для того чтобы получить случайную полиномиальную матрицу, необходимо выполнить команду randomMatrix(m, n, dens, d1, d2, …, ds, polDens, polBits)), где $m$ — количество строк в матрице, $n$ — количество столбцов матрицы, $dens$ — это плотность матрицы, $d1, d2,…, ds$ — наибольшие степени переменных полиномов, $polDens$ — плотность полиномов, $polBits$ — количество двоичных разрядов в записи коэффициентов полиномов.