scipy.linalg.interpolative.

interp_decomp#

scipy.linalg.interpolative.interp_decomp(A, eps_or_k, rand=True, rng=None)[источник]#

Вычислить ID матрицы.

Идентификатор матрицы A является факторизацией, определенной рангом k, массив индексов столбцов idxи коэффициенты интерполяции proj такой, что:

numpy.dot(A[:,idx[:k]], proj) = A[:,idx[k:]]

Исходная матрица может быть восстановлена как:

numpy.hstack([A[:,idx[:k]],
                            numpy.dot(A[:,idx[:k]], proj)]
                        )[:,numpy.argsort(idx)]

или через процедуру reconstruct_matrix_from_id. Это может быть эквивалентно записано как:

numpy.dot(A[:,idx[:k]],
                    numpy.hstack([numpy.eye(k), proj])
                  )[:,np.argsort(idx)]

в терминах матриц скелета и интерполяции:

B = A[:,idx[:k]]

и:

P = numpy.hstack([numpy.eye(k), proj])[:,np.argsort(idx)]

соответственно. См. также reconstruct_interp_matrix и reconstruct_skel_matrix.

ID может быть вычислен с любой относительной точностью или рангом (в зависимости от значения eps_or_k). Если указана точность (eps_or_k < 1), то эта функция имеет выходную сигнатуру:

k, idx, proj = interp_decomp(A, eps_or_k)

В противном случае, если указан ранг (eps_or_k >= 1), тогда выходная сигнатура:

idx, proj = interp_decomp(A, eps_or_k)
Параметры:
Anumpy.ndarray или scipy.sparse.linalg.LinearOperator с rmatvec

Матрица для факторизации

eps_or_kfloat или int

Относительная ошибка (если eps_or_k < 1) или ранг (если eps_or_k >= 1) аппроксимации.

randbool, необязательно

Использовать ли случайную выборку, если A имеет тип numpy.ndarray (рандомизированные алгоритмы всегда используются, если A имеет тип scipy.sparse.linalg.LinearOperator).

rngnumpy.random.Generator, опционально

Состояние генератора псевдослучайных чисел. Когда rng равно None, новый numpy.random.Generator создаётся с использованием энтропии из операционной системы. Типы, отличные от numpy.random.Generator передаются в numpy.random.default_rng для создания экземпляра Generator. Если rand является False, аргумент игнорируется.

Возвращает:
kint

Ранг, необходимый для достижения указанной относительной точности, если eps_or_k < 1.

idxnumpy.ndarray

Массив индексов столбцов.

projnumpy.ndarray

Коэффициенты интерполяции.