LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Efficient procedure to find Eigen values

I'm developing a separate software which requires solving Eigenvalues and Eigenvectors. By definition it requires to multiply all permutations of all elements of the matrix, and for matrices 10 X 10 there are already 3,628,800 permutations, which consumes a lot of time just generating all permutations. I tested Labview vi and it can perform easily 50 X 50 in less than a second.
Does someone know a method to find Eigenvalues and Eigenvectors efficiently, even for matrices over 10 X 10?

I will appreciate any help.
0 Kudos
Message 1 of 9
(3,419 Views)
I don't understand your question. What is "labview vi"?
 
Are you using the "Eigenvalues and Vectors" function from the "math...linear algebra" palette?
0 Kudos
Message 2 of 9
(3,402 Views)
Yes, the one in "math...linear algebra" palette. I just forgot to mention that the function I'm trying to do is with Complex numbers. So if you know a method to obtain Eigenvalues and Eigenvectors for a matrix of 10 X 10 or more, of Complex numbers, I would greatly appreciate it.

Thank you for reading.
0 Kudos
Message 3 of 9
(3,398 Views)

What is your LabVIEW version?

Here in 8.5, the function mentioned is polymorphic and will work with complex matrices automatically (or you can manually choose the complex polymorphic instance)..

0 Kudos
Message 4 of 9
(3,393 Views)
Sorry, but I'm still using just Labview 5, which Real and Complex functions come in separate vis.
Anyway, my problem right now is not with Labview itself, but a Mathematics problem. I'm trying to find the Eigenvalues based on its definition |lambda   A| = 0; which requires multiplying all permutations of its elements, right now I have something that works somehow up to 6 X 6 in an acceptable time (unoticeable), but as I increase the size, you start to wait just for the permutations to be generated (eliminating whatever else), and I calculated that for a 20 X 20 matrix, there are 20! = 2432902008176640000 permutations!, if I use a 1GHz computer generating efficiently permutations one per each cycle, it still needs 77 years to finish.
But Labview is nicely doing it in a fraction of a second. I read there are several methods of solving them, but none tells me their efficiency, and I don't want to test one by one to know which is the fastest.
So if someone know which method Labview is using, or any other method capable to perform large matrices in a reasonable time, it will be appreciated.

Thank you for reading.
0 Kudos
Message 5 of 9
(3,390 Views)
Hi Dragon,

The Linear Algebra VIs in LabVIEW use the BLAS/lapack (Basic Linear Algebra Programs/ Linear Algebra Package). You can search the web for more information on the algorithms used in BLAS/lapack. (There are multiple hits in Google, such as this one.)

Hope this helps!
Amanda Howard
Americas Services and Support Recruiting Manager
National Instruments
0 Kudos
Message 6 of 9
(3,367 Views)
Thank you, Amanda. It will help me a lot.

Thank you everybody.
0 Kudos
Message 7 of 9
(3,363 Views)


@Amanda H wrote:
The Linear Algebra VIs in LabVIEW use the BLAS/lapack (Basic Linear Algebra Programs/ Linear Algebra Package).

This has been introduced in LabVIEW 7.1, so it does not apply to your native LabVIEW 5 algorithms, which were proprietary

Most likely, the BLAS/Lapack routines are better, so for you it would definitely be worth to look into this. 🙂

Message Edited by altenbach on 10-30-2007 03:42 PM

0 Kudos
Message 8 of 9
(3,353 Views)
Heres a thought if you have the VI.  Try using the singular value decomposition (SVD), every matrix has an SVD, from there you can get the eigenvalues and eigenvectors of any matrix.  There may be some converting of values, so look up SVD and see how it works.  Reply if you need more details.
0 Kudos
Message 9 of 9
(3,327 Views)