在古典力學裏，假如，一個系統有任何約束是非完整約束，則稱此系統為非完整系統。非完整約束不是完整約束。完整約束可以用方程式表示為

　
: $f(x_{1},\ x_{2},\ x_{3},\ \dots ,\ x_{N},\ t)=0$ ；

這裏， $f$ 是每一個粒子 $P_{i}$ 之位置 $x_{i}$ 和時間 $t$ 的函數。非完整約束不能夠用上述方程式表示。



廣義坐標的轉換

完整約束方程式與位置、時間有關，與速度無關。完整約束方程式可以很簡易地除去指定的變數。假設變數 $x_{d}$ 是完整約束函數 $f_{k}$ 裏的一個參數，現在指定除去 $x_{d}$ 。重新編排上述約束方程式，求出表示 $x_{d}$ 的函數 $g_{k}$ ：

　
: $x_{d}=g_{k}(x_{1},\ x_{2},\ x_{3},\ \dots ,\ x_{d-1},\ x_{d+1},\ \dots ,\ x_{N},\ t)$ 。

將函數 $g_{k}$ 代入所有提到 $x_{d}$ 的方程式。這樣，可以除去所有指定變數 $x_{d}$ 。

假設一個物理系統原本的自由度是 $N$ 。現在，將 $h$ 個完整約束作用於此系統。那麼，這系統的自由度減少為 $m=N-h$ 。可以用 $m$ 個獨立廣義座標 $(q_{1},\ q_{2},\ \dots ,\ q_{m})$ 來完全描述這系統的運動。座標的轉換方程式可以表示如下：

　
: $x_{i}=x_{i}(q_{1},\ q_{2},\ \dots ,\ q_{m},\ t)\ ,\qquad \qquad \qquad i=1,\ 2,\ 3,\ \dots N$ 。

換句話說，由於非完整約束無法依照上述方法，來除去其所含廣義座標，完全描述非完整系統，所需要的廣義座標數目，大於自由度。



微分形式表示

約束有時可以用微分形式的約束方程式來表示。思考第 $i$ 個約束的微分形式的約束方程式：

　
: $\sum _{j}\ c_{ij}dq_{j}+c_{i}dt=0$ ；

這裏， $c_{ij}$ ， $c_{i}$ 分別為微分 $dq_{j}$ 與 $dt$ 的係數。

假若此約束方程式是可積分的。也就是說，有一個函數 $f_{i}(q_{1},\ q_{2},\ q_{3},\ \dots ,\ q_{N},\ t)=0$ 的全微分滿足下述等式：

　
: $df_{i}=\sum _{j}\ c_{ij}dq_{j}+c_{i}dt=0$ ；

那麼，此約束是完整約束；否則，此約束是非完整約束。因此，所有的完整約束與某些非完整約束可以用微分形式的方程式來表示。不是所有的非完整約束都可以這樣表示。含有廣義速度的非完整約束就不能這樣表示。所以，假若知道一個約束的微分形式的約束方程式，這約束到底是完整約束，還是非完整約束，需要看微分形式的約束方程式能否積分來決定。



半完整系統

表示非完整約束的方程式往往比較複雜。因此，非完整系統也比較難分析，只有簡易一點的非完整系統能用形式論來分析。假如，一個非完整系統的約束可以用以下方程式表示：

　
: $f_{i}(q_{1},\ q_{2},\ \dots ,\ q_{N},\ {\dot {q}}_{1},\ {\dot {q}}_{2},\ \dots ,\ {\dot {q}}_{N})=0\ ,\qquad \qquad \qquad i=1,\ 2,\ 3,\ \dots n$ ；

則稱此系統為半完整系統；這裏， ${\dot {q}}_{j}$ 是廣義速度。

半完整系統可以用拉格朗日形式論來分析。更具體地說，分析半完整系統必須用到拉格朗日乘子 $\lambda _{i}$

　
: $\sum _{i=1}^{n}\ \lambda _{i}f_{i}=0$ ；

這裏， $\lambda _{i}=\lambda _{i}(q_{1},\ q_{2},\ \dots ,\ q_{N},\ {\dot {q}}_{1},\ {\dot {q}}_{2},\ \dots ,\ {\dot {q}}_{N},\ t)$ 是未知函數。

假設哈密頓原理成立，則下述方程式成立：

　
: $\delta \int _{t_{1}}^{t_{2}}\ L\ dt=0$ ；

這裏， $L$ 是拉格朗日量， $t_{1}$ 與 $t_{2}$ 分別為積分的時間下限與上限。經過變分法運算，可以得到方程式

　
: $\int _{t_{1}}^{t_{2}}\ \sum _{j}\ \left({\frac {\partial L}{\partial q_{j}}}-{\frac {d}{dt}}\left({\frac {\partial L}{\partial {\dot {q}}_{j}}}\right)\right)\delta q_{j}\ dt=0$ 。

由於這 $N$ 個廣義座標中，仍舊有 $n$ 個不獨立廣義座標，不能將拉格朗日方程式提取出來；必須加入拉格朗日乘子項目：

　
: $\delta \int _{t_{1}}^{t_{2}}\ \left(L+\sum _{i=1}^{n}\ \lambda _{i}f_{i}\right)\ dt=0$ 。

經過變分法運算，可以得到方程式

　
: $\int _{t_{1}}^{t_{2}}\ \sum _{j}\ \left({\frac {\partial L}{\partial q_{j}}}-{\frac {d}{dt}}\left({\frac {\partial L}{\partial {\dot {q}}_{j}}}\right)+{\mathcal {F}}_{j}\right)\delta q_{j}\ dt=0$  ;

這裏， ${\mathcal {F}}_{j}$ 是廣義力的 $j$ 分量：

　
: ${\mathcal {F}}_{j}=\sum _{i}\ \left[{\frac {\partial (\lambda _{i}f_{i})}{\partial q_{j}}}-{\frac {d}{dt}}\left({\frac {\partial (\lambda _{i}f_{i})}{\partial {\dot {q}}_{j}}}\right)\right]$ 。

雖然還有 $n$ 個不獨立廣義座標，仍舊可以調整 $n$ 加入的拉格朗日乘子，使總和公式內的每一個虛位移 $\delta q_{j}$ 的係數都等於 0。因此，

　
: ${\frac {d}{dt}}\left({\frac {\partial L}{\partial {\dot {q}}_{j}}}\right)-{\frac {\partial L}{\partial q_{j}}}={\mathcal {F}}_{j}$ 。

這 $N$ 個方程式加上 $n$ 個約束方程式，給予了 $N+n$ 個方程式來解 $N$ 個未知廣義座標與 $n$ 個拉格朗日乘子。



實例

非完整系統至少存在於以下三個狀況：

1. 物體在做滾動運動。
2. 系統的約束包括不等式。
3. 系統的約束與速度有關（例如普法夫約束）。



參閱


* 拉格朗日力學

* 哈密頓力學

* 完整系統

* 定常系統

* 單演系統

* 保守系統

* 平行停車問題

* 落貓問題

* 自行車及摩托車的動力學



參考文獻


* Jack Sarfatti. Non Holonomic Constraints in Newtonian Mechanics (PDF). Pedagogical Review from the Classics of Physics. 2000-03-26. （原始內容 (PDF) 存檔於 2007-10-20） （英語）.