I have an orthotropic material with a (6x1) stress vector known in the global coordinate system and yield surfaces known in a local coordinate system. So far I have only needed to convert from local to the global system and this has been done in the standard way of C = G.T*D*G where C is the stiffness matrix in the global coordinates, G is a 6x6 transformation matrix and D is the stiffness matrix in the local coordinate system. Now I need to convert my stresses living in the global system into stresses in the local system. The way I attempted to do this is using Sl = G.I*Sg, where Sl is the stress vector in the local coordinates and Sg is the stress vector in the globals, and G.I is the inverse of G. However I find that in some cases G is singular, ie not invertible.

Can anyone suggest a way around this problem, preferably by not inverting G?

  • 1
    $\begingroup$ So $G$ is the transformation matrix from the local to the global system? If so, from physical considerations it must remain invertible. If it isn't, you're doing something wrong. $\endgroup$ – Wolfgang Bangerth Mar 5 '14 at 14:11

Rotation matrices being orthogonal should always remain invertible. However in certain cases (e.g. when estimating it from data or so on) you might end up with non-invertible or non-orthogonal matrices. There are some ways to get around with this:

1) If your issues are numerical, you might just add some small random noise to this matrix - or its diagonal to purturb it. This is not an ideal operation and disrupts the orthogonality. But you can now proceed to step 2, to recover it.

2) One way to orthogonalize your rotation matrix is to use SVD as in MATLAB notation $[U,S,V]=svd(G)$. And you should check the singular values $S$ to see if they correspond to the identity matrix. If not replace them by the identity matrix and recompose the matrix. This would just equate to $G=U*V$.

This way you guarantee the orthogonality and thus invertibility (For orthogonal matrices the inverse is equal to the transpose). So, you might just use the transpose operation to get the inverse of the matrix.

If you are really keen on learning some methods in detail, here is a relatively easy to read tutorial: http://www.cis.upenn.edu/~cis610/invers.pdf



If G is singular, use an approximation, like the pseudo inverse.

  • $\begingroup$ I assume you mean the Moore-Penrose generalized inverse? $\endgroup$ – Geoff Oxberry Mar 6 '14 at 5:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.