MATLAB Answers


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

Benedict Teng 님이 질문을 제출함. 12 Oct 2019
최근 활동 Christine Tobler 님이 답변함. 28 Oct 2019 16:20
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.
Did anyone experience the same thing before? Can anyone advice more?
Im still new to Matlab, hope u guys can help.

  댓글 수: 0

로그인 to comment.




답변 수: 2

John D'Errico 님의 답변 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

표시 이전 댓글 수: 1
Eigenvalues tend to be generated in a quasi-ordered sequence, due to the way they are estimated. Again, this is completely expected. Nothing you have said is any surprise.
Next, will you tell us that amazingly, the eigenvalues are numbers? :)
My 9000 eigenvalues are from 0-100 with very small intervals in between.
Can you explain more in details how the eigenvalues are generated?
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 =
Now look at the spacing that you have seen.
E = [0.00504924216493406
>> mean(diff(sort(E)))
ans =
Based on a sample of only 5 numbers out of 9000, that seems to be not at all unreasonable.

로그인 to comment.

Christine Tobler 님의 답변 28 Oct 2019 16:20

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.

  댓글 수: 0

로그인 to comment.

Translated by