assemblt of global stiffness matrix

조회 수: 2 (최근 30일)
TT
TT 2014년 12월 3일
댓글: John D'Errico 2014년 12월 4일
Hi,
I write a code to find stiffness (K) matrix. It is strange that the determinant of K becomes infinity. However, ke, stiffness for each element does make sense and it is symmetric. Global K is also symmetric but as I said determinant is zero instead of infinity. Does anyone know what is the problem?
Thanks

채택된 답변

John D'Errico
John D'Errico 2014년 12월 3일
편집: John D'Errico 2014년 12월 3일
A determinant is NEVER a good measure of whether a matrix is singular. And as matrices get large, the determinant becomes more than useless.
For example,
det(eye(1000)) == 1
however,
det(0.1*eye(1000)) == ???
When computed in floating point in MATLAB, the latter will yield zero, which I imagine you know not to be true. However, both matrices are equally non-singular. As easily, I could have modified the problem to yield inf by a different scale factor.
Answer? Don't use the determinant for anything of importance. It will only guide you to a poor conclusion.
Of course, this does not imply that your matrix has been created correctly or incorrectly. However, your test of that using the determinant is a useless one. Instead, you might look at the rank, or the eigenvalues. A valid stiffness matrix will be at least positive semi-definite. Don't forget that even for a singular matrix, eig can return negative eigenvalues on the order of -eps.
  댓글 수: 2
TT
TT 2014년 12월 3일
Thank you buddy!
My matrix is semi-definite since the rank(k)=rank(k*k) and all of the eigen values are non-negative. So it might be correct.
John D'Errico
John D'Errico 2014년 12월 4일
Another nice trick to show the uselessness of the determinant is to create a numerically singular matrix that has an arbitrarily large determinant. For example:
Q = orth(rand(100));
A = Q'*diag([1:99,0])*Q;
cond(A)
ans =
2.2508e+16
rank(A)
ans =
99
det(A)
ans =
6.2431e+140
A is clearly numerically singular, since I created it that way, with a zero eigenvalue. It has a condition number on the order of 1/eps. Rank says it is rank deficient. Yet the determinant can be immense in magnitude.
I think the best test of whether you created the matrix correctly is if it yields viable predictions. At least this is what I used for the short time in my past when I had to build a few of them.
I'd expect it to be singular, since a stiffness matrix would not see simple translations of an elastic body. They have no affect on the potential energy of the system. And non-negative (and real) eigenvalues is also a positive indicator that it is at least reasonable.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by