狀態空間

**狀態空間**是控制工程中的一個名詞。狀態是指在系統中可決定系統狀態、最小數目變量的有序集合。而所謂狀態空間則是指該系統全部可能狀態的集合。簡單來說，狀態空間可以視為一個以狀態變數為坐標軸的空間，因此系統的狀態可以表示為此空間中的一個向量。

狀態空間表示法即為一種將物理系統表示為一組輸入、輸出及狀態的數學模式，而輸入、輸出及狀態之間的關係可用許多一階微分方程來描述。

為了使數學模式不受輸入、輸出及狀態的個數所影響，輸入、輸出及狀態都會以向量的形式表示，而微分方程（若是線性非時變系統，可將微分方程轉變為代數方程）則會以矩陣的形式來表示。

狀態空間表示法提供一種方便簡捷的方法來針對多輸入、多輸出的系統進行分析並建立模型。一般頻域的系統處理方式需限制在常係數，啟始條件為 0 的系統。而狀態空間表示法對系統的係數及啟始條件沒有限制。

## 狀態變量

系統的狀態變數是指系統變數中，可以表示任一時間系統完整狀態的最小子集合。要表示一系統需要的狀態變數最小值 n，通常也是該系統微分方程式的階數。若系統是以傳遞函數來表示，狀態變數的最小個數等於傳遞函數分母多項式的階數。在電路中狀態變數的個數常常就是電路中儲能元件（如電容器及電感器）的個數。

## 線性系統

一個有 $p$ 個輸入、 $q$ 個輸出及 $n$ 個狀態變數的線性系統，可以用以下的狀態空間表示法來表示：

　
: ${\dot {\mathbf {x} }}(t)=A(t)\mathbf {x} (t)+B(t)\mathbf {u} (t)$

　
: $\mathbf {y} (t)=C(t)\mathbf {x} (t)+D(t)\mathbf {u} (t)$

其中:

　
: $\mathbf {x} (\cdot )$ 稱為狀態向量， $\mathbf {x} (t)\in \mathbb {R} ^{n}$ ;

　
: $\mathbf {y} (\cdot )$ 稱為輸出向量， $\mathbf {y} (t)\in \mathbb {R} ^{q}$ ;

　
: $\mathbf {u} (\cdot )$ 稱為輸入向量（或控制向量）， $\mathbf {u} (t)\in \mathbb {R} ^{p}$ ;

　
: $A(\cdot )$ 稱為狀態矩陣， $\operatorname {dim} [A(\cdot )]=n\times n$ ,

　
: $B(\cdot )$ 稱為輸入矩陣， $\operatorname {dim} [B(\cdot )]=n\times p$ ,

　
: $C(\cdot )$ 稱為輸出矩陣， $\operatorname {dim} [C(\cdot )]=q\times n$ ,

　
: $D(\cdot )$ 稱為前饋矩陣（若系統沒有直接從輸入到輸出的路徑，此矩陣為零矩陣）， $\operatorname {dim} [D(\cdot )]=q\times p$ ,

　
: ${\dot {\mathbf {x} }}(t):={\frac {\operatorname {d} }{\operatorname {d} t}}\mathbf {x} (t)$ .

通式中所有的矩陣均允許隨著時間而變化，此時所表示的就是線性時變系統。若表示的是線性非時變系統，則通式的矩陣都不會隨著時間變化。時間變數 $t$ 可以是連續的（例如 $t\in \mathbb {R} $ ）或是離散的（例如 $t\in \mathbb {Z} $ ）。若是後者，其時間變數一般會標示為 $k$ 。混合系統允許同時使用連續及離散的時域。依不同的假設，狀態空間表示法可以是以下的這些形式：

### 連續非時變系統的例子

連續線性非時變系統的穩定性及響應特性可以由矩陣 **A** 的特徵值得到，也可以由系統對應的乘積型傳遞函數中得到。其型式如下所示：

　
: ${\textbf {G}}(s)=k{\frac {(s-z_{1})(s-z_{2})(s-z_{3})}{(s-p_{1})(s-p_{2})(s-p_{3})(s-p_{4})}}$

傳遞函數的分母等於 $sI-A$ 的行列式所得的特徵多項式：

　
: $\mathbf {\lambda } (s)=|sI-A|$ .

其多項式的根即為矩陣 **A** 的特徵值，也是傳遞函數的極點。極點可以用來分析系統是否為指數穩定、臨界穩定或者根本不穩定。李雅普諾夫穩定性是另一種不需計算特徵值，也可以判斷穩定性的方式。

由傳遞函數的分子 ${\textbf {G}}(s)$ 可以找到多項式的零點，可用來判斷系統是否是最小相位。

即使系統沒有內部穩定性，仍有可能是輸入輸出穩定系統。此情形時的不穩定極點和零點相消，為一個可去奇點。

### 傳遞函數

傳遞函數可用來描述線性非時變系統的特性。一個連續時間的線性非時變系統，可以用以下的方式，將其狀態空間表示式轉換為傳遞函數：

首先，對下式進行拉氏轉換，在初始條件為 0（ $\mathbf {x} (0)=\mathbf {0} $ ）時

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)+B\mathbf {u} (t)$

可得到

　
: $s\mathbf {X} (s)=A\mathbf {X} (s)+B\mathbf {U} (s)$

再針對 $\mathbf {X} (s)$ 化簡，可得到

　
: $(s\mathbf {I} -A)\mathbf {X} (s)=B\mathbf {U} (s)$

　
: $\mathbf {X} (s)=(s\mathbf {I} -A)^{-1}B\mathbf {U} (s)$

可以用此式來替換以下輸出方程式中的 $\mathbf {X} (s)$

　
: $\mathbf {Y} (s)=C\mathbf {X} (s)+D\mathbf {U} (s)$

結果如下

　
: $\mathbf {Y} (s)=C((s\mathbf {I} -A)^{-1}B\mathbf {U} (s))+D\mathbf {U} (s)$

傳遞函數 $\mathbf {G} (s)$ 定義為系統輸出相對於輸入的比值

　
: $\mathbf {G} (s)=\mathbf {Y} (s)/\mathbf {U} (s)$

因此可得到

　
: $\mathbf {G} (s)=C(s\mathbf {I} -A)^{-1}B+D$

 $\mathbf {G} (s)$ 必須是 $q\times p$ 的矩陣。

若線性非時變系統有多個輸入及輸出時，其傳遞函數（也稱為傳遞矩陣）表示每一組輸入及輸出的關係，傳遞矩陣的每一個元素都是一組特定輸入及輸出的傳遞函數，不過多重輸入多重輸出（MIMO）的系統多使用狀態空間的方式進行分析，較少使用傳遞函數或傳遞矩陣。

將一個系統由狀態空間表示式轉換為傳遞函數時，系統內部的資訊無法完整的轉換，可能系統表示為狀態空間表示式中在特定位置時會不穩定，但是用傳遞函數表示時卻是一個穩定的系統。

### 可控制性

一系統的狀態可控制性表示對於系統的一組初始狀態及一組終止狀態，存在一組輸入，使得此系統在有限時間內，可以由初始狀態轉移到終止狀態。一個連續線性時不變系統以狀態空間表示時，系統若且唯若在以下秩的等式成立時才有可控制性

　
: $\operatorname {rank} {\begin{bmatrix}B&AB&A^{2}B&...&A^{n-1}B\end{bmatrix}}=n$

（秩就是矩陣中線性獨立橫行的數目）

### 可觀察性

可觀察性是可以依一系統的輸出得知其系統內部的初始狀態。一系統的可觀察性及可控制性有數學上的對偶關係，可控制性是指可以利用輸入將系統由初始狀態轉換成任意的最終狀態，而可觀察性是指系統的輸出軌跡預測其初始狀態。

一個連續時間的線性非時變系統可觀察性，若且唯若下式成立：

　
: $\operatorname {rank} {\begin{bmatrix}C\\CA\\...\\CA^{n-1}\end{bmatrix}}=n$

### 傳遞函數

連續時間線性時不變的狀態空間模型可以用以下方式推導其傳遞函數：

首先，對下式進行拉普拉斯變換

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)+B\mathbf {u} (t)$

可得

　
: $s\mathbf {X} (s)-\mathbf {x} (0)=A\mathbf {X} (s)+B\mathbf {U} (s).$

接下來，化簡 $\mathbf {X} (s)$ ，可得

　
: $(s\mathbf {I} -A)\mathbf {X} (s)=\mathbf {x} (0)+B\mathbf {U} (s),$

因此

　
: $\mathbf {X} (s)=(s\mathbf {I} -A)^{-1}\mathbf {x} (0)+(s\mathbf {I} -A)^{-1}B\mathbf {U} (s).$

替換以下輸出方程中的 $\mathbf {X} (s)$

　
: $\mathbf {Y} (s)=C\mathbf {X} (s)+D\mathbf {U} (s),$ 可得

　
: $\mathbf {Y} (s)=C((s\mathbf {I} -A)^{-1}\mathbf {x} (0)+(s\mathbf {I} -A)^{-1}B\mathbf {U} (s))+D\mathbf {U} (s).$

傳遞函數 $\mathbf {G} (s)$ 定義為在初始條件為 0（ $\mathbf {x} (0)=\mathbf {0} $ ）時，系統輸出和輸入的比值。不過因為向量和向量的比例不存在，因此考慮讓傳遞函數可以滿足下式

　
: $\mathbf {G} (s)\times \mathbf {U} (s)=\mathbf {Y} (s)$

比較 $\mathbf {Y} (s)$ 的方程，可得

　
: $\mathbf {G} (s)=C(s\mathbf {I} -A)^{-1}B+D.$

可以看出 $\mathbf {G} (s)$ 的維度需要是 $q$ 乘 $p$ ，共有 $qp$ 個元素。

針對每一個輸入，有 $q$ 個傳遞函數，每個對應一個輸出。因此在多重輸入多重輸出（MIMO）的系統，會比較傾向用狀態空間表示法來表達。羅森布羅克系統矩陣提供了狀態空間表示法和其傳遞函數之間的橋梁。

### 正則實現

任一個嚴格真分的傳遞函數，可以依以下的方式轉換為狀態空間的表示法（以下以一個 4 階、單一輸入及輸出的系統為例）：

先將傳遞函數分子分母展開成以下的形式：

　
: ${\textbf {G}}(s)={\frac {n_{1}s^{3}+n_{2}s^{2}+n_{3}s+n_{4}}{s^{4}+d_{1}s^{3}+d_{2}s^{2}+d_{3}s+d_{4}}}$ .

其分子分母的係數可以放進以下的狀態空間表示式中：

　
: ${\dot {\textbf {x}}}(t)={\begin{bmatrix}-d_{1}&-d_{2}&-d_{3}&-d_{4}\\1&0&0&0\\0&1&0&0\\0&0&1&0\end{bmatrix}}{\textbf {x}}(t)+{\begin{bmatrix}1\\0\\0\\0\\\end{bmatrix}}{\textbf {u}}(t)$

　
: ${\textbf {y}}(t)={\begin{bmatrix}n_{1}&n_{2}&n_{3}&n_{4}\end{bmatrix}}{\textbf {x}}(t)$ .

這種狀態空間的實現方式稱為「可控制正則型」（controllable canonical form），方便判斷系統的可控制性（控制輸入經過一連串的積分器後，即可影響每一個狀態），因此。

傳遞函數也可以轉換為以下的狀態空間表示式：

　
: ${\dot {\textbf {x}}}(t)={\begin{bmatrix}-d_{1}&1&0&0\\-d_{2}&0&1&0\\-d_{3}&0&0&1\\-d_{4}&0&0&0\end{bmatrix}}{\textbf {x}}(t)+{\begin{bmatrix}n_{1}\\n_{2}\\n_{3}\\n_{4}\end{bmatrix}}{\textbf {u}}(t)$

　
: ${\textbf {y}}(t)={\begin{bmatrix}1&0&0&0\end{bmatrix}}{\textbf {x}}(t)$ .

這種狀態空間的實現方式稱為「可觀察正則型」（observable canonical form），方便判斷系統的可觀察性（輸出是經過狀態變數一連串積分後的輸出，因此可經由狀態變數影響系統的輸出）。

### 真分傳遞函數

若傳遞函數只是真分傳遞函數，不滿足嚴格真分的條件，可以將傳遞函數分為一嚴格真分數及常數的和，即可轉換為狀態空間的表示方式

　
: ${\textbf {G}}(s)={\textbf {G}}_{SP}(s)+{\textbf {G}}(\infty )$

利用上一段的作法可以將嚴格真分傳遞函數轉換為正則型的狀態空間表示式。而常數部份可以轉換為 ${\textbf {y}}(t)={\textbf {G}}(\infty ){\textbf {u}}(t)$ 。因此狀態空間表示式的矩陣 _A_、_B_ 及 _C_ 可利用傳遞函數的嚴格真分部份求得，而矩陣 _D_ 可利用常數部份求得。

例如以下的真分傳遞函數

　
: ${\textbf {G}}(s)={\frac {s^{2}+3s+3}{s^{2}+2s+1}}={\frac {s+2}{s^{2}+2s+1}}+1$

其可控制正則型的實現如下

　
: ${\dot {\textbf {x}}}(t)={\begin{bmatrix}-2&-1\\1&0\\\end{bmatrix}}{\textbf {x}}(t)+{\begin{bmatrix}1\\0\end{bmatrix}}{\textbf {u}}(t)$

　
: ${\textbf {y}}(t)={\begin{bmatrix}1&2\end{bmatrix}}{\textbf {x}}(t)+{\begin{bmatrix}1\end{bmatrix}}{\textbf {u}}(t)$

其輸出直接受到輸入的影響，原因就是因為傳遞函數的常數部份。

### 反饋

要為系統增加反饋，可以將輸出乘以一矩陣 _K_，當作系統的輸入： $\mathbf {u} (t)=K\mathbf {y} (t)$ .
因此系統

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)+B\mathbf {u} (t)$

　
: $\mathbf {y} (t)=C\mathbf {x} (t)+D\mathbf {u} (t)$

可改寫為以下的形式

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)+BK\mathbf {y} (t)$

　
: $\mathbf {y} (t)=C\mathbf {x} (t)+DK\mathbf {y} (t)$

求解 $\mathbf {y} (t)$ ，代入狀態方程式中可得

　
: ${\dot {\mathbf {x} }}(t)=\left(A+BK\left(I-DK\right)^{-1}C\right)\mathbf {x} (t)$

　
: $\mathbf {y} (t)=\left(I-DK\right)^{-1}C\mathbf {x} (t)$

此作法的好處是整個系統的特性不止是由矩陣 _A_ 的特徵值決定，也可以由 _K_ 的適當設定及 $\left(A+BK\left(I-DK\right)^{-1}C\right)$ 的特徵值分解來調整。不過此作法的前提是開迴路系統本身是可控制的，或者矩陣 _A_ 的不穩定特徵值可以由適當的 _K_ 調整為穩定。

有一種常見的簡化法是令矩陣 _D_ 為零矩陣，矩陣 _C_ 為單位矩陣，因此方程式可以簡化為以下的形式：

　
: ${\dot {\mathbf {x} }}(t)=\left(A+BK\right)\mathbf {x} (t)$

　
: $\mathbf {y} (t)=\mathbf {x} (t)$

需進行特徵值分解的矩陣縮小為 $A+BK$ 。

### 有回授及目標值輸入

回授信號也可以再加上目標值輸入 $r(t)$ ，此時的回授值信號為 $\mathbf {u} (t)=-K\mathbf {y} (t)+\mathbf {r} (t)$ .

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)+B\mathbf {u} (t)$

　
: $\mathbf {y} (t)=C\mathbf {x} (t)+D\mathbf {u} (t)$

變成以下的形式

　
: ${\dot {\mathbf {x} }}(t)=A\mathbf {x} (t)-BK\mathbf {y} (t)+B\mathbf {r} (t)$

　
: $\mathbf {y} (t)=C\mathbf {x} (t)-DK\mathbf {y} (t)+D\mathbf {r} (t)$

求解 $\mathbf {y} (t)$ ，代入狀態方程式中可得

　
: ${\dot {\mathbf {x} }}(t)=\left(A-BK\left(I+DK\right)^{-1}C\right)\mathbf {x} (t)+B\left(I-K\left(I+DK\right)^{-1}D\right)\mathbf {r} (t)$

　
: $\mathbf {y} (t)=\left(I+DK\right)^{-1}C\mathbf {x} (t)+\left(I+DK\right)^{-1}D\mathbf {r} (t)$

一個常見的簡化是令矩陣 _D_ 為零矩陣，方程式可簡化為以下的形式

　
: ${\dot {\mathbf {x} }}(t)=\left(A-BKC\right)\mathbf {x} (t)+B\mathbf {r} (t)$

　
: $\mathbf {y} (t)=C\mathbf {x} (t)$

### 移動物體的範例

以下以物體的一維移動來作為範例。
考慮一物體在一平面上水平移動，物體和牆壁之間有彈簧相連接，依牛頓第二運動定律，其受力如下

　
: $m{\ddot {y}}(t)=u(t)-k_{1}{\dot {y}}(t)-k_{2}y(t)$

其中

 * $y(t)$ 為位置， ${\dot {y}}(t)$ 及 ${\ddot {y}}(t)$ 分別是速度及加速度
* $u(t)$ 為施力
* $k_{1}$ 為粘滯摩擦係數
* $k_{2}$ 為彈簧的彈性常數
* $m$ 為物體的質量

其狀態方程式可以下式表示

　
: $\left[{\begin{matrix}\mathbf {\dot {x_{1}}} (t)\\\mathbf {\dot {x_{2}}} (t)\end{matrix}}\right]=\left[{\begin{matrix}0&1\\-{\frac {k_{2}}{m}}&-{\frac {k_{1}}{m}}\end{matrix}}\right]\left[{\begin{matrix}\mathbf {x_{1}} (t)\\\mathbf {x_{2}} (t)\end{matrix}}\right]+\left[{\begin{matrix}0\\{\frac {1}{m}}\end{matrix}}\right]\mathbf {u} (t)$

　
: $\mathbf {y} (t)=\left[{\begin{matrix}1&0\end{matrix}}\right]\left[{\begin{matrix}\mathbf {x_{1}} (t)\\\mathbf {x_{2}} (t)\end{matrix}}\right]$

其中

 * $x_{1}(t)$ 為物體的位置
* $x_{2}(t)={\dot {x_{1}}}(t)$ 為物體的速度
* ${\dot {x_{2}}}(t)={\ddot {x_{1}}}(t)$ 為物體的加速度
* 輸出 $\mathbf {y} (t)$ 為物體的位置

依可控制性測試，結果為

　
: $\left[{\begin{matrix}B&AB\end{matrix}}\right]=\left[{\begin{matrix}\left[{\begin{matrix}0\\{\frac {1}{m}}\end{matrix}}\right]&\left[{\begin{matrix}0&1\\-{\frac {k_{2}}{m}}&-{\frac {k_{1}}{m}}\end{matrix}}\right]\left[{\begin{matrix}0\\{\frac {1}{m}}\end{matrix}}\right]\end{matrix}}\right]=\left[{\begin{matrix}0&{\frac {1}{m}}\\{\frac {1}{m}}&{\frac {k_{1}}{m^{2}}}\end{matrix}}\right]$

對所有非零的 $k_{1}$ ，上述矩陣皆為 full rank。

依可觀察性測試，結果為

　
: $\left[{\begin{matrix}C\\CA\end{matrix}}\right]=\left[{\begin{matrix}\left[{\begin{matrix}1&0\end{matrix}}\right]\\\left[{\begin{matrix}1&0\end{matrix}}\right]\left[{\begin{matrix}0&1\\-{\frac {k_{2}}{m}}&-{\frac {k_{1}}{m}}\end{matrix}}\right]\end{matrix}}\right]=\left[{\begin{matrix}1&0\\0&1\end{matrix}}\right]$

對所有非零的 $k_{1}$ ，上述矩陣也皆為 full rank。

因此，此系統具有可控制性及可觀察性。

## 非線性系統

以下將狀態空間模型以函數的形式來表示。

　
: $\mathbf {\dot {x}} (t)=\mathbf {f} (t,x(t),u(t))$

　
: $\mathbf {y} (t)=\mathbf {h} (t,x(t),u(t))$

第一個方程式為狀態方程式，第二個方程式為輸出方程式。

此表示法可以表示線性系統及非線性系統。若函數 $f(\cdot ,\cdot ,\cdot )$ 是狀態及輸入的線性組合，則以上方程式可以改寫為矩陣的形式。

若系統沒有外力（沒有輸入項），則以上方程式中的 $u(t)$ 可以省略。

### 單擺的範例

單擺即為一個非線性系統的例子。

　
: $ml{\ddot {\theta }}(t)=-mg\sin \theta (t)-kl{\dot {\theta }}(t)$

其中

 * $\theta (t)$ 為單擺偏離垂線的角度
* $m$ 為單擺的質量（單擺的線或桿的質量假設為零）
* $g$ 為重力加速度
* $k$ 為摩擦係數
* $l$ 為單擺的半徑（以質量 $m$ 的重心位置為準）

其狀態方程式為

　
: ${\dot {x_{1}}}(t)=x_{2}(t)$

　
: ${\dot {x_{2}}}(t)=-{\frac {g}{l}}\sin {x_{1}}(t)-{\frac {k}{m}}{x_{2}}(t)$

其中

 * $x_{1}(t)=\theta (t)$ 為單擺的角度
* $x_{2}(t)={\dot {x_{1}}}(t)$ 為單擺的角速度
* ${\dot {x_{2}}}={\ddot {x_{1}}}$ 為單擺的角加速度

其狀態方程式可寫成以下的形式

　
: ${\dot {x}}(t)=\left({\begin{matrix}{\dot {x_{1}}}(t)\\{\dot {x_{2}}}(t)\end{matrix}}\right)=\mathbf {f} (t,x(t))=\left({\begin{matrix}x_{2}(t)\\-{\frac {g}{l}}\sin {x_{1}}(t)-{\frac {k}{m}}{x_{2}}(t)\end{matrix}}\right).$

一系統的機械平衡點或駐點為 ${\dot {x}}=0$ 的位置，因此單擺系統的平衡點如下

　
: $\left({\begin{matrix}x_{1}\\x_{2}\end{matrix}}\right)=\left({\begin{matrix}n\pi \\0\end{matrix}}\right)$

其中 _n_ 為整數。

## 相關條目

* 離散化
* 相空間：物理學和數學中有關相空間（例如連續的狀態空間）的資訊。
* 狀態空間 (計算機科學)：計算機科學中有關狀態空間的資訊。
* 機率空間：機率中關於狀態空間的資訊。
* 卡爾曼濾波

## 參考來源

## 延伸閱讀