Найти фундаментальную систему решений неоднородной системы

Clear["Global`*"]
A={{2,2,2,0,2},{-2,-2,-4,1,-1},{1,1,1,1,4}}
X={x1,x2,x3,x4,x5};
b={2,0,5};
MatrixRank[A]

Вариант решения “как в книжке”

Найдем общее решение однородной системы

osol=Solve[A.X==0,X]
ovec=X/.osol//First

Вектор общего решения однородной системы

ovec//MatrixForm

Фундаментальная система решений однородной системы 
Тут только ручками, нужно найти:
- базисные переменные, их количество равно рангу матрицы (у нас 3 базисные переменные), 
- свободные переменные, для нас их количество наиболее важно, именно свободные переменные используются для нахождения векторов фундаментальной системы, их количество равно количество переменных минус ранг матрицы (у нас 2 свободные переменные).

В данной задаче базисные переменные x2, x4, x5 -- так как именно базисные переменные выражаются через свободные.
Свободные переменные x1, x3.

Для нахождения фундаментальной системы в ВЕКТОРА свободных переменных  подставляют сначала (1,0,...,0), затем (0,1,...,0) и так далее пока не кончатся все свободные переменные (0,0,...,1).
В нашем случае вектор свободных переменных состоит из двух переменных (x1,x3) следовательно для подставлять будем (1,0) и (0,1).

Vec1=Block[{x1=1,x3=0},ovec]

Vec2=Block[{x1=0,x3=1},ovec]

Красивый вывод фундаментальной системы решений однородной системы 
(Внимание это ВЫВОД - КАРТИНКА, в расчетах использовать нельзя, из-за MatrixForm)

Clear[α,β]
ExpressionCell[α MatrixForm[Vec1]+β MatrixForm[Vec2]==MatrixForm[α Vec1+β Vec2]]

Фундаментальная системы решений однородной системы

fsOs=α Vec1+β Vec2

Проверка.  Произведение  матрицы на любую линейной комбинацию полученных векторов всегда нулевой вектор.

{α,β}=RandomInteger[{-100,100},2]
A.(α Vec1+β Vec2)(*через линейную комбинацию*)
A.fsOs(*через ранеее определенную переменную*)

Найдем ЛЮБОЕ частное решение неоднородной системы:

VecN=LinearSolve[A,b]

Красивый вывод фундаментальной системы решений неоднородной  системы 
(Внимание это ВЫВОД - КАРТИНКА, в расчетах использовать нельзя, из-за MatrixForm)

Clear[α,β]
ExpressionCell[α MatrixForm[Vec1]+β MatrixForm[Vec2]+MatrixForm[VecN]==MatrixForm[α Vec1+β Vec2+VecN]]

Фундаментальная система векторов неоднородной системы
Вот наконец-то получен ответ

fsNs=α Vec1+β Vec2+VecN

Проверка.  Произведение  матрицы на любую линейной комбинацию полученных векторов всегда вектор b

{α,β}=RandomInteger[{-100,100},2]
b
A.(α Vec1+β Vec2+VecN)(*через линейную комбинацию*)
A.fsNs(*через ранеее определенную переменную*)

Вариант решения быстрый, для продвинутых пользователей.
Нужно знать что такое линейный оператор, ядро линейного оператора (Kernel, Null Space)

Система векторов фундаментального решения однородной системы

VecS=NullSpace[A]

ЛЮБОЕ частное решение неоднородной системы

VecN=LinearSolve[A,b]

Фундаментальная система векторов неоднородной системы
Вот и ответ

Clear[α,β]
fsNs=α VecS[[1]]+β VecS[[2]]+VecN

Фундаментальная система векторов неоднородной системы (просто красивый вывод)
Вот и ответ

ExpressionCell[α MatrixForm[VecS[[1]]]+β MatrixForm[VecS[[2]]]+MatrixForm[VecN]==MatrixForm[α VecS[[1]]+β VecS[[2]]+VecN]]

Проверка.  Произведение  матрицы на любую линейной комбинацию полученных векторов всегда вектор b

{α,β}=RandomInteger[{-100,100},2]
A.fsNs

Универсальный код для любой неоднородной системы (по большому счету и однородной тоже)

VecS=NullSpace[A];
kn=Length[VecS];
ki=Array[(Subscript[k, #])&,kn];
VecN=LinearSolve[A,b];
fs[ki_]:=Total[ki*VecS]+VecN
xvec=fs[{-10,2}]
A.xvec