Для обчислення транспонованої матриці для матриці $A$ необхідно виконати команду transpose(A) або $\mathbf{A\widehat{ } {T}}$.
Ви можете вивести число рядків, кількість стовпців або обидва розміри матриці. Для цього треба виконати одну із команд rowNumb(A), colNumb(A) або size(A). Ці ж команди можна застосовувати і для векторного рядка, і для векторного стовпчика.
Для обчислення зворотної матриці для матриці $A$ необхідно виконати команду inverse(A) або $\mathbf{A\widehat{ } {(-1)}}$.
Для обчислення приєднаної матриці для заданої матриці $A$ необхідно виконати команду adjoint(A) или $\mathbf{A\widehat{ }{\backslash star}}$.
Для обчислення рангу матриці A необхідно виконати команду rank(A), а обчислення визначника матриці A — команду det(A).
Для обчислення сполученої матриці необхідно виконати команду conjugate(A) або $\mathbf {A\widehat{ } { \backslash ast}}$.
Для обчислення SVD-розкладання матриці необхідно виконати команду SVD(A). У результаті буде обчислено три матриці $[U,D,V]$. Матриці $U, V$ - унітарні, матриця $D$ - діагональна: $A=UDV$.
Для обчислення узагальненої оберненої матриці Мурра-Пенроуза необхідно виконати команду genInverse(A) або $\mathbf{A\widehat{ } {+}}$.
Для обчислення ешелонної форми матриці A необхідно виконати команду toEchelonForm(A).
Для обчислення ядра оператора матриці A необхідно виконати команду kernel(A).
Для обчислення характеристичного полінома матриці A, елементи якої із $R[x_1,…,x_m]$, необхідно задати кільце поліномів $R[x_1,…,x_m]R[t]$ або $R[t,x_1,…,x_m]$, в якому змінна $t$ — це змінна, за якою будується поліном, та виконати команду charPolynom(A). Наприклад, якщо елементи вихідної матриці з кільця Z [x, y], то можна вказати Z [x, y] Z [t] або Z [t, x, y].
Для обчислення LSU-розкладання матриці $A$ потрібно виконати команду LSU(A).
Результат — це три матриці $[L,S,U]$. Тут $L$ — нижня трикутна матриця, $U$ — верхня трикутна матриця, $S$ — матриця перестановок, помножена на матрицю, яка є зворотною до діагональної матриці. Якщо елементи матриці $A$ з комутативної області $R$, то елементи матриць $L$, $S^{-1}$, $U$ також належать області $R$.
Ця розклад виконується з допомогою команди, у якій аргумент - це вихідна матриця: cholesky(A) або cholesky(A,0) При цьому матриця має бути симетричною та позитивно визначеної, лише цьому випадку розкладання буде правильно обчислено.
Результат - це дві нижні трикутні матриці: $[L,S]$, при цьому $A=l*L^{T}$ і $S*L=I$.
Для великих щільних матриць, починаючи з розміру 100х100, можна використовувати швидкий алгоритм, у якому застосовується множення блоків за алгоритмом Винограда-Штрассена: cholesky(A,1).
Для обчислення LSU розкладання матриці $A$ і розкладання псевдо-зворотної Потрібно виконати команду LSUWMdet(A).
Результат ~ — вектор з п'яти матриць $ [L, S, U, W, M, [[det]] ] $. Тут $L$ і $U$ — нижня і верхня трикутні матриці, $S$ — усічена зважена матриця перестановок, У цьому $A=LSU$ і $ pseudoInverse(A)=(1/det^2)WSM$. det – ненульовий, максимальний за розміром кутовий мінор. Якщо елементи матриці $A$ з комутативної області, всі матриці, крім $S$, також належать цій області.
Для обчислення розкладання Брюа матриці $A$ потрібно виконати команду BruhatDecomposition(A).
Результат — - вектор з трьох матриць $ [V, D, U] $. Тут $V$ і $U$ — верхні трикутні матриці, $D$ — матриця перестановок, помножена на матрицю, яка є зворотною до діагональної матриці. Якщо елементи матриці $A$ з комутативної області $R$, то елементи матриць $V$, $D^{-1}$, $U$ також належать області $R$.
\
Інші оператори.
\
pseudoInverse та — псевдо зворотна матриця. Вона, на відміну від матриці Мурра-Пенроуза, задовольняє лише двом із чотирьох тотожностей. Однак вона швидше обчислюється;
SVD — SVD-розкладання матриці над дійсними числами. Результат — вектор із трьох матриць $[U,D,V^{T}]$. Тут $U, V^{T}$ — ортогональні матриці, $D$ — діагональна матриця.
QR — QR-розкладання матриці над дійсними числами. Результат — - вектор з двох матриць $ [Q, R] $. Тут $Q$ — ортогональна матриця, $R$ — верхня трикутна матриця.
sylvesterp1,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).
Нехай задана цільова функція $\sum_{j = 1}^n c_j x_j$ та умови $$\sum_{j = 1}^n a_{ij}x_j\leqslant b_i,\text{ де }i = 1,2,…,m,$$ $$x_j\geqslant 0,\text{ де }j = 1,2,…,n.$$
Визначимо $m\times n$-матрицю $A = (a_{ij})$, $m$-мірний вектор $b = (b_i)$, $n$-мірний вектор $c = (c_j)$ і $n$-мірний вектор $x = (x_j)$.
Тоді цільову функцію можна записати як $c^Tx,$ а умови — у вигляді $$Ax \leqslant b,$$ $$ x \geqslant 0.$$
Для вирішення задач лінійного програмування потрібно виконати команду SimplexMax або SimplexMin. Результат — вектор $x$.
Залежно від типу завдання можливі наступні варіанти виклику команд.
1. Для вирішення задачі $$c^Tx \rightarrow max$$ за умов $$Ax \leqslant b,$$ $$ x \geqslant 0,$$ використовуємо команду SimplexMax(A, b, c).
Якщо цільову функцію необхідно мінімізувати, тобто. $$c^Tx \rightarrow min,$$ використовуємо команду SimplexMin(A, b, c).
Приклад.
Максимізувати $$3x_1 + x_2 + 2x_3$$ за умов $$ x_1 + x_2 + 3x_3 \leqslant 30, 2x_1 + 2x_2 + 5x_3 \leqslant 24, 4x_1 + x_2 + 2x_3 \leqslant 36, x_1, x_2, x_3 \geqslant 0. $$
2. Для вирішення задачі $$c^Tx \rightarrow max$$ за умов $$A_1 x \leqslant b_1,$$ $$A_2 x = b_2,$$ $$ x \geqslant 0,$$ використовуємо команду SimplexMax(A_1,A_2, b_1, b_2, c).
Якщо цільову функцію необхідно мінімізувати, тобто. $$c^Tx \rightarrow min,$$ використовуємо команду SimplexMin(A_1,A_2, b_1, b_2, c).
Приклад.
Максимізувати $$7x_1 + x_3 - 4x_4$$
за умов $$ x_1 - x_2 + 2x_3 - x_4 \leqslant 6, 2x_1 + x_2 - x_3 = -1, \ x_1, x_2, x_3, x_4 \geqslant 0. $$
3. Для вирішення задачі $$c^Tx \rightarrow max$$ за умов $$A_1 x\leqslant b_1,$$ $$A_2 x = b_2,$$ $$A_3 x\geqslant b_3,$$ використовуємо команду SimplexMax(A_1,A_2, A_3,b_1, b_2, b_3,c).
Якщо цільову функцію необхідно мінімізувати, тобто. $$c^Tx \rightarrow min,$$ використовуємо команду SimplexMin(A_1,A_2, A_3,b_1, b_2, b_3, c).
Приклад.
Максимізувати $$x_1 + x_2$$
за умов $$ 4x_1 - x_2 \leqslant 8, 2x_1 + x_2 \leqslant 10, -5x_1 + 2x_2 \geqslant -2, x_1, x_2 \geqslant 0. $$
4. Для вирішення завдання загального виду, як і в попередньому пункті, $$c^Tx \rightarrow max$$ можна обійтися чотирма параметрами. Можна задати матрицю $A$, вектор $b$, цільову функцію $c$ та використовувати команду SimplexMax(A,signs,b,c), де масив цілих чисел $signs$ визначає знаки порівняння: -1 позначає менше або одно , 0 означає одно і 1 означає більше або одно. Має бути $signs$ стільки ж чисел, скільки елементів у векторі $b$.
Якщо цільову функцію треба мінімізувати, тобто $$c^Tx \rightarrow min,$$ використовуємо команду SimplexMin(A,signs,b,c).
Приклад.
Мінімізувати $$-2x_1-4x_2-2x_3$$ за умов $$ -2x_1 + x_2 + x_3 \leqslant 4, - x_1 + x_2 + 3x_3 \leqslant 6, x_1 - 3x_2 + x_3 \leqslant 2, x_1, x_2, x_3 \geqslant 0. $$ In: