克萊姆法則

克萊姆法則或克拉瑪公式（英語：Cramer's rule / formula）是一個線性代數中的定理，用行列式來計算出線性等式組中的所有解。這個定理因加百列·克萊姆（1704年 - 1752年）的卓越使用而命名。在計算上，並非最有效率之法，因而在很多條等式的情況中沒有廣泛應用。不過，這一定理在理論性方面十分有效。 一個線性方程組可以用矩陣与向量的方程來表示： A x = c ( 1 ) {\displaystyle Ax=c\,\qquad \qquad \qquad \qquad \qquad \qquad (1)} 其中的 A {\displaystyle A} 是一个 n × n {\displaystyle n\times n} 的方塊矩陣，而向量 x = ( x 1 , x 2 , ⋯ x n ) T {\displaystyle x=(x_{1},x_{2},\cdots x_{n})^{T}} 是一个长度为n的行向量(中國大陸為列向量）。 c = ( c 1 , c 2 , ⋯ c n ) T {\displaystyle c=(c_{1},c_{2},\cdots c_{n})^{T}} 也一样。 克莱姆法则说明：如果 A {\displaystyle A} 是一个可逆矩陣（ det A ≠ 0 {\displaystyle \det {A}\neq 0} ），那么方程(1)有解 x = ( x 1 , x 2 , ⋯ x n ) T {\displaystyle x=(x_{1},x_{2},\cdots x_{n})^{T}} ，其中 x i = det ( A i ) det ( A ) {\displaystyle x_{i}={\det(A_{i}) \over \det(A)}} (1) 当中 x i {\displaystyle x_{i}} 是列向量 x {\displaystyle x} 的第i行（行向量与列向量不一样，解释默认列向量） 當中 A i {\displaystyle A_{i}} 是列向量 c {\displaystyle c} 取代了 A {\displaystyle A} 的第i列后得到的矩阵。為了方便，我們通常使用 Δ {\displaystyle \Delta } 來表示 det ( A ) {\displaystyle \det(A)} ，用 Δ i {\displaystyle \Delta _{i}} 來表示 det ( A i ) {\displaystyle \det(A_{i})} 。所以等式(1)可以寫成為： x i = Δ i Δ {\displaystyle x_{i}={\Delta _{i} \over \Delta }\,} 。 設 R {\displaystyle R} 為一個環， A {\displaystyle A} 就是一個包含 R {\displaystyle R} 的系數的 n × n {\displaystyle n\times n} 矩陣。所以： a d j ( A ) A = d e t ( A ) I {\displaystyle \mathrm {adj} (A)A=\mathrm {det} (A)I\,} 當中 det ( A ) {\displaystyle \det(A)} 就是 A {\displaystyle A} 的行列式，以及 I {\displaystyle I} 就是單位矩陣。 对于 n {\displaystyle n} 元线性方程组 A x = c {\displaystyle Ax=c} 把系数矩阵 A {\displaystyle {\begin{smallmatrix}A\end{smallmatrix}}} 表示成行向量的形式 A = ( u 1 , u 2 , ⋯ , u n ) {\displaystyle A=\left(u_{1},u_{2},\cdots ,u_{n}\right)} 由于系数矩阵可逆，故方程组一定有解 x ∗ = A − 1 c {\displaystyle x^{*}=A^{-1}c} . 设 x ∗ = ( x 1 , x 2 , ⋯ , x n ) T {\displaystyle x^{*}=(x_{1},x_{2},\cdots ,x_{n})^{T}} ，即 A x ∗ = ∑ k = 1 n x k u k = c {\displaystyle Ax^{*}=\sum _{k=1}^{n}x_{k}u_{k}=c} 考虑 Δ i {\displaystyle \Delta _{i}} 的值，利用行列式的線性和交替性質，有 Δ i = d e t ( ⋯ , u i − 1 , c , u i + 1 , ⋯ ) = d e t ( ⋯ , u i − 1 , ∑ k = 1 n x k u k , u i + 1 , ⋯ ) = ∑ k = 1 n x k ⋅ d e t ( ⋯ , u i − 1 , u k , u i + 1 , ⋯ ) = x i ⋅ d e t ( ⋯ , u i − 1 , u i , u i + 1 , ⋯ ) = x i Δ {\displaystyle {\begin{aligned}\Delta _{i}&=det\left(\cdots ,u_{i-1},c,u_{i+1},\cdots \right)\\&=det\left(\cdots ,u_{i-1},\sum _{k=1}^{n}x_{k}u_{k},u_{i+1},\cdots \right)\\&=\sum _{k=1}^{n}x_{k}\cdot det\left(\cdots ,u_{i-1},u_{k},u_{i+1},\cdots \right)\\&=x_{i}\cdot det\left(\cdots ,u_{i-1},u_{i},u_{i+1},\cdots \right)\\&=x_{i}\Delta \end{aligned}}} 于是 x i = Δ i Δ {\displaystyle x_{i}={\frac {\Delta _{i}}{\Delta }}} 运用克萊姆法則可以很有效地解決以下方程组。 已知： a x + b y = e {\displaystyle ax+by={\color {red}e}\,} c x + d y = f {\displaystyle cx+dy={\color {red}f}\,} 使用矩陣來表示時就是： [ a b c d ] [ x y ] = [ e f ] {\displaystyle {\begin{bmatrix}a&b\\c&d\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}={\begin{bmatrix}{\color {red}e}\\{\color {red}f}\end{bmatrix}}} 当矩阵可逆时，x和y可以從克萊姆法則中得出： x = | e b f d | | a b c d | = e d − b f a d − b c {\displaystyle x={\frac {\begin{vmatrix}\color {red}{e}&b\\\color {red}{f}&d\end{vmatrix}}{\begin{vmatrix}a&b\\c&d\end{vmatrix}}}={{\color {red}e}d-b{\color {red}f} \over ad-bc}} 以及 y = | a e c f | | a b c d | = a f − e c a d − b c {\displaystyle y={\frac {\begin{vmatrix}a&\color {red}{e}\\c&\color {red}{f}\end{vmatrix}}{\begin{vmatrix}a&b\\c&d\end{vmatrix}}}={a{\color {red}f}-{\color {red}e}c \over ad-bc}} 用3×3矩陣的情況亦差不多。 已知： a x + b y + c z = j {\displaystyle ax+by+cz={\color {red}j}\,} d x + e y + f z = k {\displaystyle dx+ey+fz={\color {red}k}\,} g x + h y + i z = l {\displaystyle gx+hy+iz={\color {red}l}\,} 當中的矩陣表示為： [ a b c d e f g h i ] [ x y z ] = [ j k l ] {\displaystyle {\begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix}}{\begin{bmatrix}x\\y\\z\end{bmatrix}}={\begin{bmatrix}{\color {red}j}\\{\color {red}k}\\{\color {red}l}\end{bmatrix}}} 当矩阵可逆时，可以求出x、y和z： x = | j b c k e f l h i | | a b c d e f g h i | {\displaystyle x={\frac {\begin{vmatrix}{\color {red}j}&b&c\\{\color {red}k}&e&f\\{\color {red}l}&h&i\end{vmatrix}}{\begin{vmatrix}a&b&c\\d&e&f\\g&h&i\end{vmatrix}}}} 、   y = | a j c d k f g l i | | a b c d e f g h i | {\displaystyle y={\frac {\begin{vmatrix}a&{\color {red}j}&c\\d&{\color {red}k}&f\\g&{\color {red}l}&i\end{vmatrix}}{\begin{vmatrix}a&b&c\\d&e&f\\g&h&i\end{vmatrix}}}}   以及   z = | a b j d e k g h l | | a b c d e f g h i | {\displaystyle z={\frac {\begin{vmatrix}a&b&{\color {red}j}\\d&e&{\color {red}k}\\g&h&{\color {red}l}\end{vmatrix}}{\begin{vmatrix}a&b&c\\d&e&f\\g&h&i\end{vmatrix}}}} 克萊姆法則在解決微分幾何的问题时十分有用。 先考慮兩條等式 F ( x , y , u , v ) = 0 {\displaystyle F(x,y,u,v)=0\,} 和 G ( x , y , u , v ) = 0 {\displaystyle G(x,y,u,v)=0\,} 。其中的u和v是需要考虑的变量，并且它们互不相关。我們可定義 x = X ( u , v ) {\displaystyle x=X(u,v)\,} 和 y = Y ( u , v ) {\displaystyle y=Y(u,v)\,} 。 找出一條等式適合 ∂ x / ∂ u {\displaystyle \partial x/\partial u} 是克萊姆法則的簡單應用。 首先，我們要計算 F {\displaystyle F} 、 G {\displaystyle G} 、 x {\displaystyle x} 和 y {\displaystyle y} 的導數： d F = ∂ F ∂ x d x + ∂ F ∂ y d y + ∂ F ∂ u d u + ∂ F ∂ v d v = 0 {\displaystyle dF={\frac {\partial F}{\partial x}}dx+{\frac {\partial F}{\partial y}}dy+{\frac {\partial F}{\partial u}}du+{\frac {\partial F}{\partial v}}dv=0} d G = ∂ G ∂ x d x + ∂ G ∂ y d y + ∂ G ∂ u d u + ∂ G ∂ v d v = 0 {\displaystyle dG={\frac {\partial G}{\partial x}}dx+{\frac {\partial G}{\partial y}}dy+{\frac {\partial G}{\partial u}}du+{\frac {\partial G}{\partial v}}dv=0} d x = ∂ X ∂ u d u + ∂ X ∂ v d v {\displaystyle dx={\frac {\partial X}{\partial u}}du+{\frac {\partial X}{\partial v}}dv} d y = ∂ Y ∂ u d u + ∂ Y ∂ v d v {\displaystyle dy={\frac {\partial Y}{\partial u}}du+{\frac {\partial Y}{\partial v}}dv} 將 d x {\displaystyle dx} 和 d y {\displaystyle dy} 代入 d F {\displaystyle dF} 和 d G {\displaystyle dG} ，可得出： d F = ( ∂ F ∂ x ∂ x ∂ u + ∂ F ∂ y ∂ y ∂ u + ∂ F ∂ u ) d u + ( ∂ F ∂ x ∂ x ∂ v + ∂ F ∂ y ∂ y ∂ v + ∂ F ∂ v ) d v = 0 {\displaystyle dF=\left({\frac {\partial F}{\partial x}}{\frac {\partial x}{\partial u}}+{\frac {\partial F}{\partial y}}{\frac {\partial y}{\partial u}}+{\frac {\partial F}{\partial u}}\right)du+\left({\frac {\partial F}{\partial x}}{\frac {\partial x}{\partial v}}+{\frac {\partial F}{\partial y}}{\frac {\partial y}{\partial v}}+{\frac {\partial F}{\partial v}}\right)dv=0} d G = ( ∂ G ∂ x ∂ x ∂ u + ∂ G ∂ y ∂ y ∂ u + ∂ G ∂ u ) d u + ( ∂ G ∂ x ∂ x ∂ v + ∂ G ∂ y ∂ y ∂ v + ∂ G ∂ v ) d v = 0 {\displaystyle dG=\left({\frac {\partial G}{\partial x}}{\frac {\partial x}{\partial u}}+{\frac {\partial G}{\partial y}}{\frac {\partial y}{\partial u}}+{\frac {\partial G}{\partial u}}\right)du+\left({\frac {\partial G}{\partial x}}{\frac {\partial x}{\partial v}}+{\frac {\partial G}{\partial y}}{\frac {\partial y}{\partial v}}+{\frac {\partial G}{\partial v}}\right)dv=0} 因為 u {\displaystyle u} 和 v {\displaystyle v} 互不相关，所以 d u {\displaystyle du} 和 d v {\displaystyle dv} 的系數都要等於0。所以等式中的系數可以被寫成： ∂ F ∂ x ∂ x ∂ u + ∂ F ∂ y ∂ y ∂ u = − ∂ F ∂ u {\displaystyle {\frac {\partial F}{\partial x}}{\frac {\partial x}{\partial u}}+{\frac {\partial F}{\partial y}}{\frac {\partial y}{\partial u}}=-{\frac {\partial F}{\partial u}}} ∂ G ∂ x ∂ x ∂ u + ∂ G ∂ y ∂ y ∂ u = − ∂ G ∂ u {\displaystyle {\frac {\partial G}{\partial x}}{\frac {\partial x}{\partial u}}+{\frac {\partial G}{\partial y}}{\frac {\partial y}{\partial u}}=-{\frac {\partial G}{\partial u}}} ∂ F ∂ x ∂ x ∂ v + ∂ F ∂ y ∂ y ∂ v = − ∂ F ∂ v {\displaystyle {\frac {\partial F}{\partial x}}{\frac {\partial x}{\partial v}}+{\frac {\partial F}{\partial y}}{\frac {\partial y}{\partial v}}=-{\frac {\partial F}{\partial v}}} ∂ G ∂ x ∂ x ∂ v + ∂ G ∂ y ∂ y ∂ v = − ∂ G ∂ v {\displaystyle {\frac {\partial G}{\partial x}}{\frac {\partial x}{\partial v}}+{\frac {\partial G}{\partial y}}{\frac {\partial y}{\partial v}}=-{\frac {\partial G}{\partial v}}} 現在用克萊姆法則就可得到： ∂ x ∂ u = | − ∂ F ∂ u ∂ F ∂ y − ∂ G ∂ u ∂ G ∂ y | | ∂ F ∂ x ∂ F ∂ y ∂ G ∂ x ∂ G ∂ y | {\displaystyle {\cfrac {\partial x}{\partial u}}={\cfrac {\begin{vmatrix}-{\cfrac {\partial F}{\partial u}}&{\cfrac {\partial F}{\partial y}}\\-{\cfrac {\partial G}{\partial u}}&{\cfrac {\partial G}{\partial y}}\end{vmatrix}}{\begin{vmatrix}{\cfrac {\partial F}{\partial x}}&{\cfrac {\partial F}{\partial y}}\\{\cfrac {\partial G}{\partial x}}&{\cfrac {\partial G}{\partial y}}\end{vmatrix}}}} 用兩個雅可比矩陣來表示的方程： ∂ x ∂ u = − ( ∂ ( F , G ) ∂ ( y , u ) ) ( ∂ ( F , G ) ∂ ( x , y ) ) {\displaystyle {\cfrac {\partial x}{\partial u}}=-{\cfrac {\left({\cfrac {\partial \left(F,G\right)}{\partial \left(y,u\right)}}\right)}{\left({\cfrac {\partial \left(F,G\right)}{\partial \left(x,y\right)}}\right)}}} 用類似的方法就可以找到 ∂ x ∂ v {\displaystyle {\frac {\partial x}{\partial v}}} 、 ∂ y ∂ u {\displaystyle {\frac {\partial y}{\partial u}}} 以及 ∂ y ∂ v {\displaystyle {\frac {\partial y}{\partial v}}} 。 克萊姆法則可以用來證明一些線性代數中的定理，當中的定理對環理論十分有用。 克萊姆法則可以用來證明一個線性規劃問題有一個基本整數的解。這樣使得線性規劃的問題更容易被解決。 克莱姆法则在电子计算机出现后，被认为是难以实际用于计算的。当使用克莱姆法则计算一个 n {\displaystyle n} 阶线性方程组时，所需乘法次数为 ( n + 1 ) ! {\displaystyle (n+1)!} 次。例如求解25阶线性方程组时，总计乘法次数需要 26 ! {\displaystyle 26!} （即4.03×1026）次，若计算机每秒能计算100亿次，所需时间约12.79亿年。相比之下，高斯消元法只需3060次乘法，对计算机而言易如反掌。 张宏伟，金光日，施吉林，董波 (编). 计算机科学计算 2013年第2版. 北京: 高等教育出版社. 2005: 3. ISBN 9787040365955.  {\displaystyle } Online calculator to solve a system of ecuations using the Cramer's Rule Systems Solver