[lisplab-devel] Eigenvalues

José Santos jsmpereira at gmail.com
Fri Mar 15 09:59:41 UTC 2013


Hi,

After trying out GSLL, Clem, also FemLisp, Lisplab managed to get me
the functionality I needed with the least trouble.

I'm trying to get the connectivity of a graph (second smallest eigen value)
from eigenvalues.

Given the fully connected 4x4 adjacency matrix:

#md(( 0.000      1.000      1.000      1.000    )
    ( 1.000      0.000      1.000      1.000    )
    ( 1.000      1.000      0.000      1.000    )
    ( 1.000      1.000      1.000      0.000    ))

I compute the diagonal matrix of the vector sum of the adjacency matrix and
then
subtract the adjacency matrix from it to get the laplacian matrix.

I'm unable to call (lisplab:eigenvalues) on that matrix, despite being a
#md matrix.
I can see that the function calls for LISPLAB::MATRIX-FOREIGN-DGE. However
other functions
that call for the same type seem to work when called with #md, namely FFT1.

As a workaround, I'm using this call to get the eigenvalues:

(lisplab::dgeev (laplacian-matrix *adj-matrix* *diag-matrix*) nil nil) and
I get:

(
#md(( 4.000    )
    (-1.1102d-16)
    ( 4.000    )
    ( 4.000    ))
 NIL NIL)

Is this appropriate?

I'm curious however about different results I get from Matlab.
I get the same results up until the call to

>> eig(diag(sum(A)) - A)

which gives me

ans =

    0.0000
    4.0000
    4.0000
    4.0000

Any comment I can get on this would be awsome. Am I going about this right?
What might I be missing?

Sorry about the lengthy email.

Thanks!
José Santos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/lisplab-devel/attachments/20130315/137a6d66/attachment.html>


More information about the lisplab-devel mailing list