Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python numpy compute first eigenvalue and eigenvector

I was wondering if there is a Python package, numpy or otherwise, that has a function that computes the first eigenvalue and eigenvector of a small matrix, say 2x2. I could use the linalg package in numpy as follows.

import numpy as np

def whatever():
    A = np.asmatrix(np.rand(2, 2))
    evals, evecs = np.linalg.eig(A)
    #Assume that the eigenvalues are ordered from large to small and that the
    #eigenvectors are ordered accordingly.
    return evals[0], evecs[:, 0]

But this takes a really long time. I suspect that it's because numpy computes eigenvectors through some sort of iterative process. So I was wondering if there were a much faster algorithm that only returns the first (largest) eigenvalue and eigenvector, since I only need the first.

For 2x2 matrices of course I can write a function myself, that computes the eigenvalue and eigenvector analytically, but then there are problems with floating point computations, for example when I divide a very big number by a very small number, I get infinity or NaN. Does anyone know anything about this? Please help! Thank you in advance!

like image 262
Ray Avatar asked Oct 20 '11 16:10

Ray


People also ask

How do you find eigenvectors and eigenvalues in NumPy?

In NumPy we can compute the eigenvalues and right eigenvectors of a given square array with the help of numpy. linalg. eig(). It will take a square array as a parameter and it will return two values first one is eigenvalues of the array and second is the right eigenvectors of a given square array.

How would I use the library NumPy to find the eigenvalues?

Finding Eigenvectors with NumPy To find eigenvectors for a matrix, you can use the eig() method from the linalg module of the NumPy library. The eig() method returns a tuple where the first item contains eigenvalues, while the second item contains eigenvectors.


1 Answers

Use this: http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html

http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.eigs.html#scipy.sparse.linalg.eigs

Find k eigenvalues and eigenvectors of the square matrix A.
like image 121
Jack Twain Avatar answered Sep 27 '22 20:09

Jack Twain