Spec-Zone.ru › Octave 9

Далее: Выражения, включающие пермутационные матрицы, Вверх: Линейная алгебра с диагональными/пермутационными матрицами [Оглавление][Индекс]

21.2.1 Выражения, включающие диагональные матрицы ¶

Предположим, что D — диагональная матрица. Если M — полная матрица, то D*M будет масштабировать строки M. Это означает, что если S = D*M, то для каждой пары индексов i,j выполняется

S(i,j) = D(i,i) * M(i,j).

Аналогично, M*D выполнит масштабирование столбцов.

Матрица D может также быть прямоугольной, m-на-n, где m != n. Если m < n, то выражение D*M эквивалентно

D(:,1:m) * M(1:m,:),

т.е., хвостовые n-m строки M игнорируются. Если m > n, то D*M эквивалентно

[D(1:n,:) * M; zeros(m-n, columns (M))],

т.е., нулевые строки добавляются к результату. Ситуация для правого умножения M*D аналогична.

Выражения D \ M и M / D выполняют обратное масштабирование. Они эквивалентны решению диагональной (или прямоугольной диагональной) системы в смысле наименьших квадратов с минимальной нормой. В точной арифметике это эквивалентно умножению на псевдообратную матрицу. Псевдообратная прямоугольной диагональной матрицы снова является прямоугольной диагональной матрицей с поменянными размерностями, где каждый ненулевой диагональный элемент заменяется его обратным значением. Алгоритмы деления матриц на самом деле используют деление, а не умножение на обратные величины, для лучшей численной точности; в противном случае они следуют вышеупомянутому определению. Обратите внимание, что диагональная матрица никогда не усекается из-за некорректности; в противном случае она не будет очень полезна для масштабирования. Это обычно соответствует потребностям линейной алгебры. Полная матрица, которая случайно оказывается диагональной (и, следовательно, не является специальным объектом), конечно, обрабатывается нормально.

Умножение и деление на диагональные матрицы работают эффективно также при комбинировании с разреженными матрицами, т.е., D*S, где D — диагональная матрица, а S — разреженная матрица, масштабирует строки разреженной матрицы и возвращает разреженную матрицу. Выражения S*D, D\S, S/D работают аналогично.

Если D1 и D2 — диагональные матрицы, то выражения

D1 + D2
D1 - D2
D1 * D2
D1 / D2
D1 \ D2

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

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

Диагональную матрицу также можно транспонировать или сопряженно транспонировать, получая ожидаемый результат. Извлечение ведущей подматрицы диагональной матрицы, т.е. D(1:m,1:n), даст диагональную матрицу, другие выражения индексации неявно преобразуются в полную матрицу.

Добавление диагональной матрицы к полной матрице затрагивает только диагональные элементы. Таким образом,

A = A + eps * eye (n)

является эффективным методом добавления диагонали матрицы. Вычитание работает аналогично.

При участии в выражениях с другими операторами поэлементных операций, .*, ./, .\ или .^, произойдет неявное преобразование в полную матрицу. Это не всегда строго необходимо, но выбрано для лучшей согласованности с MATLAB.

Далее: Выражения, включающие пермутационные матрицы, Вверх: Линейная алгебра с диагональными/пермутационными матрицами [Оглавление][Индекс]

© 1996–2023 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/v9.2.0/Expressions-Involving-Diagonal-Matrices.html

Spec-Zone.ru

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