Does it make sense to find the null space of a symbolic matrix?

28 views (last 30 days)
I've been struggling with this calculation: find the basis vectors of the kernel for the following symbolic matrix:
L = [ -a-f b e // a -b-d c // f d -e-c ]
The purpose of doing this is to find symbolic eigenvectors of this matrix. I've found symbolic eigenvalues and the symbolic eigenvector that corresponds to lambda = 0. When I attempt to repeat the process for the second and third eigenvalues (which are algebraic polynomials in the variables a, b, c, d, e, f), the reduced row echelon form of the resulting matrix is the identity.
The troubling thing is, when I compute the eigenvectors in MatLab (using eig(L)), I get symbolic eigenvectors. So why can't I calculate them by hand? I'd really like to have a mathematical proof of this result if I can get my hands on it.
How else can you compute eigenvectors by hand without reducing L-lambda*I to reduced row echelon form and solving the resulting system to get its nullspace? Why should the nullspace of L-lambda_x*I return an empty vector when there are clearly eigenvectors for the eigenvalues lambda_2, lambda_3?
I've tried this computation using multiple RREF and nullspace online calculators, and using MatLab and Mathematica to attempt the computation. It still doesn't make sense to me why I can't get the math to come out. Please, please, please help if you know anything.

Answers (1)

John D'Errico
John D'Errico on 30 Oct 2021
Edited: John D'Errico on 30 Oct 2021
Is this the matrix? It would help IF you are asking a question about MATLAB, to use MATLAB symtax!
syms a b c d e f
L = [ -a-f, b, e ; a, -b-d, c ; f, d, -e-c ]
L = 
Assuming that is really the matrix you have, then clearly the sum of any column is zero. And that tells me the rank of said matrix is at most 2. It MAY be less than that however. For example, consider the variation where
a = b = c = d = e = f = 0
Now the matrix will have rank 0. And there would be ways we could form a version of L which has rank 1. But if those variables are fully general, rank does seem to recognize the matrix has rank 2 though.
rank(L)
ans = 2
As well, I see that the vector [1 1 1] will kill off that matrix. We can see that as
[1 1 1]*L
ans = 
So what did you do? You used eig. It would be easier to use null. Thus null(A) provides the nullspace of A, such that A*x == 0
null(L.')
ans = 
Can we get that from eig? Again, remember that you need to look for the LEFT eigenvectors of L. That is, a vector X such that X*L == 0.
We can X simply as:
[V,D] = eig(L.');
D(1,1)
ans = 
0
So the first eigenvalue is 0. The corresponding left eigenvector is:
V(:,1)'
ans = 
Again, it works as it should.
What happens when you try to find the nullspace for L instead? THINK ABOUT IT! In the context of what I have written, what does it mean when you use null or eig on L? For example:
Lnull = null(L)
Lnull = 
So Lnull is the vector such that when it is RIGHT multiplied with L, gives you zeros.smiplify(
simplify(L*Lnull)
ans = 
Similarly, eig does the same.
[V,D] = eig(L);
D(1,1)
ans = 
0
V(:,1)
ans = 
The point is, in order to compute the vector that kills off L, are you forming a linear combination of the columns or of the rows? This is a huge difference, and one it seems like you have missed. x*L combines the rows of L. L*x combines the columns.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!