Suponha que um par de matrizes $(A,B)$ não seja controlável. Então podemos decompor o sistema numa parte controlável e outra sem controle.
Diremos que um par de matrizes $(A,B)$ é equivalente a um par de matrizes $(A_1,B_1)$ se existirem matrizes inversíveis $P \in \mathbb{M}_{n\times n}$ e $Q\in \mathbb{M}_{m\times m}$ tal que: $$ PAP^{-1} = A_1 \text{ e } PBK^{-1} = B_1 $$ Esta é uma relação de equivalência no conjunto desses pares de matrizes e, de outra forma, também indicam que os sistemas lineares $$ \begin{gather}\dot{x} = Ax + Bu \\ \dot{z} = A_1 z + B_1 v\end{gather}$$ são obtidos um do outro pelas tranfosmações lineares $z=Px$ e $ v=Ku.$
Suponha que $(A,B)$ não seja controlável, e que o posto de $[B|AB|\cdots|A^{n-1}B]$ seja $k < n$. Então $(A,B)$ é equivalente a um par $(A_1,B_1)$ que tem as seguintes formas: $$\begin{gather} A_1 = \begin{bmatrix} A_{11} & A_{21} \\ \mathbf{0} & A_{22} \end{bmatrix} \text{ e } B_1 = \begin{bmatrix}B_{11} \\ \mathbf{0} \end{bmatrix}\end{gather}$$ Com $A_{11} \in \mathbb{M}_{k\times k}$, $B_{11}\in \mathbb{M}_{k\times m}$ e $(A_{11},B_{11})$ controlável.
Tome $k$ colunas linearmente independentes da matriz $[B|AB|\cdots|A^{n-1}B]$ e juntamos mais $n-k$ colunas quaisquer formando a matriz $P$, de forma que $P$ seja inversível. Verificamos as propriedades para $A_1=P^{-1}AP$ e $B_1= P^{-1}B$.
#rascunho;
import numpy as np
P = np.array([[1,2],[-1,3]])
Pinv = np.linalg.inv(P)
Aold = np.array([[0,1],[0,0]])
Bold = np.array([[1],[0]])
A =np.dot(np.dot(P,Aold),Pinv)
B= np.dot(P,Bold)
print(A)
print(B)
[[ 0.2 0.2] [-0.2 -0.2]] [[ 1] [-1]]
A=5*A
K = np.array([B,np.dot(A,B)])
print(K)
[[[ 1.] [-1.]] [[ 0.] [ 0.]]]