Matlab mldivide returns NaN when there are multiple solutions

M
McCormack · Nov 18, 2024 · 2.1K views
Question
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 PhD Expert
Answered Aug 19, 2026

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

 

100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!