克莱姆法则 Cramer`s Rule

  • 1.什么是Cramer`s Rule
  • 2.Cramer`s Rule的具体内容
  • 3.Cramer`s Rule的计算效率
  • 4.由伴随矩阵引出Cramer`s Rule
  • 5.Cramer`s Rule的价值
  • 引用:


1.什么是Cramer`s Rule

下面引用百度百科和维基百科的介绍

百度百科:
克莱姆法则,又译克拉默法则(Cramer’s Rule)是线性代数中一个关于求解线性方程组的定理。它适用于变量和方程数目相等的线性方程组,是瑞士数学家克莱姆(1704-1752)于1750年,在他的《线性代数分析导言》中发表的。其实莱布尼兹〔1693〕,以及马克劳林〔1748〕亦知道这个法则,但他们的记法不如克莱姆。
对于多于两个或三个方程的系统,克莱姆的规则在计算上非常低效;与具有多项式时间复杂度的消除方法相比,其渐近的复杂度为O(n·n!)。即使对于2×2系统,克拉默的规则在数值上也是不稳定的

维基百科:
克莱姆法则(英语:Cramer’s rule),又称为克莱姆公式,是一个线性代数中的定理,用行列式来计算出线性等式组中的所有解。这个定理因加百列·克莱姆(1704年 - 1752年)的卓越使用而命名。在计算上,并非最有效率之法,因而在很多条等式的情况中没有广泛应用。不过,这一定理在理论性方面十分有效

上面的介绍,说了几个重点:

  1. 是线性代数中的一个定理,关于求解线性方程组的,用行列式来计算出线性等式组中的所有解,适用于变量和方程数目相等的线性方程组。
  2. 在计算上,并非最有效率之法;相较于消除法(高斯消元法),具有更高的复杂度。
  3. 但是这一定理在理论性方面十分有效 。

这是对克莱姆法则的总体评价。

2.Cramer`s Rule的具体内容

n元非齐次线性方程组中:
克莱姆法则java 克莱姆法则三次方程_virtualenv
系数构成的行列式称为该方程组的系数行列式D,即
克莱姆法则java 克莱姆法则三次方程_线性方程组_02
若线性方程组的系数矩阵可逆(非奇异),即系数行列式 D≠0,则线性方程组有唯一解,其解为
克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_03
其中克莱姆法则java 克莱姆法则三次方程_virtualenv_04是把D中第j列元素对应地换成常数项而其余各列保持不变所得到的行列式。如:
克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_05

以上就是克莱姆法则的内容,使用时有如下前提:

  1. n元非齐次线性方程组
  • n元:未知数x的个数为n, 方程的个数为n
  • 非齐次: 克莱姆法则java 克莱姆法则三次方程_线性方程组_06不全为0
  • 线性:x的最高次幂为1,即多元一次
  1. 系数行列式克莱姆法则java 克莱姆法则三次方程_python_07,保证方程解的唯一性

方程的个数和未知数个数不相等的话,系数无法构成行列式克莱姆法则java 克莱姆法则三次方程_编程语言_08

方程组的等式右边的b值全部为0,则行列式克莱姆法则java 克莱姆法则三次方程_python_09都为0

克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_10,则克莱姆法则java 克莱姆法则三次方程_virtualenv_11没有意义

可见,克莱姆法则在使用上有很多的限制。

3.Cramer`s Rule的计算效率

n元非齐次方程组,需要计算的行列式有:

  • 系数行列式克莱姆法则java 克莱姆法则三次方程_编程语言_08
  • 行列式克莱姆法则java 克莱姆法则三次方程_python_09

即n+1个行列式,其渐近的复杂度为O(n·n!)

相较于高斯消元法,克莱姆法则是低效的,实际应用不广泛。

4.由伴随矩阵引出Cramer`s Rule

n元线性方程组可以表示为:
克莱姆法则java 克莱姆法则三次方程_编程语言_14
克莱姆法则java 克莱姆法则三次方程_python_15为方程组的系数矩阵,克莱姆法则java 克莱姆法则三次方程_virtualenv_16为向量克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_17,若克莱姆法则java 克莱姆法则三次方程_线性方程组_18,则克莱姆法则java 克莱姆法则三次方程_python_15可逆,由矩阵性质可得,
克莱姆法则java 克莱姆法则三次方程_virtualenv_20

则接下来的关键,就是要求出克莱姆法则java 克莱姆法则三次方程_virtualenv_21,有两种方法:

  1. 初等变换法
  2. 伴随矩阵法

初等变换法,借助消除法(高斯消元法),简单高效

伴随矩阵法,计算起来比较复杂,但是可以借此引出克莱姆法则。

克莱姆法则java 克莱姆法则三次方程_python_15为n阶矩阵,克莱姆法则java 克莱姆法则三次方程_线性方程组_23为矩阵A的行列式,克莱姆法则java 克莱姆法则三次方程_线性方程组_24为矩阵的伴随矩阵
克莱姆法则java 克莱姆法则三次方程_python_25
克莱姆法则java 克莱姆法则三次方程_virtualenv_26
其中克莱姆法则java 克莱姆法则三次方程_编程语言_27克莱姆法则java 克莱姆法则三次方程_线性方程组_23的代数余子式。

由行列式的拉普拉斯展开,可得
克莱姆法则java 克莱姆法则三次方程_virtualenv_29



克莱姆法则java 克莱姆法则三次方程_python_30
克莱姆法则java 克莱姆法则三次方程_virtualenv_31.

代数余子式在这里有一个特点,一行(或列)的子式与另一行(或列)的代数余子式的乘积之和为零。即:

克莱姆法则java 克莱姆法则三次方程_线性方程组_32
克莱姆法则java 克莱姆法则三次方程_线性方程组_33

故而,可推出:
克莱姆法则java 克莱姆法则三次方程_线性方程组_34
克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_35巧妙的地方就在这,被构造出来的按照特定的顺序排列的代数余子式矩阵,跟矩阵克莱姆法则java 克莱姆法则三次方程_python_15相乘之后,居然能够得到一个标量乘以单位矩阵克莱姆法则java 克莱姆法则三次方程_线性方程组_37,等式两边除以标量克莱姆法则java 克莱姆法则三次方程_python_38,得,
克莱姆法则java 克莱姆法则三次方程_编程语言_39

从而,
克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_40

到了这一步,克莱姆法则的推导就要呼之欲出了
对于方程组来说,系数矩阵的行列式克莱姆法则java 克莱姆法则三次方程_python_41,那克莱姆法则java 克莱姆法则三次方程_python_42克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_43又有什么关系呢?
如下:

克莱姆法则java 克莱姆法则三次方程_线性方程组_44
而,
克莱姆法则java 克莱姆法则三次方程_编程语言_45
故,
克莱姆法则java 克莱姆法则三次方程_线性方程组_46
代入克莱姆法则java 克莱姆法则三次方程_python_47中,得,

克莱姆法则java 克莱姆法则三次方程_线性方程组_48

最后可得:
克莱姆法则java 克莱姆法则三次方程_virtualenv_49
由此,可得到克莱姆法则的表达式

由伴随矩阵得到了逆矩阵,也由伴随矩阵推导出了克莱姆法则

5.Cramer`s Rule的价值

  • 研究了方程组的系数与方程组解的存在性与唯一性关系。
  • 与其在计算方面的作用相比,克莱姆法则更具有重大的理论价值。
  • 克莱姆法则不仅仅适用于实数域,它在任何域上面都可以成立。

克莱姆法则在解决微分几何的问题时十分有用。

先考虑两条等式克莱姆法则java 克莱姆法则三次方程_编程语言_50克莱姆法则java 克莱姆法则三次方程_virtualenv_51。其中的u和v是需要考虑的变量,并且它们互不相关。我们可定义克莱姆法则java 克莱姆法则三次方程_线性方程组_52克莱姆法则java 克莱姆法则三次方程_编程语言_53

找出一条等式适合克莱姆法则java 克莱姆法则三次方程_python_54是克莱姆法则的简单应用。

首先,我们要计算克莱姆法则java 克莱姆法则三次方程_编程语言_55克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_56克莱姆法则java 克莱姆法则三次方程_python_57克莱姆法则java 克莱姆法则三次方程_python_58的导数:

克莱姆法则java 克莱姆法则三次方程_编程语言_59
克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_60
克莱姆法则java 克莱姆法则三次方程_python_61
克莱姆法则java 克莱姆法则三次方程_编程语言_62

克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_63克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_64代入克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_65克莱姆法则java 克莱姆法则三次方程_python_66,可得出:

克莱姆法则java 克莱姆法则三次方程_python_67

克莱姆法则java 克莱姆法则三次方程_线性方程组_68
因为克莱姆法则java 克莱姆法则三次方程_编程语言_69克莱姆法则java 克莱姆法则三次方程_virtualenv_70互不相关,所以克莱姆法则java 克莱姆法则三次方程_编程语言_71克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_72的系数都要等于0。所以等式中的系数可以被写成:

克莱姆法则java 克莱姆法则三次方程_python_73

克莱姆法则java 克莱姆法则三次方程_克莱姆法则java_74

克莱姆法则java 克莱姆法则三次方程_python_75

克莱姆法则java 克莱姆法则三次方程_virtualenv_76

现在用克莱姆法则就可得到:

克莱姆法则java 克莱姆法则三次方程_编程语言_77
用两个雅可比矩阵来表示的方程:

克莱姆法则java 克莱姆法则三次方程_python_78
用类似的方法就可以找到克莱姆法则java 克莱姆法则三次方程_线性方程组_79克莱姆法则java 克莱姆法则三次方程_编程语言_80以及克莱姆法则java 克莱姆法则三次方程_编程语言_81



引用:

1.百度百科: 克莱姆法则.
2.维基百科: 克莱姆法则.