title: Solving 16 equations simultaneously to solve 16 variables using the 'solve' command in MATLAB
body: <p>I have been trying to get a solution to 16 variables with 16 equations (linear) with the solve command.</p>
  
  <p>Below I am pasting my code</p>
  
  <pre><code>syms x11 x12 x13 x14 x21 x22 x23 x24 x31 x32 x33 x34 x41 x42 x43 x44;
   %defining symbolic variables
  
  x=[x11 x12 x13 x14; x21 x22 x23 x24; x31 x32 x33 x34; x41 x42 x43 x44]; % putting all those variables in matrix form
  
  N4=[-1 3 -3 1;3 -6 3 0;-3 3 0 0;1 0 0 0]; % 4*4 control matrix 
  digits(4);% setting precision to 4 digits instead of default 32 
  syms sx;% defining a variable sx 
  for i=1:8 
      for j=1:8 
          u=(i-1)/7; 
          w=(i-1)/7; 
          sx(i,j)= [u^3 u^2 u 1]*N4*x*N4'[w^3;w^2;w;1]; % this gives me 8*8 matrix
      end
  end
  
  for a=1:8 
      for b=1:8 
          kx(a,b)=b; % the x coordinates of 64 points of the image 
      end
  end
  
  ex=0 % defining variable ex which is the error function. 
  
  for i=1:8 
      for j=1:8 
          ex= ex+ (sx(i,j)-kx(i,j))^2;
      end
  end
  
  diff_x11=vpa(diff(ex,x11)); % I want to find values of x11,x12... 
  diff_x12=vpa(diff(ex,x12)); % for which the error ex is minimum
  diff_x13=vpa(diff(ex,x13)); % so I differentiate ex with all 16 
  diff_x14=vpa(diff(ex,x14)); % variables and get 16 equations
  diff_x21=vpa(diff(ex,x21));% and then try to solve them 
  diff_x22=vpa(diff(ex,x22)); 
  diff_x23=vpa(diff(ex,x23)); 
  diff_x24=vpa(diff(ex,x24)); 
  diff_x31=vpa(diff(ex,x31)); 
  diff_x32=vpa(diff(ex,x32)); 
  diff_x33=vpa(diff(ex,x33)); 
  diff_x34=vpa(diff(ex,x34)); 
  diff_x41=vpa(diff(ex,x41)); 
  diff_x42=vpa(diff(ex,x42)); 
  diff_x43=vpa(diff(ex,x43)); 
  diff_x44=vpa(diff(ex,x44)); 
      qx=solve(diff_x11,diff_x12,diff_x13,diff_x14,diff_x21,diff_x22,diff_x23,diff_x24,diff_x31,diff_x32,diff_x33,diff_x34,diff_x41,diff_x42,diff_x43,diff_x44,x11,x12,x13,x14,x21,x22,x23,x24,x31,x32,x33,x34,x41,x42,x43,x44);
  </code></pre>
  
  <p>I used the solve command as shown above. Initially I was getting only 2 values to variables x11 and x44. that time the precision was default 32 digits. As I reduced the precision and started using the 'vpa' command as shown in the code I got two more values x22 and x33. Finally I am getting solution to only 4 variables out of 16 and all 4 of them are diagonal elements of 4*4 matrix with variable elements</p>
  
  <p>I need to get all 16 of them. Any help will be greatly appreciated. Thanks Ankit</p>