diff options
author | Travis Oliphant <oliphant@enthought.com> | 2006-08-04 23:32:12 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2006-08-04 23:32:12 +0000 |
commit | f1cca04886d4f63f7b1ed5b382986af3a9ee6a61 (patch) | |
tree | 053f566b31cb6edc24a41b800ec7f2972c4bca40 /numpy/oldnumeric/linear_algebra.py | |
parent | 8f26568de7cc97ac0dcedfd5061e08bb54770b61 (diff) | |
download | numpy-f1cca04886d4f63f7b1ed5b382986af3a9ee6a61.tar.gz |
Many name-changes in oldnumeric. This may break some numpy code that was using the oldnumeric interface.
Diffstat (limited to 'numpy/oldnumeric/linear_algebra.py')
-rw-r--r-- | numpy/oldnumeric/linear_algebra.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/numpy/oldnumeric/linear_algebra.py b/numpy/oldnumeric/linear_algebra.py new file mode 100644 index 000000000..90d6f7138 --- /dev/null +++ b/numpy/oldnumeric/linear_algebra.py @@ -0,0 +1,84 @@ + +"""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) |