This project has moved and is read-only. For the latest updates, please go here.

Eigenvalues / Eigenvector

Nov 13, 2014 at 8:00 PM
Edited Nov 13, 2014 at 8:59 PM
Hallo all,

I looked into Math.NET for usage in my Research. More specific I am looking for a library that can compute the Eigenvectors and Values of medium (500+) matrices. I need this for graph matching and graph drawing. My background is Architecture with a little bit of knowledge in programming and math but unfortunatly not enough to understand all the problems of the implementation of algorithms calculating eigenvalues/eigenvectors. The aim is to use graphMatching within the field of Architecture for the generation of layouts.

I have had a quick look into the .evd() function and it works better than other libraries I have looked at. But a few questions have poped up about the outputs:
  1. Laplacian Matrix
    All publications read so far on Laplacian matrices asure me that the resulting eigenvalues should be equal or larger than 0 for a symetric matrix. (e.g. http://en.wikipedia.org/wiki/Laplacian_matrix)
    However with a spares matrix of 553*553 enteries the smallest Eigenvalues is given with -1.
  2. Different outputs for the same Matrix
    If have checked the outputs for the following laplacianMatrix with different libraries (MATH.net and Wolfram Alpha):
    [ {4,-1,-1,-1,-1},{-1,4,-1,-1,-1},{-1,-1,4,-1,-1},{-1,-1,-1,4,-1},{-1,-1,-1,-1,4}]
    This is the Laplacian Matrix of the K5 Graph.
This will output the Eigenvalues of 0, 5, 5, 5, 5.
The Eigenvector for the Eigenvalue 0 will be the same in both cases but the other Eigenvalues do not match at all.

What did I miss? + as fare as I understand Eigenvalues / Eigenvectors are aproximated in some cases how can I handle the error.

Thx for any help,

Best Richard

Edit: I don't know what is happening exactly but it seams that the Eigenvalues of -1 of the Laplacian should actually be 0 beacaus when imputing a distjoined graph (two connected components, undirected graph) than I get two -1 values. However two 0 values should be outputed, so what to do?
Nov 14, 2014 at 10:19 AM
Thanks, I'll have to look into this in more detail. Are you using the managed or the MKL provider in Math.NET?

Thanks,
Christoph
Nov 14, 2014 at 8:25 PM
Edited Nov 14, 2014 at 8:45 PM
Hallo Christoph,

How can I tell? I have downloaded the "RECOMMENDED DOWNLOAD" and used the .net 3.5 Version and used the MathNet.Numerics.dll wih the following code:
    M = M.Build.Dense(tmpG.dimension, tmpg.dimension)

    ' this is just parsing from another Matrix class I have been using into the MATh.NEt matrix class
    For i As Integer = 0 To tmpG.dimension - 1
      M.SetRow(i, tmpG.Matrix.Row(i).ToArray)
    Next

    tmpEVD = M.Evd(Symmetricity.Symmetric)
    print(M.toString())
    print(tmpEVD.Eigenvectors.toString())
    print(tmpEVD.D.ToString())
I can also post the matrix as *.csv if that helps.

However can you tell me which Algorithmen is used within Math.net to compute the eigenvalues to get a better understanding of which problems or errors might occure, since I came to understand that especially if the Eigenvalues of the matrix are not unique the resulting eigenvectors might be wrong as well...

To add to my EDIT:
It seams that the Eigenvectors associated with the Eigenvalues of -1 (which schould be 0) are correct.

thanks

Richard

EDIT: I have to appologice Issue two I have resoved there was an error in my matrix. However the other questions are still there.