问题
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.
回答1:
You can add some minute identity matrix to A:
A = A + small_coeff * eye(size(A));
so that resulting matrix will be sufficiently non-singular
来源:https://stackoverflow.com/questions/17263873/singularity-for-inverse-matrix