assemblt of global stiffness matrix

3 visualizzazioni (ultimi 30 giorni)
TT
TT il 3 Dic 2014
Commentato: John D'Errico il 4 Dic 2014
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

Risposta accettata

John D'Errico
John D'Errico il 3 Dic 2014
Modificato: John D'Errico il 3 Dic 2014
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 Commenti
TT
TT il 3 Dic 2014
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 il 4 Dic 2014
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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Linear Algebra in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by