Matlab mldivide returns NaN when there are multiple solutions

Illustration
McCormack - 2024-11-18T19:13:03+00:00
Question: Matlab mldivide returns NaN when there are multiple solutions

I have two matrices:   A = [ -1 0 0; 1 1 -1; 0 -1 1 ]; B = [-1; 0; 1]; and I want to solve the following equation: Ax=B when I use mldivide function I get a matrix of NaNs   X = mldivide(A,B) X = NaN NaN NaN Knowing there are multiple solutions to this problem I manually tested if one of them, namely [1;0;1] returns B:   A*[1; 0; 1] and, as expected, I reassured myself that it is one of multiple solutions. So here is my question: why does mldivide return incorret solution?

Expert Answer

Profile picture of John Williams John Williams answered . 2025-11-20

Your matrix A is singular. The MATLAB doc states that in these cases, mldivide is unreliable ("... When working with ill-conditioned matrices, an unreliable solution can result ...") and suggests to use lsqminnorm( ) or pinv( ) instead (see "Tips"). E.g.,

 

>> A = [ -1 0  0;
    1 1 -1;
    0 -1 1 ];
>> B = [-1; 0; 1];
>> A\B
Warning: Matrix is singular to working precision. 
 
ans =
   NaN
   NaN
   NaN
>> A*ans-B
ans =
   NaN
   NaN
   NaN
>> lsqminnorm(A,B)
ans =
    1.0000
   -0.5000
    0.5000
>> A*ans-B
ans =
   1.0e-15 *
    0.4441
   -0.3331
   -0.1110
>> pinv(A)*B
ans =
    1.0000
   -0.5000
    0.5000
>> A*ans-B
ans =
   1.0e-15 *
    0.2220
   -0.4441
    0.2220

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!