Spec-Zone.ru › Octave 7

18.2 Основные функции матриц

: AA = balance (A) ¶
: AA = balance (A, opt) ¶
: [DD, AA] = balance (A, opt) ¶
: [D, P, AA] = balance (A, opt) ¶
: [CC, DD, AA, BB] = balance (A, B, opt) ¶

Балансировка матрицы A для уменьшения числовых ошибок в последующих вычислениях.

Вычисляется AA = DD \ A * DD, в котором AA — матрица, нормы строк и столбцов которой приблизительно равны по величине, и DD = P * D, в котором P — матрица перестановок, а D — диагональная матрица степеней двойки. Это позволяет вычислять выравнивание без потери точности. Результаты вычисления собственных значений обычно улучшаются после балансировки.

Если запрашиваются два выходных значения, balance возвращает диагональную матрицу D и матрицу перестановок P отдельно как векторы. В этом случае, DD = eye(n)(:,P) * diag (D), где n — размер матрицы.

Если запрашиваются четыре выходных значения, вычисляется AA = CC*A*DD и BB = CC*B*DD, в которых AA и BB имеют ненулевые элементы приблизительно одинаковой величины, а CC и DD — пермутированные диагональные матрицы, как в DD для алгебраической задачи на собственные значения.

Вариант балансировки собственных значений opt может быть одним из следующих:

"noperm", "S"

Масштабирование только; перестановки не выполняются.

"noscal", "P"

Только перестановки; масштабирование не выполняется.

Алгебраическая балансировка собственных значений использует стандартные подпрограммы LAPACK.

Балансировка обобщенной задачи на собственные значения использует алгоритм Уорда (SIAM Journal on Scientific and Statistical Computing, 1981).

: bw = bandwidth (A, type) ¶
: [lower, upper] = bandwidth (A) ¶

Вычисление полосы пропускания матрицы A.

Аргумент type — строка "lower" для нижней полосы пропускания и "upper" для верхней полосы пропускания. Если type не указан, возвращаются нижняя и верхняя полоса пропускания матрицы A.

Нижняя/верхняя полоса пропускания матрицы — это количество поддиагоналей/наддиагоналей с ненулевыми элементами.

См. также: isbanded, isdiag, istril, istriu.

: cond (A) ¶
: cond (A, p) ¶

Вычисление числа обусловленности матрицы относительно инверсии в норме p.

cond (A) определяется как norm (A, p) * norm (inv (A), p).

По умолчанию используется p = 2, что подразумевает (относительно медленное) разложение по сингулярным значениям. Другие возможные варианты — p = 1, Inf, "fro", которые обычно быстрее. Более подробная информация о возможных значениях p приведена в norm.

Число обусловленности матрицы характеризует чувствительность операции инверсии матрицы к небольшим изменениям элементов матрицы. В идеале число обусловленности должно быть близко к 1. Большое число указывает на то, что небольшие изменения (например, подтек или ошибка округления) приведут к большим изменениям в результате. В таких случаях результаты вычислений с использованием численных методов вряд ли будут точными.

См. также: condest, rcond, condeig, norm, svd.

: c = condeig (a) ¶
: [v, lambda, c] = condeig (a) ¶

Вычисление чисел обусловленности матрицы относительно собственных значений.

Числа обусловленности — это обратные величины косинусов углов между левыми и правыми собственными векторами; Большие значения указывают на то, что матрица имеет несколько различных собственных значений.

Входной a должен быть квадратной числовой матрицей.

Выходные данные:

  • c — вектор чисел обусловленности собственных значений матрицы a.
  • v — матрица правых собственных векторов матрицы a. Результат эквивалентен вызову [v, lambda] = eig (a).
  • lambda — диагональная матрица собственных значений матрицы a. Результат эквивалентен вызову [v, lambda] = eig (a).

Пример

a = [1, 2; 3, 4];
c = condeig (a)
  ⇒ c =
       1.0150
       1.0150

См. также: eig, cond, balance.

: det (A) ¶
: [d, rcond] = det (A) ¶

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

Возвращает оценку обратного числа обусловленности при запросе.

Примечания по программированию: Для полных матриц используются подпрограммы из LAPACK, а для разреженных матриц — код из UMFPACK.

Для проверки матрицы на вырожденность не следует использовать определитель. Для этого используйте любую из функций, вычисляющих число обусловленности: cond, condest, rcond.

См. также: cond, condest, rcond.

: лямбда = eig (A) ¶
: лямбда = eig (A, B) ¶
: [V, лямбда] = eig (A) ¶
: [V, лямбда] = eig (A, B) ¶
: [V, лямбда, W] = eig (A) ¶
: [V, лямбда, W] = eig (A, B) ¶
: […] = eig (A, balanceOption) ¶
: […] = eig (A, B, algorithm) ¶
: […] = eig (…, eigvalOption) ¶

Вычислите собственные значения (лямбда) и, по желанию, собственные векторы справа (V) и слева (W) матрицы или пары матриц.

Флаг balanceOption может быть одним из:

"balance" (по умолчанию)

Предварительная балансировка включена.

"nobalance"

Отключает предварительную балансировку.

Флаг eigvalOption может быть одним из:

"matrix"

Возвращает собственные значения в диагональной матрице. (по умолчанию, если запрашиваются 2 или 3 выходных значения)

"vector"

Возвращает собственные значения в столбце вектора. (по умолчанию, если запрашивается только 1 выходное значение, например, лямбда = eig(A))

Флаг algorithm может быть одним из:

"chol"

Используйте факторизацию Холецкого B. (по умолчанию, если A симметричная (эрмитова) и B симметричная (эрмитова) положительно определенная)

"qz"

Используйте алгоритм QZ. (используется всякий раз, когда A или B не симметричные)

нет флага chol qz
оба симметричны "chol" "chol" "qz"
по крайней мере один не симметричный "qz" "qz" "qz"

Собственные значения, возвращаемые eig, не упорядочены.

См. также: eigs, svd.

: G = givens (x, y) ¶
: [c, s] = givens (x, y) ¶

Вычислите матрицу вращения Гивенса G.

Матрица Гивенса — это 2x2 ортогональная матрица

G = [ c , s
     -s', c]

такая, что

G * [x; y] = [*; 0]

с x и y скалярами.

Если запрашивается два выходных аргумента, возвращаются коэффициенты c и s, а не матрица вращения Гивенса.

Например:

givens (1, 1)
   ⇒   0.70711   0.70711
       -0.70711   0.70711

Примечание: Матрица Гивенса представляет собой против часовой стрелки вращение 2-мерной плоскости и может быть использована для введения нулей в матрицу перед полной факторизацией.

См. также: planerot, qr.

: S = gsvd (A, B) ¶
: [U, V, X, C, S] = gsvd (A, B) ¶
: [U, V, X, C, S] = gsvd (A, B, 0) ¶

Вычислите обобщенное разложение по единственным значениям (A, B).

Обобщенное разложение по единственным значениям определяется следующими соотношениями:

A = U*C*X'
B = V*S*X'
C'*C + S'*S = eye (columns (A))

Функция gsvd обычно возвращает только вектор обобщенных единственных значений sqrt (diag (C'*C) ./ diag (S'*S)). Если запрошено пять выходных значений, она также вычисляет U, V, X и C.

Если присутствует необязательный третий вход, gsvd строит «разложение экономичного размера», где количество столбцов U, V и количество строк C, S меньше или равно количеству столбцов A. Этот вариант еще не реализован.

Примечание по программированию: код является оболочкой для соответствующих процедур LAPACK dggsvd и zggsvd. Если матрицы A и B обе имеют недостаток ранга, LAPACK вернет неправильную факторизацию. Программисты должны избегать этой комбинации.

См. также: svd.

: [G, y] = planerot (x) ¶

Вычислите матрицу вращения Гивенса для двумерного столбцового вектора x.

Матрица Гивенса — это 2x2 ортогональная матрица

G = [ c , s
     -s', c]

такая, что

y = G * [x(1); x(2)] ≡ [*; 0]

Примечание: Матрица Гивенса представляет собой против часовой стрелки вращение 2-мерной плоскости и может быть использована для введения нулей в матрицу перед полной факторизацией.

См. также: givens, qr.

: x = inv (A) ¶
: [x, rcond] = inv (A) ¶
: […] = inverse (…) ¶

Вычислите обратную матрицу квадратной матрицы A.

Возвращает оценку обратной величины числа обусловленности, если запрос, в противном случае предупреждает об плохо обусловленной матрице, если обратная величина числа обусловленности мала.

В общем случае лучше избегать прямого вычисления обратной матрицы. Например, это быстрее и точнее решать системы уравнений (A*x = b) с y = A \ b, а не с y = inv (A) * b.

Если вызывается со разреженной матрицей, то в общем случае x будет полной матрицей, требующей значительно больше памяти. Избегайте формирования обратной матрицы разреженной матрицы, если это возможно.

inverse — это псевдоним и может быть использовано идентично вместо inv.

См. также: ldivide, rdivide, pinv.

: x = linsolve (A, b) ¶
: x = linsolve (A, b, opts) ¶
: [x, R] = linsolve (…) ¶

Решить систему линейных уравнений A*x = b.

Без опций эта функция эквивалентна оператору левого деления (x = A \ b) или функции матричного левого деления (x = mldivide (A, b)).

Octave обычно анализирует свойства матрицы A и выбирает решатель, который лучше всего подходит для данной матрицы. Передав структуру opts функции linsolve, вы можете сообщить Octave непосредственно о матрице A. В этом случае Octave пропустит анализ матрицы и перейдёт непосредственно к решению системы линейных уравнений.

Предупреждение: Если матрица A не обладает свойствами, указанными в структуре opts, то результат будет неточным, и предупреждение не будет выдано. В случае сомнений, позвольте Octave проанализировать матрицу и выбрать подходящий решатель, так как этот шаг занимает мало времени и результат кешируется, чтобы он выполнялся только один раз на каждую систему линейных уравнений.

Возможные поля opts (значение устанавливается в true/false):

LT

A – нижняя треугольная матрица

UT

A – верхняя треугольная матрица

UHESS

A – верхняя эрмитова матрица (в настоящее время не имеет значения)

SYM

A – симметричная или комплексно-эрмитова матрица (в настоящее время не имеет значения)

POSDEF

A – положительно определённая матрица

RECT

A – общая прямоугольная матрица (в настоящее время не имеет значения)

TRANSA

Решить A'*x = b если значение true, вместо A*x = b

Необязательный второй выход R — обратная числовая характеристика условия A (ноль, если матрица вырожденная).

См. также: mldivide, matrix_type, rcond.

: type = matrix_type (A) ¶
: type = matrix_type (A, "nocompute") ¶
: A = matrix_type (A, type) ¶
: A = matrix_type (A, "upper", perm) ¶
: A = matrix_type (A, "lower", perm) ¶
: A = matrix_type (A, "banded", nl, nu) ¶

Определить тип матрицы или пометить матрицу как определённого типа.

Это позволяет быстрее выполнять решения линейных уравнений, в которых участвует A.

При вызове с одним аргументом, matrix_type возвращает тип матрицы и кеширует его для будущего использования.

При вызове с несколькими аргументами, matrix_type позволяет определить тип матрицы.

Если задан параметр "nocompute", функция не будет пытаться угадать тип, если он всё ещё неизвестен. Это полезно для отладки.

Возможные типы матриц зависят от того, является ли матрица полной или разреженной, и могут быть следующими

...
: norm (A) ¶
: norm (A, p) ¶
: norm (A, p, opt) ¶

Вычислить p-норму матрицы A.

Если второй аргумент не указан, используется p = 2.

Если A — матрица (или разреженная матрица):

p = 1

1-норма, наибольшая сумма по столбцам абсолютных значений элементов A.

p = 2

Наибольшее сингулярное значение A.

p = Inf или "inf" ¶

Норма бесконечности, наибольшая сумма по строкам абсолютных значений элементов A.

p = "fro" ¶

Норма Фробениуса A, sqrt (sum (diag (A' * A))).

другие p, p > 1 ¶

максимум norm (A*x, p) такой, что norm (x, p) == 1

Если A — вектор или скаляр:

p = Inf или "inf"

max (abs (A)).

p = -Inf

min (abs (A)).

p = "fro"

Норма Фробениуса A, sqrt (sumsq (abs (A))).

p = 0

Норма Хэмминга — количество ненулевых элементов.

другие p, p > 1

p-норма A, (sum (abs (A) .^ p)) ^ (1/p).

другие p p < 1

p-псевдонорма, определённая как указано выше.

Если opt имеет значение "rows", обрабатывать каждую строку как вектор и вычислять её норму. Результат возвращается как столбец. Аналогично, если opt имеет значение "columns" или "cols", вычислять нормы каждого столбца и возвращать строку.

См. также: normest, normest1, vecnorm, cond, svd.

: Z = null (A) ¶
: Z = null (A, tol) ¶

Возвратить ортонормированный базис Z пространства нулей A.

Размерность пространства нулей Z принимается равной числу сингулярных значений A, не превышающих tol. Если аргумент tol отсутствует, он вычисляется как

max (size (A)) * max (svd (A, 0)) * eps

См. также: orth, svd.

END_OF_DOCUMENT_MARKER
: orth (A) ¶
: orth (A, tol) ¶

Возвращает ортонормированный базис пространства значений A.

Размерность пространства значений принимается равной числу сингулярных значений A, больших tol. Если аргумент tol отсутствует, он вычисляется как

max (size (A)) * max (svd (A)) * eps

См. также: null.

: [y, h] = mgorth (x, v) ¶

Ортогонализует заданный столбец x относительно набора ортонормированных векторов, составляющих столбцы v, используя метод модифицированного Грама-Шмидта.

По выходу, y — это единичный вектор, такой что:

norm (y) = 1
  v' * y = 0
  x = [v, y]*h'
: pinv (x) ¶
: pinv (x, tol) ¶

Возвращает псевдообратное обращение Мура-Пенроуза x.

Сингулярные значения, меньшие tol, игнорируются.

Если второй аргумент опущен, он принимается равным

tol = max ([rows(x), columns(x)]) * norm (x) * eps

См. также: inv, ldivide.

: rank (A) ¶
: rank (A, tol) ¶

Вычисляет ранг матрицы A, используя разложение по сингулярным значениям.

Ранг принимается равным числу сингулярных значений A, больших заданной погрешности tol. Если второй аргумент опущен, он принимается равным

tol = max (size (A)) * sigma(1) * eps;

где eps — машинная точность, а sigma(1) — наибольшее сингулярное значение A.

Ранг матрицы — это количество линейно независимых строк или столбцов и равен размерности пространства строк и столбцов. Функция orth может использоваться для вычисления ортонормированного базиса пространства столбцов.

Для проверки разрешимости системы A*x = b линейных уравнений можно использовать

rank (A) == rank ([A b])

В этом случае, x = A \ b находит частное решение x. Общее решение — это x плюс нулевое пространство матрицы A. Функция null может использоваться для вычисления базиса нулевого пространства.

Пример:

A = [1 2 3
     4 5 6
     7 8 9];
rank (A)
  ⇒ 2

В этом примере количество линейно независимых строк равно только 2, потому что последняя строка является линейной комбинацией первых двух строк:

A(3,:) == -A(1,:) + 2 * A(2,:)

См. также: null, orth, sprank, svd, eps.

: c = rcond (A) ¶

Вычисляет оценку обратной условности по норме 1, возвращаемой LAPACK.

Если матрица хорошо обусловлена, то c будет близко к 1, а если матрица плохо обусловлена, то она будет близка к 0.

Матрица A не должна быть разреженной. Если матрица разреженная, то следует использовать condest (A) или rcond (full (A)).

См. также: cond, condest.

: trace (A) ¶

Вычисляет след A, сумму элементов по главной диагонали.

Реализация тривиальна: sum (diag (A)).

См. также: eig.

: rref (A) ¶
: rref (A, tol) ¶
: [r, k] = rref (…) ¶

Возвращает приведенную ступенчатую форму A.

tol по умолчанию eps * max (size (A)) * norm (A, inf).

Необязательный возвращаемый аргумент k содержит вектор "связанных переменных", которые являются теми столбцами, над которыми была выполнена элиминация.

: n = vecnorm (A) ¶
: n = vecnorm (A, p) ¶
: n = vecnorm (A, p, dim) ¶

Возвращает векторную норму p-элементов массива A по размерности dim.

Норма p вектора определяется как

p-norm (A, p) = sum (abs (A) .^ p)) ^ (1/p)

Входной параметр p должен быть положительным скаляром. Если он опущен, он по умолчанию равен 2 (евклидова норма или расстояние). Другие специальные значения p — 1 (манхэттенская норма, сумма абсолютных значений) и Inf (абсолютное значение наибольшего элемента).

Входной параметр dim указывает размерность массива, над которым работает функция, и должен быть положительным целым числом. Если он опущен, используется первая неединичная размерность.

См. также: norm.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v7.2.0/Basic-Matrix-Functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API