scipy.sparse.linalg.

onenormest#

scipy.sparse.linalg.onenormest(A, t=2, itmax=5, compute_v=False, compute_w=False)[источник]#

Вычислить нижнюю границу 1-нормы разреженного массива.

Параметры:
Andarray или другой линейный оператор

Линейный оператор, который может быть транспонирован и может производить матричные произведения.

tint, необязательный

Положительный параметр, контролирующий компромисс между точностью и затратами времени и памяти. Большие значения требуют больше времени и памяти, но дают более точный результат.

itmaxint, необязательный

Использовать не более этого количества итераций.

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

Запросить вектор ввода линейного оператора, максимизирующий норму, если True.

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

Запросить вектор выхода линейного оператора, максимизирующий норму, если True.

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

Заниженная оценка 1-нормы разреженного массива.

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

Вектор, такой что ||Av||_1 == est*||v||_1. Его можно рассматривать как вход для линейного оператора, который даёт выход с особенно большой нормой.

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

Вектор Av, который имеет относительно большую 1-норму. Его можно рассматривать как выход линейного оператора, который относительно велик по норме по сравнению с входом.

Примечания

Это алгоритм 2.4 из [1].

В [2] это описано следующим образом. «Этот алгоритм обычно требует вычисления около 4t произведений матрица-вектор и почти всегда дает оценку нормы (которая, по сути, является нижней границей нормы) с точностью до коэффициента 3.»

Добавлено в версии 0.13.0.

Ссылки

[1]

Николас Дж. Хайэм и Франсуаза Тиссер (2000), "Блочный алгоритм оценки 1-нормы матрицы, с приложением к 1-норме псевдоспектров." SIAM J. Matrix Anal. Appl. Том 21, № 4, стр. 1185-1201.

[2]

Авад Х. Аль-Мохи и Николас Дж. Хайэм (2009), "Новый алгоритм масштабирования и возведения в квадрат для матричной экспоненты." SIAM J. Matrix Anal. Appl. Том 31, № 3, стр. 970-989.

Примеры

>>> import numpy as np
>>> from scipy.sparse import csc_array
>>> from scipy.sparse.linalg import onenormest
>>> A = csc_array([[1., 0., 0.], [5., 8., 2.], [0., -1., 0.]], dtype=float)
>>> A.toarray()
array([[ 1.,  0.,  0.],
       [ 5.,  8.,  2.],
       [ 0., -1.,  0.]])
>>> onenormest(A)
9.0
>>> np.linalg.norm(A.toarray(), ord=1)
9.0