Назад до змісту 

Матричні функції

10.1 Обчислення транспонованої матриці

Для обчислення транспонованої матриці для матриці $A$ необхідно виконати команду transpose(A) або $\mathbf{A\widehat{ } {T}}$.

Доки немає результату

10.2 Виведення розмірів матриці та вектора

Ви можете вивести число рядків, кількість стовпців або обидва розміри матриці. Для цього треба виконати одну із команд rowNumb(A), colNumb(A) або size(A). Ці ж команди можна застосовувати і для векторного рядка, і для векторного стовпчика.

Доки немає результату

10.3 Обчислення зворотної та приєднаної матриці

Обчислення зворотної матриці

Для обчислення зворотної матриці для матриці $A$ необхідно виконати команду inverse(A) або $\mathbf{A\widehat{ } {(-1)}}$.

Доки немає результату

Доки немає результату

Обчислення приєднаної матриці

Для обчислення приєднаної матриці для заданої матриці $A$ необхідно виконати команду adjoint(A) или $\mathbf{A\widehat{ }{\backslash star}}$.

Доки немає результату

Доки немає результату

10.4 Обчислення рангу та визначника матриці

Для обчислення рангу матриці A необхідно виконати команду rank(A), а обчислення визначника матриці A — команду det(A).

Доки немає результату

Доки немає результату

10.5 Обчислення сполученої матриці

Для обчислення сполученої матриці необхідно виконати команду conjugate(A) або $\mathbf {A\widehat{ } { \backslash ast}}$.

Доки немає результату

10.6 Обчислення SVD-розкладання

Для обчислення SVD-розкладання матриці необхідно виконати команду SVD(A). У результаті буде обчислено три матриці $[U,D,V]$. Матриці $U, V$ - унітарні, матриця $D$ - діагональна: $A=UDV$.

Доки немає результату

10.7 Обчислення узагальненої оберненої матриці

Для обчислення узагальненої оберненої матриці Мурра-Пенроуза необхідно виконати команду genInverse(A) або $\mathbf{A\widehat{ } {+}}$.

Доки немає результату

10.8 Обчислення ядра оператора та ешелонної форми

Обчислення ешелонної форми матриці

Для обчислення ешелонної форми матриці A необхідно виконати команду toEchelonForm(A).

Доки немає результату

Доки немає результату

Обчислення ядра оператора

Для обчислення ядра оператора матриці A необхідно виконати команду kernel(A).

Доки немає результату

Доки немає результату

10.9 Обчислення характеристичного полінома матриці

Для обчислення характеристичного полінома матриці 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].

Доки немає результату

Доки немає результату

10.10 LSU-розкладання

Для обчислення LSU-розкладання матриці $A$ потрібно виконати команду LSU(A).

Результат — це три матриці $[L,S,U]$. Тут $L$ — нижня трикутна матриця, $U$ — верхня трикутна матриця, $S$ — матриця перестановок, помножена на матрицю, яка є зворотною до діагональної матриці. Якщо елементи матриці $A$ з комутативної області $R$, то елементи матриць $L$, $S^{-1}$, $U$ також належать області $R$.

Доки немає результату

Доки немає результату

Доки немає результату

10.11 Розкладання Холетського

Ця розклад виконується з допомогою команди, у якій аргумент - це вихідна матриця: cholesky(A) або cholesky(A,0) При цьому матриця має бути симетричною та позитивно визначеної, лише цьому випадку розкладання буде правильно обчислено.

Результат - це дві нижні трикутні матриці: $[L,S]$, при цьому $A=l*L^{T}$ і $S*L=I$.

Для великих щільних матриць, починаючи з розміру 100х100, можна використовувати швидкий алгоритм, у якому застосовується множення блоків за алгоритмом Винограда-Штрассена: cholesky(A,1).

Доки немає результату

10.12 Розкладання LSUWMdet

Для обчислення LSU розкладання матриці $A$ і розкладання псевдо-зворотної Потрібно виконати команду LSUWMdet(A).

Результат ~ — вектор з п'яти матриць $ [L, S, U, W, M, [[det]] ] $. Тут $L$ і $U$ — нижня і верхня трикутні матриці, $S$ — усічена зважена матриця перестановок, У цьому $A=LSU$ і $ pseudoInverse(A)=(1/det^2)WSM$. det – ненульовий, максимальний за розміром кутовий мінор. Якщо елементи матриці $A$ з комутативної області, всі матриці, крім $S$, також належать цій області.

Доки немає результату

10.13 Розкладання Брюа

Для обчислення розкладання Брюа матриці $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).

10.14 Рішення задач лінійного програмування

Нехай задана цільова функція $\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:

Доки немає результату

Назад до змісту