Spec-Zone.ru › Octave 5

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", которые обычно быстрее. Смотрите norm для полного обсуждения возможных значений p.

Число обусловленности матрицы количественно определяет чувствительность операции обращения матрицы при малых изменениях элементов матрицы. В идеале число обусловленности должно быть близко к 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.

lambda = eig (A)
lambda = eig (A, B)
[V, lambda] = eig (A)
[V, lambda] = eig (A, B)
[V, lambda, W] = eig (A)
[V, lambda, W] = eig (A, B)
[…] = eig (A, balanceOption)
[…] = eig (A, B, algorithm)
[…] = eig (…, eigvalOption)

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

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

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

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

"nobalance"

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

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

"matrix"

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

"vector"

Возвращает собственные значения в столбце векторов. (по умолчанию, если запрашивается только 1 выход, например, lambda = 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

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

См. также: 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.

См. также: svd.

[G, y] = planerot (x)

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

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

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

такая что

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

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

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

END_OF_DOCUMENT_MARKER
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" задана, функция не будет пытаться угадать тип, если он всё ещё неизвестен. Это полезно для отладки.

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

"unknown"

Удалить любой ранее кэшированный тип матрицы и пометить тип как неизвестный.

"full"

Пометить матрицу как полную.

"positive definite"

Вероятно, полная положительно определённая матрица.

"diagonal"

Диагональная матрица. (Только для разреженных матриц)

"permuted diagonal"

Пермутированная диагональная матрица. Перестановку необязательно указывать, так как структура матрицы явно даёт это. (Только для разреженных матриц)

"upper"

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

"lower"

Нижняя треугольная. Если необязательный третий аргумент perm задан, то предполагается, что матрица является пермутированной нижней треугольной с перестановками, определёнными вектором perm.

"banded"
"banded positive definite"

Бандовая матрица с размером полосы nl ниже диагонали и nu выше её. Если nl и nu равны 1, то матрица является тридиагональной и обрабатывается специализированным кодом. Кроме того, матрица может быть помечена как, вероятно, положительно определённая. (Только для разреженных матриц)

"singular"

Матрица предполагается вырожденной и будет обработана с решением минимальной нормы.

Обратите внимание, что тип матрицы будет определяться автоматически при первой попытке решить линейное уравнение, включающее A. Таким образом, matrix_type используется только для того, чтобы дать Octave подсказки о типе матрицы. Неправильное определение типа матрицы приведёт к неверным результатам при решении линейных уравнений; полная ответственность за правильное определение типа матрицы лежит на пользователе.

Также тест на положительную определённость представляет собой тест с низкими затратами для эрмитовой матрицы с вещественной положительной диагональю. Это не гарантирует, что матрица является положительно определённой, а только то, что она является вероятным кандидатом. Когда такая матрица факторизуется, сначала пытается выполнить факторизацию Холецкого, а если это не удаётся, то матрица обрабатывается с помощью LU-факторизации. После факторизации матрицы, matrix_type вернёт правильную классификацию матрицы.

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.

null (A)
null (A, tol)

Возвращает ортогональную базу нулевого пространства A.

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

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

См. также: orth.

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)

Возвращает псевдообратное Moore-Penrose 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 может быть 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/v5.2.0/Basic-Matrix-Functions.html

Spec-Zone.ru

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