Why my eigenvalues from (v,d)=eig(k,m) are so close to each other?

51 vues (au cours des 30 derniers jours)
Benedict Teng
Benedict Teng le 12 Oct 2019
Hi All,
My simulation is to compute the natural frequencies of a problem. My method is FEA by Matlab which include assembling of stiffness matrix and mass matrix.
Then i calculate the natural frequencies by using eig() function. Both stiffness and mass matrix are huge (9000 X 9000).
Here are some first few eigenvalues (natural frequencies) i've got from the simulation. My code is too long so i didnt post it.
0.00504924216493406
0.00700586308874820
0.0653914081546258
0.0743584689582256
0.0827517570948079
Did anyone experience the same thing before? Can anyone advice more?
Im still new to Matlab, hope u guys can help.
Regards,
Ben

Réponses (3)

John D'Errico
John D'Errico le 12 Oct 2019
You will have 9000 eigenvalues. Some will be small, some larger. How far apart do you think those that are small can realistically be?
Said differently, yes, this is completely as one should expect.
  4 commentaires
Benedict Teng
Benedict Teng le 12 Oct 2019
My 9000 eigenvalues are from 0-100 with very small intervals in between.
Can you explain more in details how the eigenvalues are generated?
John D'Errico
John D'Errico le 12 Oct 2019
Sorry. That would require a course on numerical linear algebra, something worth taking, but far beyond an answer here. And since it looks like you have little understanding of eigenvalues at all, that explanation would need to go into a great deal of depth, because I would have to start at the very beginning for someone who it seems has little background in linear algebra. There are lots of good books. Start with Cleve's book which I am sure has a good discussion.
You should consider that even if you have 9000 totally arbitrarily distributed numbers in the interval [0,100] what would be an estimate of the average spacing? Hint:
>> (100 - 0)/9000
ans =
0.011111
Now look at the spacing that you have seen.
E = [0.00504924216493406
0.00700586308874820
0.0653914081546258
0.0743584689582256
0.0827517570948079];
>> mean(diff(sort(E)))
ans =
0.019426
Based on a sample of only 5 numbers out of 9000, that seems to be not at all unreasonable.

Connectez-vous pour commenter.


Christine Tobler
Christine Tobler le 28 Oct 2019
Since you mentioned eigenvalues converging at a certain number in the context of FEA analysis: This is usually not the case for the sequence of the eigenvalues of one matrix, but the eigenvalues of several matrices at different discretization levels.
So if you choose three different discretization levels, let's call them 0, 1 and 2, and generate matrices K0, M0 (for example of size 100), K1, M1 (for example of size 800) and K2, M2 (for example of size 9000), then the smallest eigenvalue of each of these matrix pairs should converge from 0 to 1 to 2. If you plot the smallest eigenvalue for a larger set of discretization levels (e.g., with the matrices growing by a factor 2 in each step), you should be able to plot the behavior of the smallest eigenvalue of each of these, and this should converge towards the exact eigenvalue of the original PDE system.
It's been a while since my last PDE course, but as I remember there were many such plots involved, including some theory about the expected speed of convergence based on what elements are used, and what problem you are solving.

MOHD UBAID
MOHD UBAID le 19 Avr 2020
can you please post the code for finding the eigen values?

Catégories

En savoir plus sur Linear Algebra dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by