I'm trying to find the null space (solution space of Ax=0) of a given matrix. I've found two examples, but I can't seem to get either to work. Moreover, I can't understand what they're doing to get there, so I can't debug. I'm hoping someone might be able to walk me through this.
The documentation pages (numpy.linalg.svd, and numpy.compress) are opaque to me. I learned to do this by creating the matrix C = [A|0], finding the reduced row echelon form and solving for variables by row. I can't seem to follow how it's being done in these examples.
Thanks for any and all help!
Here is my sample matrix, which is the same as the wikipedia example:
A = matrix([     [2,3,5],     [-4,2,3]     ])   Method (found here, and here):
import scipy from scipy import linalg, matrix def null(A, eps=1e-15):     u, s, vh = scipy.linalg.svd(A)     null_mask = (s <= eps)     null_space = scipy.compress(null_mask, vh, axis=0)     return scipy.transpose(null_space) When I try it, I get back an empty matrix:
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)  [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import scipy >>> from scipy import linalg, matrix >>> def null(A, eps=1e-15): ...    u, s, vh = scipy.linalg.svd(A) ...    null_mask = (s <= eps) ...    null_space = scipy.compress(null_mask, vh, axis=0) ...    return scipy.transpose(null_space) ...  >>> A = matrix([ ...     [2,3,5], ...     [-4,2,3] ...     ])   >>>  >>> null(A) array([], shape=(3, 0), dtype=float64) >>>  Sympy makes this straightforward.
>>> from sympy import Matrix >>> A = [[2, 3, 5], [-4, 2, 3], [0, 0, 0]] >>> A = Matrix(A) >>> A * A.nullspace()[0] Matrix([ [0], [0], [0]]) >>> A.nullspace() [Matrix([ [-1/16], [-13/8], [    1]])] If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With