本文整理汇总了Python中scipy.sparse.linalg.norm方法的典型用法代码示例。如果您正苦于以下问题:Python linalg.norm方法的具体用法?Python linalg.norm怎么用?Python linalg.norm使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.sparse.linalg
的用法示例。
在下文中一共展示了linalg.norm方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: frobeniusnorm
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def frobeniusnorm(ar):
"""
Compute the frobenius norm of an array (or matrix),
sqrt( sum( each_element_of_a^2 ) )
Parameters
----------
ar : numpy array
What to compute the frobenius norm of. Note that ar can be any shape
or number of dimenions.
Returns
-------
float or complex
depending on the element type of ar.
"""
return _np.sqrt(_np.sum(ar**2))
示例2: frobeniusnorm2
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def frobeniusnorm2(ar):
"""
Compute the squared frobenius norm of an array (or matrix),
sum( each_element_of_a^2 ) )
Parameters
----------
ar : numpy array
What to compute the squared frobenius norm of. Note that ar can be any
shape or number of dimenions.
Returns
-------
float or complex
depending on the element type of ar.
"""
return _np.sum(ar**2)
示例3: norm1to1
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def norm1to1(operator, n_samples=10000, mxBasis="gm", return_list=False):
"""
Returns the Hermitian 1-to-1 norm of a superoperator represented in
the standard basis, calculated via Monte-Carlo sampling. Definition
of Hermitian 1-to-1 norm can be found in arxiv:1109.6887.
"""
if mxBasis == 'gm':
std_operator = change_basis(operator, 'gm', 'std')
elif mxBasis == 'pp':
std_operator = change_basis(operator, 'pp', 'std')
elif mxBasis == 'std':
std_operator = operator
else:
raise ValueError("mxBasis should be 'gm', 'pp' or 'std'!")
rand_dim = int(_np.sqrt(float(len(std_operator))))
vals = [norm1(unvec(_np.dot(std_operator, vec(random_hermitian(rand_dim)))))
for n in range(n_samples)]
if return_list:
return vals
else:
return max(vals)
## ------------------------ General utility fns -----------------------------------
示例4: safe_onenorm
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def safe_onenorm(A):
"""
Computes the 1-norm of the dense or sparse matrix `A`.
Parameters
----------
A : ndarray or sparse matrix
The matrix or vector to take the norm of.
Returns
-------
float
"""
if _sps.isspmatrix(A):
return sparse_onenorm(A)
else:
return _np.linalg.norm(A, 1)
示例5: tracenorm
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def tracenorm(A):
"""
Compute the trace norm of matrix A given by:
Tr( sqrt{ A^dagger * A } )
Parameters
----------
A : numpy array
The matrix to compute the trace norm of.
"""
if _np.linalg.norm(A - _np.conjugate(A.T)) < 1e-8:
#Hermitian, so just sum eigenvalue magnitudes
return _np.sum(_np.abs(_np.linalg.eigvals(A)))
else:
#Sum of singular values (positive by construction)
return _np.sum(_np.linalg.svd(A, compute_uv=False))
示例6: compute_pri_tol
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def compute_pri_tol(self, eps_abs, eps_rel):
"""
Compute primal tolerance using problem data
"""
A = self.work.data.A
if self.work.settings.scaling and not \
self.work.settings.scaled_termination:
Einv = self.work.scaling.Einv
max_rel_eps = np.max([
la.norm(Einv.dot(A.dot(self.work.x)), np.inf),
la.norm(Einv.dot(self.work.z), np.inf)])
else:
max_rel_eps = np.max([
la.norm(A.dot(self.work.x), np.inf),
la.norm(self.work.z, np.inf)])
eps_pri = eps_abs + eps_rel * max_rel_eps
return eps_pri
示例7: compute_dua_tol
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def compute_dua_tol(self, eps_abs, eps_rel):
"""
Compute dual tolerance
"""
P = self.work.data.P
q = self.work.data.q
A = self.work.data.A
if self.work.settings.scaling and not \
self.work.settings.scaled_termination:
cinv = self.work.scaling.cinv
Dinv = self.work.scaling.Dinv
max_rel_eps = cinv * np.max([
la.norm(Dinv.dot(A.T.dot(self.work.y)), np.inf),
la.norm(Dinv.dot(P.dot(self.work.x)), np.inf),
la.norm(Dinv.dot(q), np.inf)])
else:
max_rel_eps = np.max([
la.norm(A.T.dot(self.work.y), np.inf),
la.norm(P.dot(self.work.x), np.inf),
la.norm(q, np.inf)])
eps_dua = eps_abs + eps_rel * max_rel_eps
return eps_dua
示例8: compute_rho_estimate
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def compute_rho_estimate(self):
# Iterates
x = self.work.x
y = self.work.y
z = self.work.z
# Problem data
P = self.work.data.P
q = self.work.data.q
A = self.work.data.A
# Compute normalized residuals
pri_res = la.norm(A.dot(x) - z, np.inf)
pri_res /= (np.max([la.norm(A.dot(x), np.inf),
la.norm(z, np.inf)]) + 1e-10)
dua_res = la.norm(P.dot(x) + q + A.T.dot(y), np.inf)
dua_res /= (np.max([la.norm(A.T.dot(y), np.inf),
la.norm(P.dot(x), np.inf),
la.norm(q, np.inf)]) + 1e-10)
# Compute new rho
new_rho = self.work.settings.rho * np.sqrt(pri_res/(dua_res + 1e-10))
return min(max(new_rho, RHO_MIN), RHO_MAX)
示例9: _similarity
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def _similarity(self, q_vect: Union[csr_matrix, List]) -> List[float]:
"""Calculates cosine similarity between the user's query and product items.
Parameters:
q_cur: user's query
Returns:
cos_similarities: lits of similarity scores
"""
norm = sparse_norm(q_vect) * sparse_norm(self.x_train_features, axis=1)
cos_similarities = np.array(q_vect.dot(self.x_train_features.T).todense()) / norm
cos_similarities = cos_similarities[0]
cos_similarities = np.nan_to_num(cos_similarities)
return cos_similarities
示例10: array_eq
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def array_eq(a, b, tol=1e-8):
"""Test whether arrays `a` and `b` are equal, i.e. if `norm(a-b) < tol` """
print(_np.linalg.norm(a - b))
return _np.linalg.norm(a - b) < tol
示例11: nullspace_qr
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def nullspace_qr(m, tol=1e-7):
"""
Compute the nullspace of a matrix using the QR decomposition.
The QR decomposition is faster but less accurate than the SVD
used by :func:`nullspace`.
Parameters
----------
m : numpy array
An matrix of shape (M,N) whose nullspace to compute.
tol : float (optional)
Nullspace tolerance, used when comparing diagonal values of R with zero.
Returns
-------
An matrix of shape (M,K) whose columns contain nullspace basis vectors.
"""
#if M,N = m.shape, and q,r,p = _spl.qr(...)
# q.shape == (N,N), r.shape = (N,M), p.shape = (M,)
q, r, _ = _spl.qr(m.T, mode='full', pivoting=True)
rank = (_np.abs(_np.diagonal(r)) > tol).sum()
#DEBUG: requires q,r,p = _sql.qr(...) above
#assert( _np.linalg.norm(_np.dot(q,r) - m.T[:,p]) < 1e-8) #check QR decomp
#print("Rank QR = ",rank)
#print('\n'.join(map(str,_np.abs(_np.diagonal(r)))))
#print("Ret = ", q[:,rank:].shape, " Q = ",q.shape, " R = ",r.shape)
return q[:, rank:]
示例12: unitary_superoperator_matrix_log
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def unitary_superoperator_matrix_log(M, mxBasis):
"""
Construct the logarithm of superoperator matrix `M`
that acts as a unitary on density-matrix space,
(`M: rho -> U rho Udagger`) so that log(M) can be
written as the action by Hamiltonian `H`:
`log(M): rho -> -i[H,rho]`.
Parameters
----------
M : numpy array
The superoperator matrix whose logarithm is taken
mxBasis : {'std', 'gm', 'pp', 'qt'} or Basis object
The source and destination basis, respectively. Allowed
values are Matrix-unit (std), Gell-Mann (gm), Pauli-product (pp),
and Qutrit (qt) (or a custom basis object).
Returns
-------
numpy array
A matrix `logM`, of the same shape as `M`, such that `M = exp(logM)`
and `logM` can be written as the action `rho -> -i[H,rho]`.
"""
from . import lindbladtools as _lt # (would create circular imports if at top)
from . import optools as _gt # (would create circular imports if at top)
M_std = change_basis(M, mxBasis, "std")
evals = _np.linalg.eigvals(M_std)
assert(_np.allclose(_np.abs(evals), 1.0)) # simple but technically incomplete check for a unitary superop
# (e.g. could be anti-unitary: diag(1, -1, -1, -1))
U = _gt.process_mx_to_unitary(M_std)
H = _spl.logm(U) / -1j # U = exp(-iH)
logM_std = _lt.hamiltonian_to_lindbladian(H) # rho --> -i[H, rho] * sqrt(d)/2
logM = change_basis(logM_std * (2.0 / _np.sqrt(H.shape[0])), "std", mxBasis)
assert(_np.linalg.norm(_spl.expm(logM) - M) < 1e-8) # expensive b/c of expm - could comment for performance
return logM
示例13: norm1
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def norm1(matr):
"""
Returns the 1 norm of a matrix
"""
return float(_np.real(_np.trace(_sqrtm(_np.dot(matr.conj().T, matr)))))
示例14: safenorm
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def safenorm(A, part=None):
"""
Returns the frobenius norm of a matrix or vector, `A` when it is either
a dense array or a sparse matrix.
Parameters
----------
A : ndarray or sparse matrix
The matrix or vector to take the norm of.
part : {None,'real','imag'}
If not None, return the norm of the real or imaginary
part of `A`.
Returns
-------
float
"""
if part == 'real': takepart = _np.real
elif part == 'imag': takepart = _np.imag
else: takepart = lambda x: x
if _sps.issparse(A):
assert(_sps.isspmatrix_csr(A)), "Non-CSR sparse formats not implemented"
return _np.linalg.norm(takepart(A.data))
else:
return _np.linalg.norm(takepart(A))
# could also use _spsl.norm(A)
示例15: sparse_onenorm
# 需要导入模块: from scipy.sparse import linalg [as 别名]
# 或者: from scipy.sparse.linalg import norm [as 别名]
def sparse_onenorm(A):
"""
Computes the 1-norm of the scipy sparse matrix `A`.
Parameters
----------
A : scipy sparse matrix
The matrix or vector to take the norm of.
Returns
-------
float
"""
return max(abs(A).sum(axis=0).flat)