As data I get a matrix A but in my algorithm I need to work on its inverse. What I do is:
C = inv(A) + B;
Then in another line I update A. In the next cycles I also need (updated) A inverse, again for this algorithm. And so on. In the later cycles I get this:
Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.425117e-019
or this:
Warning: Matrix is singular to working precision.
or this:
Warning: Matrix is singular, close to singular or badly scaled. Results may be inaccurate. RCOND = NaN.
Can you help me how to avoid such singularity? Matrix is squared always.
It definitely depends on what you are doing and what matrix
Arepresents (in some cases there might be programming error causingAbecome singular). But if the singularity ofAis unavoidable, you can use the Moore-Penrose pseudoinverse as an alternative to inverse matrix which has most of the properties of an inverse matrix (See it in wiki).The equivalent command in Matlab would be
pinv.