Правило найменувань математичних об'єктів
Великі і малі літери всюди різняться. Користувач може надавати будь-які імена для математичних об'єктів. Однак ці імена не повинні співпадати з операторами та константами, які визначені у системі. Крім того, імена об'єктів, множення яких не комутативно, наприклад, векторів і матриць, повинні починатися з великих латинських літер, а всі інші імена об'єктів повинні починатися з малих літер. Це дозволяє відразу після введення автоматично отримувати спрощене вираження.
Наведемо перелік основних операторів системи Mathpar.
clean — видалення всіх введених імен об'єктів. Якщо в операторі перераховані імена об'єктів, видаляються лише об'єкти з цими іменами.
Інфіксні арифметичні оператори
+ — додавання;
- — віднімання;
/ — розподіл;
* — множення (можна використовувати пробіл замість знака множення);
times — некомутативне множення.
Постфіксні арифметичні оператори
! — факторіал;
{ ${x} \widehat{ }{{ }}$} — зведення в ступінь;
Інфіксні оператори порівняння.
$\mathbf{\backslash le}$ — менше або одно;
> — більше;
< — менше;
$\mathbf{\backslash ge}$ — більше або одно;
== — одно;
$\mathbf{\backslash ne}$ — нерівно.
Інфіксні логічні оператори
$\mathbf{ \backslash lor}$ — диз'юнкція;
$\mathbf{ \backslash \&}$ — кон'юнкція;
$\mathbf{ \backslash neg}$ — заперечення.
Основні префіксні оператори
d — символ диференціювання при записі диференціального рівняння;
D — похідна функції: D(f) і D(f, x) — перша похідна $x$; $\mathbf D (f, y\widehat{ }{}3)$ — третя похідна $y$ і т.д. буд.;
expand — перетворення виразу у суму з розкриттям всіх дужок у виразі;
fullExpand — перетворення на суму виразу, що містить логарифмічні, показові та тригонометричні функції;
extendedGCD — розширений алгоритм обчислення найбільшого загального дільника (НОД) поліномів.
GCD — обчислення НОД поліномів;
factor — розклад на множники многочлена;
fullFactor — розклад на множники виразу, що містить логарифмічні та показові функції;
initCond — завдання початкових умов системи лінійних диференціальних рівнянь;
LCM — обчислення найменшого загального кратного (НОК) поліномів;
lim — межа виразу;
print — друк виразів. Аргументами виступають імена виразів, розділені комами. Кожен вираз друкуватиметься на новому рядку;
printS — друк виразів в один рядок, для переходу на наступний рядок потрібно використовувати <<$\backslash$n>>;
plot — побудова графіка функції, яка задана явно; plot3D — побудова графіка функції двох змінних, яка задана явно;
paramPlot — побудова графіка функції, яка задана параметрично;
tablePlot — побудова графіка функції, заданої таблицею аргументів та значень;
prod — добуток (символ $\prod$);
randomPolynom — генерація випадкового полінома;
randomMatrix — генерація випадкової матриці;
randomNumber — генерація випадкового числа;
sequence — завдання послідовності;
showPlots — побудова в одній системі координат графіків функцій, які мають бути визначені раніше;
solveLDE — вирішення систем лінійних диференціальних рівнянь;
systLAE — завдання систем лінійних рівнянь алгебри;
systLDE — завдання систем лінійних диференціальних рівнянь;
sum — сума (символ $\sum$);
time — визначення процесорного часу в мілісекундах;
value — обчислення значення виразу при підстановці заданих виразів або чисел замість змінних кільця.
Оператори процедури, розгалуження та циклу
procedure — оператор оголошення процедури; $if( ){ } else{ }$ — оператор розгалуження;
$while( ) { }$ — оператор циклу з передумовою;
$for( ; ; ) { }$ — оператор циклу з лічильником.
Матриці, їх елементи та матричні оператори
[ , ] — завдання вектора (рядки);
[[ , ], [ , ]] — завдання матриці;
A_{i,j} — (i,j)-елемент матриці A;
A_{i,?} — рядок i матриці A;
A_{?,j} — стовпець j матриці A;
$\backslash$O_{n,m} — нульова матриця розміру $n \times m$ ;
$\backslash$I_{n,m} — $n \times m$ матриця з одиницями на головній діагоналі;
+, -, * — додавання, віднімання, множення;
rowNumb() — число рядків матриці (або вектора); colNumb() — число стовпців матриці (або вектора); size() — обидва розміри матриці (або число компонент вектора);
charPolynom() — характеристичний поліном; kernel() — ядро оператора (нуль-простір);
transpose() або $\mathbf{A}$ $\widehat{ }$ {T} — транспонована матриця; conjugate() або $\mathbf{A}$ $\widehat{ }$ {$\backslash$ ast} — сполучена матриця;
toEchelonForm() — ешелонна (ступінчаста) форма;
det() — визначник;
rank() — ранг матриці;
inverse() або $\mathbf{A}$ $\widehat{ }$ {-1} — обернена матриця;
adjoint() або $\mathbf{A}$ $\widehat{ }$ {$\backslash$ star} — приєднана матриця;
genInverse() або $\mathbf{A}$ $\widehat{ }$ {+} — узагальнена обернена матриця Мурра-Пенроуза; closure або $\mathbf{A}$ $\widehat{ }$ {$\backslash$ times} — замикання, тобто. сума $I+A+A^2+A^3+…$. Для класичних алгебр це еквівалентно $(IA)^{-1}$;
pseudoInverse() і — псевдо-зворотна матриця. Вона, на відміну від матриці Мурра-Пенроуза, задовольняє лише двом із чотирьох тотожностей. Однак вона швидше обчислюється;
LSU() — LSU-розкладання матриці. Результат — вектор із трьох матриць $[L,S,U]$. Тут $L$ — нижня трикутна матриця, $U$ — верхня трикутна матриця, $S$ — матриця перестановок, помножена на зворотну до діагональної матрицю.
LSUWMdet() — Результат — вектор з 6 матриць $[L, S, U, W, M, [[det]] ]$. A=LSU, $pseudoInverse(A)=(1/det^2)WSM$, det - ненульовий максимальний за розміром кутовий мінор.
BruhatDecomposition() — розкладання Брюа матриці. Результат — - вектор з трьох матриць $ [V, D, U] $. Тут $V$ і $U$ — верхні трикутні матриці, $D$ — матриця перестановок, помножена на матрицю, яка є оберненою до діагональної матриці.
SVD() — SVD-розкладання матриці над дійсними числами. Результат — вектор із трьох матриць $[U,D,V^{T}]$. Тут $U, V^{T}$ — ортогональні матриці, $D$ — діагональна матриця.
QR() — QR-розкладання матриці над дійсними числами. Результат — - вектор з двох матриць $ [Q, R] $. Тут $Q$ — ортогональна матриця, $R$ — верхня трикутна матриця.
sylvester(p1,p2,type= 0 or 1) — будується матриця Сильвестра за коефіцієнтами поліномів $p1, p2$. Кільце Z [x, y, z, u] буде розглядатися як кільце Z[u][x,y,z] (кільце від однієї змінної u з коефіцієнтами Z[x,y,z].) Якщо type=0 розмір матриці n1+n2, якщо type=1 розмір матриці 2 max(n1 , N2).
cholesky(A) або cholesky} {(A, 0) ~ — Розкладання Холецького. Матриця A повинна бути симетричною та позитивно визначеною, тільки в цьому випадку розкладання буде правильно обчислено. cholesky(A, 1) можна використовувати у разі великих щільних матриць, починаючи з розміру 100x100. Тут ми використали блокове множення за алгоритмом Винограда-Штрассена. Назад до змісту