Viewing file: linear_algebra.py (2.13 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
"""Backward compatible with LinearAlgebra from Numeric """ # This module is a lite version of the linalg.py module in SciPy which contains # high-level Python interface to the LAPACK library. The lite version # only accesses the following LAPACK functions: dgesv, zgesv, dgeev, # zgeev, dgesdd, zgesdd, dgelsd, zgelsd, dsyevd, zheevd, dgetrf, dpotrf.
__all__ = ['LinAlgError', 'solve_linear_equations', 'inverse', 'cholesky_decomposition', 'eigenvalues', 'Heigenvalues', 'generalized_inverse', 'determinant', 'singular_value_decomposition', 'eigenvectors', 'Heigenvectors', 'linear_least_squares' ]
from numpy.core import transpose import numpy.linalg as linalg
# Linear equations
LinAlgError = linalg.LinAlgError
def solve_linear_equations(a, b): return linalg.solve(a,b)
# Matrix inversion
def inverse(a): return linalg.inv(a)
# Cholesky decomposition
def cholesky_decomposition(a): return linalg.cholesky(a)
# Eigenvalues
def eigenvalues(a): return linalg.eigvals(a)
def Heigenvalues(a, UPLO='L'): return linalg.eigvalsh(a,UPLO)
# Eigenvectors
def eigenvectors(A): w, v = linalg.eig(A) return w, transpose(v)
def Heigenvectors(A): w, v = linalg.eigh(A) return w, transpose(v)
# Generalized inverse
def generalized_inverse(a, rcond = 1.e-10): return linalg.pinv(a, rcond)
# Determinant
def determinant(a): return linalg.det(a)
# Linear Least Squares
def linear_least_squares(a, b, rcond=1.e-10): """returns x,resids,rank,s where x minimizes 2-norm(|b - Ax|) resids is the sum square residuals rank is the rank of A s is the rank of the singular values of A in descending order
If b is a matrix then x is also a matrix with corresponding columns. If the rank of A is less than the number of columns of A or greater than the number of rows, then residuals will be returned as an empty array otherwise resids = sum((b-dot(A,x)**2). Singular values less than s[0]*rcond are treated as zero. """ return linalg.lstsq(a,b,rcond)
def singular_value_decomposition(A, full_matrices=0): return linalg.svd(A, full_matrices)
|