assemblt of global stiffness matrix
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
TT
el 3 de Dic. de 2014
Comentada: John D'Errico
el 4 de Dic. de 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
0 comentarios
Respuesta aceptada
John D'Errico
el 3 de Dic. de 2014
Editada: John D'Errico
el 3 de Dic. de 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 comentarios
John D'Errico
el 4 de Dic. de 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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Linear Algebra en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!