Python scipy.linalg.sqrtm() Examples
The following are 30
code examples of scipy.linalg.sqrtm().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.linalg
, or try the search function
.
Example #1
Source File: instruments.py From CalibrationNN with GNU General Public License v3.0 | 6 votes |
def random_normal_draw(history, nb_samples, **kwargs): """Random normal distributed draws Arguments: history: numpy 2D array, with history along axis=0 and parameters along axis=1 nb_samples: number of samples to draw Returns: numpy 2D array, with samples along axis=0 and parameters along axis=1 """ scaler = StandardScaler() scaler.fit(history) scaled = scaler.transform(history) sqrt_cov = sqrtm(empirical_covariance(scaled)).real #Draw correlated random variables #draws are generated transposed for convenience of the dot operation draws = np.random.standard_normal((history.shape[-1], nb_samples)) draws = np.dot(sqrt_cov, draws) draws = np.transpose(draws) return scaler.inverse_transform(draws)
Example #2
Source File: hawkes_cumulant_matching.py From tick with BSD 3-Clause "New" or "Revised" License | 6 votes |
def starting_point(self, random=False): """Heuristic to find a starting point candidate Parameters ---------- random : `bool` Use a random orthogonal matrix instead of identity Returns ------- startint_point : `np.ndarray`, shape=(n_nodes, n_nodes) A starting point candidate """ sqrt_C = sqrtm(self.covariance) sqrt_L = np.sqrt(self.mean_intensity) if random: random_matrix = np.random.rand(self.n_nodes, self.n_nodes) M, _ = qr(random_matrix) else: M = np.eye(self.n_nodes) initial = np.dot(np.dot(sqrt_C, M), np.diag(1. / sqrt_L)) return initial
Example #3
Source File: test_matfuncs.py From Computable with MIT License | 6 votes |
def test_al_mohy_higham_2012_experiment_1(self): # Fractional powers of a tricky upper triangular matrix. A = _get_al_mohy_higham_2012_experiment_1() # Test remainder matrix power. A_funm_sqrt, info = funm(A, np.sqrt, disp=False) A_sqrtm, info = sqrtm(A, disp=False) A_rem_power = _matfuncs_inv_ssq._remainder_matrix_power(A, 0.5) A_power = fractional_matrix_power(A, 0.5) assert_array_equal(A_rem_power, A_power) assert_allclose(A_sqrtm, A_power) assert_allclose(A_sqrtm, A_funm_sqrt) # Test more fractional powers. for p in (1/2, 5/3): A_power = fractional_matrix_power(A, p) A_round_trip = fractional_matrix_power(A_power, 1/p) assert_allclose(A_round_trip, A, rtol=1e-2) assert_allclose(np.tril(A_round_trip, 1), np.tril(A, 1))
Example #4
Source File: subsystem.py From qiskit-aqua with Apache License 2.0 | 6 votes |
def get_subsystem_fidelity(statevector, trace_systems, subsystem_state): """ Compute the fidelity of the quantum subsystem. Args: statevector (list|array): The state vector of the complete system trace_systems (list|range): The indices of the qubits to be traced. to trace qubits 0 and 4 trace_systems = [0,4] subsystem_state (list|array): The ground-truth state vector of the subsystem Returns: numpy.ndarray: The subsystem fidelity """ rho = np.outer(np.conj(statevector), statevector) rho_sub = partial_trace(rho, trace_systems).data rho_sub_in = np.outer(np.conj(subsystem_state), subsystem_state) fidelity = np.trace( sqrtm( np.dot( np.dot(sqrtm(rho_sub), rho_sub_in), sqrtm(rho_sub) ) ) ) ** 2 return fidelity
Example #5
Source File: signals.py From doatools.py with MIT License | 6 votes |
def __init__(self, dim, C=1.0): self._dim = dim if np.isscalar(C): # Scalar self._C2 = np.sqrt(C) self._generator = lambda n: self._C2 * randcn((self._dim, n)) elif C.ndim == 1: # Vector if C.size != dim: raise ValueError('The size of C must be {0}.'.format(dim)) self._C2 = np.sqrt(C).reshape((-1, 1)) self._generator = lambda n: self._C2 * randcn((self._dim, n)) elif C.ndim == 2: # Matrix if C.shape[0] != dim or C.shape[1] != dim: raise ValueError('The shape of C must be ({0}, {0}).'.format(dim)) self._C2 = sqrtm(C) self._generator = lambda n: self._C2 @ randcn((self._dim, n)) else: raise ValueError( 'The covariance must be specified by a scalar, a vector of' 'size {0}, or a matrix of {0}x{0}.'.format(dim) ) self._C = C
Example #6
Source File: test_matfuncs.py From Computable with MIT License | 6 votes |
def test_sqrtm_type_conversion_mixed_sign_or_complex_spectrum(self): complex_dtype_chars = ('F', 'D', 'G') for matrix_as_list in ( [[1, 0], [0, -1]], [[0, 1], [1, 0]], [[0, 1, 0], [0, 0, 1], [1, 0, 0]]): # check that the spectrum has the expected properties W = scipy.linalg.eigvals(matrix_as_list) assert_(any(w.imag or w.real < 0 for w in W)) # check complex->complex A = np.array(matrix_as_list, dtype=complex) A_sqrtm, info = sqrtm(A, disp=False) assert_(A_sqrtm.dtype.char in complex_dtype_chars) # check float->complex A = np.array(matrix_as_list, dtype=float) A_sqrtm, info = sqrtm(A, disp=False) assert_(A_sqrtm.dtype.char in complex_dtype_chars)
Example #7
Source File: test_matfuncs.py From Computable with MIT License | 6 votes |
def test_bad(self): # See http://www.maths.man.ac.uk/~nareports/narep336.ps.gz e = 2**-5 se = sqrt(e) a = array([[1.0,0,0,1], [0,e,0,0], [0,0,e,0], [0,0,0,1]]) sa = array([[1,0,0,0.5], [0,se,0,0], [0,0,se,0], [0,0,0,1]]) n = a.shape[0] assert_array_almost_equal(dot(sa,sa),a) # Check default sqrtm. esa = sqrtm(a, disp=False, blocksize=n)[0] assert_array_almost_equal(dot(esa,esa),a) # Check sqrtm with 2x2 blocks. esa = sqrtm(a, disp=False, blocksize=2)[0] assert_array_almost_equal(dot(esa,esa),a)
Example #8
Source File: test_matfuncs.py From Computable with MIT License | 6 votes |
def test_round_trip_random_float(self): np.random.seed(1234) for n in range(1, 6): M_unscaled = np.random.randn(n, n) for scale in np.logspace(-4, 4, 9): M = M_unscaled * scale # Eigenvalues are related to the branch cut. W = np.linalg.eigvals(M) err_msg = 'M:{0} eivals:{1}'.format(M, W) # Check sqrtm round trip because it is used within logm. M_sqrtm, info = sqrtm(M, disp=False) M_sqrtm_round_trip = M_sqrtm.dot(M_sqrtm) assert_allclose(M_sqrtm_round_trip, M) # Check logm round trip. M_logm, info = logm(M, disp=False) M_logm_round_trip = expm(M_logm) assert_allclose(M_logm_round_trip, M, err_msg=err_msg)
Example #9
Source File: random_operators.py From forest-benchmarking with Apache License 2.0 | 6 votes |
def rand_map_with_BCSZ_dist(dim: int, kraus_rank: int) -> np.ndarray: """ Given a Hilbert space dimension dim and a Kraus rank K, returns a dim^2 by dim^2 Choi matrix J(Λ) of a channel drawn from the BCSZ distribution with Kraus rank K [RQO]_. .. [RQO] Random quantum operations. Bruzda et al. Physics Letters A 373, 320 (2009). https://doi.org/10.1016/j.physleta.2008.11.043 https://arxiv.org/abs/0804.2361 :param dim: Hilbert space dimension. :param kraus_rank: The number of Kraus operators in the operator sum description of the channel. :return: dim^2 by dim^2 Choi matrix, drawn from the BCSZ distribution with Kraus rank K. """ # TODO: this ^^ is CPTP, might want a flag that allows for just CP quantum operations. X = ginibre_matrix_complex(dim ** 2, kraus_rank) rho = X @ X.conj().T rho_red = partial_trace(rho, [0], [dim, dim]) # Note that Eqn. 8 of [RQO] uses a *row* stacking convention so in that case we would write # Q = np.kron(np.eye(D), sqrtm(la.inv(rho_red))) # But as we use column stacking we need: Q = np.kron(sqrtm(la.inv(rho_red)), np.eye(dim)) Z = Q @ rho @ Q return Z
Example #10
Source File: LAF.py From affnet with MIT License | 5 votes |
def Ell2LAF(ell): A23 = np.zeros((2,3)) A23[0,2] = ell[0] A23[1,2] = ell[1] a = ell[2] b = ell[3] c = ell[4] sc = np.sqrt(np.sqrt(a*c - b*b)) ia,ib,ic = invSqrt(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = np.array([[ia, ib], [ib, ic]]) / sc sc = np.sqrt(A[0,0] * A[1,1] - A[1,0] * A[0,1]) A23[0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc) * sc return A23
Example #11
Source File: test_matfuncs.py From Computable with MIT License | 5 votes |
def test_al_mohy_higham_2012_experiment_1(self): # Matrix square root of a tricky upper triangular matrix. A = _get_al_mohy_higham_2012_experiment_1() A_sqrtm, info = sqrtm(A, disp=False) A_round_trip = A_sqrtm.dot(A_sqrtm) assert_allclose(A_round_trip, A, rtol=1e-5) assert_allclose(np.tril(A_round_trip), np.tril(A))
Example #12
Source File: test_matfuncs.py From Computable with MIT License | 5 votes |
def test_round_trip_random_float(self): np.random.seed(1234) for n in range(1, 6): M_unscaled = np.random.randn(n, n) for scale in np.logspace(-4, 4, 9): M = M_unscaled * scale M_sqrtm, info = sqrtm(M, disp=False) M_sqrtm_round_trip = M_sqrtm.dot(M_sqrtm) assert_allclose(M_sqrtm_round_trip, M)
Example #13
Source File: test_matfuncs.py From Computable with MIT License | 5 votes |
def test_blocksizes(self): # Make sure I do not goof up the blocksizes when they do not divide n. np.random.seed(1234) for n in range(1, 8): A = np.random.rand(n, n) + 1j*np.random.randn(n, n) A_sqrtm_default, info = sqrtm(A, disp=False, blocksize=n) assert_allclose(A, np.linalg.matrix_power(A_sqrtm_default, 2)) for blocksize in range(1, 10): A_sqrtm_new, info = sqrtm(A, disp=False, blocksize=blocksize) assert_allclose(A_sqrtm_default, A_sqrtm_new)
Example #14
Source File: test_matfuncs.py From Computable with MIT License | 5 votes |
def test_strict_upper_triangular(self): # This matrix has no square root. A = np.array([ [0, 3, 0, 0], [0, 0, 3, 0], [0, 0, 0, 3], [0, 0, 0, 0]], dtype=float) A_sqrtm, info = sqrtm(A, disp=False) assert_(np.isnan(A_sqrtm).all())
Example #15
Source File: LAF.py From affnet with MIT License | 5 votes |
def Ell2LAF(ell): A23 = np.zeros((2,3)) A23[0,2] = ell[0] A23[1,2] = ell[1] a = ell[2] b = ell[3] c = ell[4] sc = np.sqrt(np.sqrt(a*c - b*b)) ia,ib,ic = invSqrt(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = np.array([[ia, ib], [ib, ic]]) / sc sc = np.sqrt(A[0,0] * A[1,1] - A[1,0] * A[0,1]) A23[0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc) * sc return A23
Example #16
Source File: LAF.py From affnet with MIT License | 5 votes |
def ells2LAFsT(ells): LAFs = torch.zeros((len(ells), 2,3)) LAFs[:,0,2] = ells[:,0] LAFs[:,1,2] = ells[:,1] a = ells[:,2] b = ells[:,3] c = ells[:,4] sc = torch.sqrt(torch.sqrt(a*c - b*b + 1e-12)) ia,ib,ic = invSqrtTorch(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = torch.cat([torch.cat([(ia/sc).view(-1,1,1), (ib/sc).view(-1,1,1)], dim = 2), torch.cat([(ib/sc).view(-1,1,1), (ic/sc).view(-1,1,1)], dim = 2)], dim = 1) sc = torch.sqrt(torch.abs(A[:,0,0] * A[:,1,1] - A[:,1,0] * A[:,0,1])) LAFs[:,0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc.view(-1,1,1).repeat(1,2,2)) * sc.view(-1,1,1).repeat(1,2,2) return LAFs
Example #17
Source File: LAF.py From affnet with MIT License | 5 votes |
def ells2LAFsT(ells): LAFs = torch.zeros((len(ells), 2,3)) LAFs[:,0,2] = ells[:,0] LAFs[:,1,2] = ells[:,1] a = ells[:,2] b = ells[:,3] c = ells[:,4] sc = torch.sqrt(torch.sqrt(a*c - b*b + 1e-12)) ia,ib,ic = invSqrtTorch(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = torch.cat([torch.cat([(ia/sc).view(-1,1,1), (ib/sc).view(-1,1,1)], dim = 2), torch.cat([(ib/sc).view(-1,1,1), (ic/sc).view(-1,1,1)], dim = 2)], dim = 1) sc = torch.sqrt(torch.abs(A[:,0,0] * A[:,1,1] - A[:,1,0] * A[:,0,1])) LAFs[:,0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc.view(-1,1,1).repeat(1,2,2)) * sc.view(-1,1,1).repeat(1,2,2) return LAFs
Example #18
Source File: LAF.py From affnet with MIT License | 5 votes |
def Ell2LAF(ell): A23 = np.zeros((2,3)) A23[0,2] = ell[0] A23[1,2] = ell[1] a = ell[2] b = ell[3] c = ell[4] sc = np.sqrt(np.sqrt(a*c - b*b)) ia,ib,ic = invSqrt(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = np.array([[ia, ib], [ib, ic]]) / sc sc = np.sqrt(A[0,0] * A[1,1] - A[1,0] * A[0,1]) A23[0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc) * sc return A23
Example #19
Source File: GOBLin.py From BanditLib with MIT License | 5 votes |
def __init__(self, featureDimension, lambda_, userNum, W): self.W = W self.userNum = userNum self.A = lambda_*np.identity(n = featureDimension*userNum) self.b = np.zeros(featureDimension*userNum) self.AInv = np.linalg.inv(self.A) self.theta = np.dot(self.AInv , self.b) print np.kron(W, np.identity(n=featureDimension)) self.STBigWInv = sqrtm( np.linalg.inv(np.kron(W, np.identity(n=featureDimension))) ) self.STBigW = sqrtm(np.kron(W, np.identity(n=featureDimension)))
Example #20
Source File: LAF.py From affnet with MIT License | 5 votes |
def Ell2LAF(ell): A23 = np.zeros((2,3)) A23[0,2] = ell[0] A23[1,2] = ell[1] a = ell[2] b = ell[3] c = ell[4] sc = np.sqrt(np.sqrt(a*c - b*b)) ia,ib,ic = invSqrt(a,b,c) #because sqrtm returns ::-1, ::-1 matrix, don`t know why A = np.array([[ia, ib], [ib, ic]]) / sc sc = np.sqrt(A[0,0] * A[1,1] - A[1,0] * A[0,1]) A23[0:2,0:2] = rectifyAffineTransformationUpIsUp(A / sc) * sc return A23
Example #21
Source File: generate_data.py From py-glm with BSD 3-Clause "New" or "Revised" License | 5 votes |
def make_covariance_matrix(n_features=15): A = np.random.normal(size=(n_features, n_features)) A_sq = np.dot(A.T, A) return sqrtm(A_sq)
Example #22
Source File: tm_massunivariatemodels.py From TFCE_mediation with GNU General Public License v3.0 | 5 votes |
def ortho_neareast(w): return w.dot(inv(sqrtm(w.T.dot(w))))
Example #23
Source File: regressor_tools.py From TFCE_mediation with GNU General Public License v3.0 | 5 votes |
def sym(w): return w.dot(inv(sqrtm(w.T.dot(w))))
Example #24
Source File: pyfunc.py From TFCE_mediation with GNU General Public License v3.0 | 5 votes |
def ortho_neareast(w): return w.dot(inv(sqrtm(w.T.dot(w)))) ### surface conversion tools ###
Example #25
Source File: kalman.py From RHEAS with MIT License | 5 votes |
def analysis(self, dists): """Implements the Local Ensemble Transform Kalman Filter.""" n = 1 rho = 1.05 localizer = lambda s: s Y = self.HA - np.mean(self.HA, axis=1) X = self.A - np.mean(self.A, axis=1) xa = np.zeros(self.A.shape) segs = [np.arange((i * n), min((i + 1) * n - 1, self.ndim - 1) + 1) for i in range(np.divide(self.ndim, n) + 1)] segs = [s for s in segs if len(s) > 0] for l in range(len(segs)): lx = segs[l] ly = range(self.nobs) # localizer(segs[l]) Xl = X[lx, :] Yl = Y[ly, :] Rl = np.diag(np.diag(np.array(self.R))[ly]) C = Yl.T * np.linalg.pinv(Rl) P = np.linalg.pinv((self.nens - 1) * np.eye(self.nens) / rho + C * Yl) W = np.real(sqrtm((self.nens - 1) * P)) w = P * C * (np.mat(self.d[ly]) - np.mean(self.HA[ly, :], axis=1)) W = W + w Xla = Xl * W + np.mean(self.A[lx, :], axis=1) xa[lx, :] = Xla self.Aa = xa
Example #26
Source File: utils.py From pyslam with MIT License | 5 votes |
def invsqrt(x): """Convenience function to compute the inverse square root of a scalar or a square matrix.""" if hasattr(x, 'shape'): return np.linalg.inv(splinalg.sqrtm(x)) return 1. / np.sqrt(x)
Example #27
Source File: matrices.py From mici with MIT License | 5 votes |
def _construct_sqrt(self): # Uses O(dim_inner**3 + dim_inner**2 * dim_outer) cost implementation # proposed in # Ambikasaran, O'Neill & Singh (2016). Fast symmetric factorization # of hierarchical matrices with applications. arxiv:1405.0223. # Variable naming below follows notation in Algorithm 1 in paper W = self.pos_def_matrix.sqrt K = self.inner_pos_def_matrix U = W.inv @ self.factor_matrix L = TriangularMatrix( nla.cholesky(U.T @ U.array), lower=True, make_triangular=False) I_outer, I_inner = IdentityMatrix(U.shape[0]), np.identity(U.shape[1]) M = sla.sqrtm(I_inner + L.T @ (K @ L.array)) X = DenseSymmetricMatrix(L.inv.T @ ((M - I_inner) @ L.inv)) return W @ SymmetricLowRankUpdateMatrix(U, I_outer, X)
Example #28
Source File: bounding.py From dynesty with MIT License | 5 votes |
def __init__(self, ndim, cov=None): self.n = ndim if cov is None: cov = np.identity(self.n) self.cov = cov self.am = lalg.pinvh(self.cov) self.axes = lalg.sqrtm(self.cov) self.axes_inv = lalg.pinvh(self.axes) detsign, detln = linalg.slogdet(self.am) self.vol_ball = np.exp(logvol_prefactor(self.n) - 0.5 * detln) self.expand = 1.
Example #29
Source File: bounding.py From dynesty with MIT License | 5 votes |
def __init__(self, ndim, cov=None): self.n = ndim if cov is None: cov = np.identity(self.n) self.cov = cov self.am = lalg.pinvh(self.cov) self.axes = lalg.sqrtm(self.cov) self.axes_inv = lalg.pinvh(self.axes) detsign, detln = linalg.slogdet(self.am) self.vol_cube = np.exp(self.n * np.log(2.) - 0.5 * detln) self.expand = 1.
Example #30
Source File: coral.py From srep with GNU General Public License v3.0 | 5 votes |
def get_coral_params(ds, dt, lam=1e-3): ms = ds.mean(axis=0) ds = ds - ms mt = dt.mean(axis=0) dt = dt - mt cs = np.cov(ds.T) + lam * np.eye(ds.shape[1]) ct = np.cov(dt.T) + lam * np.eye(dt.shape[1]) sqrt = splg.sqrtm w = sqrt(ct).dot(np.linalg.inv(sqrt(cs))) b = mt - w.dot(ms.reshape(-1, 1)).ravel() return w, b