4.9 Find particular and homogenous solution to undetermined system of equations

Problem: Find the general solution to \(Ax=b\)

\[\begin {bmatrix} 2 & 4 & 6 & 4\\ 2 & 5 & 7 & 6\\ 2 & 3 & 5 & 2 \end {bmatrix}\begin {bmatrix} x_{1}\\ x_{2}\\ x_{3}\\ x_{3}\end {bmatrix} =\begin {bmatrix} b_{1}\\ b_{2}\\ b_{3}\end {bmatrix} \ where\begin {bmatrix} b_{1}\\ b_{2}\\ b_{3}\end {bmatrix} =\begin {bmatrix} 4\\ 3\\ 5 \end {bmatrix} \]

In Maple 11, the LinearAlgebra package was used. In Mathematica one can also get the general solution, but one must find the Null space specifically and add it to the result from LinearSolve[] since LinearSolve[] finds particular solutions only.

In Matlab the same thing needs to be done. I am not sure now how to make Matlab give me the same particular solution as Maple and Mathematica since Matlab A\(\backslash \)b uses least square approach to determine a solution.  I am sure there is a way, will update this once I find out.

Mathematica

vars = {x1,x2,x3,x4}; 
eqs  ={2 x1+4 x2+6 x3+4 x4==4, 
       2 x1+5 x2+7 x3+6 x4==3, 
       2 x1+3 x2+5 x3+2 x4==5}; 
 
{b,mat} = CoefficientArrays[eqs,vars]; 
Normal[mat]
 

\[ \left ( {\begin {array}{cccc} 2 & 4 & 6 & 4 \\ 2 & 5 & 7 & 6 \\ 2 & 3 & 5 & 2 \\ \end {array}} \right ) \]

Normal[b]
 

Out[163]= {-4,-3,-5}
 

Mathematica LinearSolve gives one solution (particular solution)

particularSolution = LinearSolve[mat,b]
 

Out[164]= {-4,1,0,0}
 

find the homogenous solution (nullspace) and add it to the above particular solution

homogenousSolution =Transpose[NullSpace[mat]]
 

\[ \left ( {\begin {array}{cc} 2 & -1 \\ -2 & -1 \\ 0 & 1 \\ 1 & 0 \\ \end {array}} \right ) \]

Add the particular solution to the homogenous solution to get the general solution

fullSolution = particularSolution+homogenousSolution
 

\[ \left ( {\begin {array}{cc} -2 & -5 \\ -1 & 0 \\ 0 & 1 \\ 1 & 0 \\ \end {array}} \right ) \]

To obtain the general solution right away Solve can be used instead

sol = Flatten[Solve[eqs,vars]] 
 
During evaluation of 
In[167]:= Solve::svars: Equations may 
not give solutions for all 
                 "solve" variables. >>
 

\( \left \{\text {x3}\to -\frac {\text {x1}}{2}-\frac {\text {x2}}{2}+\frac {3}{2},\text {x4}\to \frac {\text {x1}}{4}-\frac {\text {x2}}{4}-\frac {5}{4}\right \} \)

generalSolution = vars/.sol
 

\( \left \{\text {x1},\text {x2},-\frac {\text {x1}}{2}-\frac {\text {x2}}{2}+\frac {3} {2},\frac {\text {x1}}{4}-\frac {\text {x2}}{4}-\frac {5}{4}\right \} \)

 

Matlab

clear all; 
A=[2 4 6 4; 
   2 5 7 6; 
   2 3 5 2] 
 
b=[4 3 5]' 
particularSolution=A\b
 

Warning: Rank deficient, 
  rank = 2, tol =  4.033641e-15. 
 
particularSolution = 
 
         0 
         0 
    1.5000 
   -1.2500
 

nullSolution=null(A,'r')
 

nullSolution = 
 
    -1     2 
    -1    -2 
     1     0 
     0     1
 

 

Maple

restart; 
with(LinearAlgebra); 
vars := x[1], x[2], x[3], x[4]; 
sys := 2*x[1]+4*x[2]+6*x[3]+4*x[4] = 4, 
       2*x[1]+5*x[2]+7*x[3]+6*x[4] = 3, 
       2*x[1]+3*x[2]+5*x[3]+2*x[4] = 5; 
 
`eqs=`, convert([sys], Vector); 
A, b := GenerateMatrix([sys], [vars])
 

\[ A=\left [ {\begin {array}{cccc} 2&4&6&4\\ \noalign {\medskip }2&5&7&6\\ \noalign {\medskip }2&3&5&2\end {array}} \right ] \]

\[ b=\left [ {\begin {array}{c} 4\\ \noalign {\medskip }3\\ \noalign {\medskip }5\end {array}} \right ] \]

`general solution=`, 
  LinearSolve(A, b, free = 'x')
 

\[ \left [ {\begin {array}{c} 4-x_{{3}}+2\,x_{{4}}\\ \noalign {\medskip }-1-x_{{3}}-2\,x_{{4}}\\ \noalign {\medskip }x_{{3}}\\ \noalign {\medskip }x_{{4}}\end {array}} \right ] \]

Can solve this system to get the general solution using the solve command as follows

s := solve([sys], [vars]); 
r := subs(op(s), [vars]); 
`general solution=`, convert(%, Vector)
 

\[ \left [ {\begin {array}{c} 4-x_{{3}}+2\,x_{{4}}\\ \noalign {\medskip }-1-x_{{3}}-2\,x_{{4}}\\ \noalign {\medskip }x_{{3}}\\ \noalign {\medskip }x_{{4}}\end {array}} \right ] \]

 

WARNING: Maple sometimes reorders the result from solve() so we can get a different ordering of the free variables as shown above.