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