How does one solve the (non-trivial) solution Ax = 0 for x in MATLAB?
A = matrix
x = matrix trying to solve for
I've tried solve('A * x = 0', 'x') but I only get 0 for an answer.
How does one solve the (non-trivial) solution Ax = 0 for x in MATLAB?
A = matrix
x = matrix trying to solve for
I've tried solve('A * x = 0', 'x') but I only get 0 for an answer.
null(A)
will give you the direct answer. If you need a nontrivial solution, try reduced row echelon form and refer the first page of the pdf.http://www.math.colostate.edu/~gerhard/M345/CHP/ch7_4.pdf
You can use
N = null(A)
to get a matrixN
. Any of the columns ofN
(or, indeed, any linear combination of columns ofN
) will satisfyAx = 0
. This describes all possible suchx
- you've just found an orthogonal basis for the nullspace ofA
.Note: you can only find such an
x
ifA
has non-trivial nullspace. This will occur ifrank(A) < #cols of A
.You can see if MATLAB has a singular value decomposition in its toolbox. That will give you the null space of the vector.
Please note that null(A) does the same thing (for a rank-deficient matrix) as the following, but this is using the
svd(A)
function in MATLAB (which as I've mentioned in my comments is whatnull(A)
does).For more about this, here's an link related to this (can't post it to here due to the formulae).
If you want a more intuitive feel of singular and eigenvalue decompositions check out
eigshow
in MATLAB.