Why does matrix inversion cause extremely large values to appear in the inverted matrix?
55 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
raymond bryant
el 18 de Dic. de 2021
Comentada: raymond bryant
el 18 de Dic. de 2021
I'm working on making an fea program where I have a stiffness matrix thats 158 x 158.
When I do \ to find the displacements, I get a sparse vector with several values around 1E16.
I inspected my sitffness matrix and found that most values were in the range of 0.001 to .500
So I inverted the matrix to see what kind of values would appear. I found that my last 4 rows and columns of the inverted stiffness matrix
are all around 1E16.
What could be causing this behavior?
0 comentarios
Respuesta aceptada
Chunru
el 18 de Dic. de 2021
Editada: Chunru
el 18 de Dic. de 2021
Consider ax = b where all variables are scaler, what will happen if a is very samll? Then x wil be large
In linear system Ax = b, if A is not well conditioned, in a sense that its inverse can be very large, x = A\b may have some very large elements. You can use "cond(A)" to check if A is well conditioned or not in matlab.
7 comentarios
Walter Roberson
el 18 de Dic. de 2021
Yes, a non-singular matrix must be square and full rank.
When you use the \ operator if you have more rows than columns then the system is over determined and the operator will return the best-fit coefficients with lowest norm if I recall correctly.
Chunru
el 18 de Dic. de 2021
A non-singulare square matrix is full rank. The rank should be size of the matrix.
Más respuestas (1)
John D'Errico
el 18 de Dic. de 2021
As others have said, a singular stiffness matrix typically means one of several things in a Finite Element problem.
It might be that you made a mistake in the creation of your global stiffness matrix. It happens. Since we cannot possibly know what you did wrong there, then only you can go through your code to fix that.
But perhaps the most common error made in FEA is to insufficiently constrain the problem. That is, if your entire system can freely rotate or translate in some direction as a RIGID body? Then the stiffness matrix will be singular. Remember that FEA works by minimizing the potential energy of the object, so if an enrgy free rotation of translatino exists, then there will be infinitely many solutions. You will then have a singularity. The clue is often a simple one, where the rank is typically one less than the size of the matrix.
Other possibilities are less simple, sometimes reducing to a divide by zero. For example, suppose I designed a very simple truss that connnects nodes a-b, b-c, c-d, but where nodes b and c are coincident? Then the truss member between b amd c will have zero length. Since the stiffness of that truss is found by dividing by the length of that truss member, you have a divide by zero. Other cases might be a 2-d FEA problem composed of triangular elements. But if some of those triangles are constrained to have all nodes in a straight line, then they have zero ara. And again, the stiffness matrix will divide by that area.
There are other ways I could surely come up with to create a numerically singular stiffness matrix, even though it is still mathematically well-posed. But they might involve systems where some elements were made of titanium, and others of polystyrene, so extremely varying stiffnesses.
Regardless, you CANNOT invert a singular stiffness matrix.
Ver también
Categorías
Más información sobre Numerical Integration and Differential Equations 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!