"""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)
|