1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

""" 

==================================== 

Linear algebra (:mod:`scipy.linalg`) 

==================================== 

 

.. currentmodule:: scipy.linalg 

 

Linear algebra functions. 

 

.. seealso:: 

 

`numpy.linalg` for more linear algebra functions. Note that 

although `scipy.linalg` imports most of them, identically named 

functions from `scipy.linalg` may offer more or slightly differing 

functionality. 

 

 

Basics 

====== 

 

.. autosummary:: 

:toctree: generated/ 

 

inv - Find the inverse of a square matrix 

solve - Solve a linear system of equations 

solve_banded - Solve a banded linear system 

solveh_banded - Solve a Hermitian or symmetric banded system 

solve_circulant - Solve a circulant system 

solve_triangular - Solve a triangular matrix 

solve_toeplitz - Solve a toeplitz matrix 

det - Find the determinant of a square matrix 

norm - Matrix and vector norm 

lstsq - Solve a linear least-squares problem 

pinv - Pseudo-inverse (Moore-Penrose) using lstsq 

pinv2 - Pseudo-inverse using svd 

pinvh - Pseudo-inverse of hermitian matrix 

kron - Kronecker product of two arrays 

tril - Construct a lower-triangular matrix from a given matrix 

triu - Construct an upper-triangular matrix from a given matrix 

orthogonal_procrustes - Solve an orthogonal Procrustes problem 

matrix_balance - Balance matrix entries with a similarity transformation 

subspace_angles - Compute the subspace angles between two matrices 

LinAlgError 

LinAlgWarning 

 

Eigenvalue Problems 

=================== 

 

.. autosummary:: 

:toctree: generated/ 

 

eig - Find the eigenvalues and eigenvectors of a square matrix 

eigvals - Find just the eigenvalues of a square matrix 

eigh - Find the e-vals and e-vectors of a Hermitian or symmetric matrix 

eigvalsh - Find just the eigenvalues of a Hermitian or symmetric matrix 

eig_banded - Find the eigenvalues and eigenvectors of a banded matrix 

eigvals_banded - Find just the eigenvalues of a banded matrix 

eigh_tridiagonal - Find the eigenvalues and eigenvectors of a tridiagonal matrix 

eigvalsh_tridiagonal - Find just the eigenvalues of a tridiagonal matrix 

 

Decompositions 

============== 

 

.. autosummary:: 

:toctree: generated/ 

 

lu - LU decomposition of a matrix 

lu_factor - LU decomposition returning unordered matrix and pivots 

lu_solve - Solve Ax=b using back substitution with output of lu_factor 

svd - Singular value decomposition of a matrix 

svdvals - Singular values of a matrix 

diagsvd - Construct matrix of singular values from output of svd 

orth - Construct orthonormal basis for the range of A using svd 

null_space - Construct orthonormal basis for the null space of A using svd 

ldl - LDL.T decomposition of a Hermitian or a symmetric matrix. 

cholesky - Cholesky decomposition of a matrix 

cholesky_banded - Cholesky decomp. of a sym. or Hermitian banded matrix 

cho_factor - Cholesky decomposition for use in solving a linear system 

cho_solve - Solve previously factored linear system 

cho_solve_banded - Solve previously factored banded linear system 

polar - Compute the polar decomposition. 

qr - QR decomposition of a matrix 

qr_multiply - QR decomposition and multiplication by Q 

qr_update - Rank k QR update 

qr_delete - QR downdate on row or column deletion 

qr_insert - QR update on row or column insertion 

rq - RQ decomposition of a matrix 

qz - QZ decomposition of a pair of matrices 

ordqz - QZ decomposition of a pair of matrices with reordering 

schur - Schur decomposition of a matrix 

rsf2csf - Real to complex Schur form 

hessenberg - Hessenberg form of a matrix 

cdf2rdf - Complex diagonal form to real diagonal block form 

 

.. seealso:: 

 

`scipy.linalg.interpolative` -- Interpolative matrix decompositions 

 

 

Matrix Functions 

================ 

 

.. autosummary:: 

:toctree: generated/ 

 

expm - Matrix exponential 

logm - Matrix logarithm 

cosm - Matrix cosine 

sinm - Matrix sine 

tanm - Matrix tangent 

coshm - Matrix hyperbolic cosine 

sinhm - Matrix hyperbolic sine 

tanhm - Matrix hyperbolic tangent 

signm - Matrix sign 

sqrtm - Matrix square root 

funm - Evaluating an arbitrary matrix function 

expm_frechet - Frechet derivative of the matrix exponential 

expm_cond - Relative condition number of expm in the Frobenius norm 

fractional_matrix_power - Fractional matrix power 

 

 

Matrix Equation Solvers 

======================= 

 

.. autosummary:: 

:toctree: generated/ 

 

solve_sylvester - Solve the Sylvester matrix equation 

solve_continuous_are - Solve the continuous-time algebraic Riccati equation 

solve_discrete_are - Solve the discrete-time algebraic Riccati equation 

solve_continuous_lyapunov - Solve the continous-time Lyapunov equation 

solve_discrete_lyapunov - Solve the discrete-time Lyapunov equation 

 

 

Sketches and Random Projections 

=============================== 

 

.. autosummary:: 

:toctree: generated/ 

 

clarkson_woodruff_transform - Applies the Clarkson Woodruff Sketch (a.k.a CountMin Sketch) 

 

Special Matrices 

================ 

 

.. autosummary:: 

:toctree: generated/ 

 

block_diag - Construct a block diagonal matrix from submatrices 

circulant - Circulant matrix 

companion - Companion matrix 

dft - Discrete Fourier transform matrix 

hadamard - Hadamard matrix of order 2**n 

hankel - Hankel matrix 

helmert - Helmert matrix 

hilbert - Hilbert matrix 

invhilbert - Inverse Hilbert matrix 

leslie - Leslie matrix 

pascal - Pascal matrix 

invpascal - Inverse Pascal matrix 

toeplitz - Toeplitz matrix 

tri - Construct a matrix filled with ones at and below a given diagonal 

 

Low-level routines 

================== 

 

.. autosummary:: 

:toctree: generated/ 

 

get_blas_funcs 

get_lapack_funcs 

find_best_blas_type 

 

.. seealso:: 

 

`scipy.linalg.blas` -- Low-level BLAS functions 

 

`scipy.linalg.lapack` -- Low-level LAPACK functions 

 

`scipy.linalg.cython_blas` -- Low-level BLAS functions for Cython 

 

`scipy.linalg.cython_lapack` -- Low-level LAPACK functions for Cython 

 

""" # noqa: E501 

 

from __future__ import division, print_function, absolute_import 

 

from .linalg_version import linalg_version as __version__ 

 

from .misc import * 

from .basic import * 

from .decomp import * 

from .decomp_lu import * 

from ._decomp_ldl import * 

from .decomp_cholesky import * 

from .decomp_qr import * 

from ._decomp_qz import * 

from .decomp_svd import * 

from .decomp_schur import * 

from ._decomp_polar import * 

from .matfuncs import * 

from .blas import * 

from .lapack import * 

from .special_matrices import * 

from ._solvers import * 

from ._procrustes import * 

from ._decomp_update import * 

from ._sketches import * 

 

__all__ = [s for s in dir() if not s.startswith('_')] 

 

from numpy.dual import register_func 

for k in ['norm', 'inv', 'svd', 'solve', 'det', 'eig', 'eigh', 'eigvals', 

'eigvalsh', 'lstsq', 'cholesky']: 

try: 

register_func(k, eval(k)) 

except ValueError: 

pass 

 

try: 

register_func('pinv', pinv2) 

except ValueError: 

pass 

 

del k, register_func 

 

from scipy._lib._testutils import PytestTester 

test = PytestTester(__name__) 

del PytestTester