Spec-Zone.ru › Octave 7

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–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/Expressions-Involving-Diagonal-Matrices.html

Spec-Zone.ru

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