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

Матричные функции

9.1 Вычисление транспонированной матрицы

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

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

9.2 Вычисление обратной и присоединенной матрицы

Вычисление обратной матрицы

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

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

Вычисление присоединенной матрицы

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

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

9.3 Вычисление ранга и определителя матрицы

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

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

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

9.4 Вычисление сопряженной матрицы

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

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

9.5 Вычисление SVD-разложения

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

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

9.6 Вычисление обобщенной обратной матрицы

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

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

9.7 Вычисление ядра оператора и эшелонной формы

Вычисление эшелонной формы матрицы

Для вычисления эшелонной формы матрицы A необходимо выполнить команду toEchelonForm(A).

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

Вычисление ядра оператора

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

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

9.8 Вычисление характеристического полинома матрицы

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

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

9.9 LSU-разложение

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

Результат — это три матриц $[L,S,U]$. Здесь $L$ — нижняя треугольная матрица, $U$ — верхняя треугольная матрица, $S$ — матрица перестановок, умноженная на матрицу, которая является обратной к диагональной матрице. Если элементы матрицы $A$ из коммутативной области $R$, то и элементы матриц $L$, $S^{-1}$, $U$ также принадлежат области $R$.

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

9.10 Разложение Холетского

Эта разложение выполняется с помощью команды, в которой аргумент - это исходная матрица: cholesky(A) или cholesky(A,0). При этом матрица должна быть симметричной и положительно определенной, только в этом случае разложение будет правильно вычисленно.

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

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

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

9.11 Разложение 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$, также принадлежат этой области.

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

9.12 Разложение Брюа

Для вычисления разложения Брюа матрицы $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].) Eсли type=0 размер матрицы n1+n2, если type=1 размер матрицы 2 max(n1,n2).

9.13 Решение задач линейного программирования

Пусть задана целевая функция $\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:

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

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