文章目录
向量空间与矩阵
矩阵的行列式
矩阵A的秩保持不变
- 在下面运算中,矩阵A的秩保持不变:
1.矩阵A的某个或某些列乘以非零标量。
2.矩阵内部交换列次序。
3.在矩阵中加入一列,该列是其他列的线性组合。 - 线性无关向量的数目不依赖于它们的次序。
方阵的行列式
- 矩阵A的行数等于列数,称为方阵。
- 行列式是每个方阵对应的一个标量,记为 d e t ( A ) det(A) det(A)或 ∣ A ∣ |A| ∣A∣
- 方阵的行列式是各列的函数,具有以下性质 :
- 矩阵 A = [ a 1 , a 2 , . . . , a n ] 的行列式是各列的线性函数。 A=[a_1,a_2,...,a_n]的行列式是各列的线性函数。 A=[a1,a2,...,an]的行列式是各列的线性函数。
对于任意 α 和 β ∈ R 和 a k ( 1 ) , a k ( 2 ) ⊂ R n 有 d e t [ a 1 , . . . , a k − 1 , α a k ( 1 ) + β a k ( 2 ) , a k + 1 , . . . , a n ] = α d e t [ a 1 , . . . , a k − 1 , a k ( 1 ) , a k + 1 , . . . , a n ] + β d e t [ a 1 , . . . , a k − 1 , a k ( 2 ) , a k + 1 , . . . , a n ] 对于任意\alpha和\beta\in R和a_k^{(1)},a_k^{(2)}\subset R^n \\有det[a_1,...,a_{k-1},\alpha a_k^{(1)}+\beta a_k^{(2)},a_{k+1},...,a_n] \\=\alpha det[a_1,...,a_{k-1},a_k^{(1)},a_{k+1},...,a_n]+\beta det[a_1,...,a_{k-1},a_k^{(2)},a_{k+1},...,a_n] 对于任意α和β∈R和ak(1),ak(2)⊂Rn有det[a1,...,ak−1,αak(1)+βak(2),ak+1,...,an]=αdet[a1,...,ak−1,ak(1),ak+1,...,an]+βdet[a1,...,ak−1,ak(2),ak+1,...,an]
为了证明矩阵 A = [ a 1 , a 2 , ... , a n ] A = [a_1, a_2, \ldots, a_n] A=[a1,a2,...,an]的行列式是各列的线性函数,我们可以按照以下步骤进行:
第一步:考虑单列线性变换
首先,考虑矩阵 A A A的某一列(例如第 k k k列)的线性变换。设 b = α a k + β v b = \alpha a_k + \beta v b=αak+βv,其中 a k a_k ak是 A A A的第 k k k列, v v v是任意与 a k a_k ak同维的向量, α \alpha α和 β \beta β是标量。
构造一个新的矩阵 B B B,其第 k k k列为 b b b,其余列与 A A A相同。即:
B = [ a 1 , ... , a k − 1 , b , ... , a n ] = [ a 1 , ... , a k − 1 , α a k + β v , a k + 1 , ... , a n ] B = [a_1, \ldots, a_{k-1}, b, \ldots,a_n] \\= [a_1, \ldots, a_{k-1}, \alpha a_k + \beta v, a_{k+1}, \ldots,a_n] B=[a1,...,ak−1,b,...,an]=[a1,...,ak−1,αak+βv,ak+1,...,an]
第二步:应用行列式的线性性质
根据行列式的线性性质(即行列式关于其列是线性的),我们有:
det ( B ) = det ( [ a 1 , ... , a k − 1 , α a k + β v , a k + 1 , ... , a n ] ) \det(B) = \det([a_1, \ldots, a_{k-1}, \alpha a_k + \beta v, a_{k+1}, \ldots, a_n]) det(B)=det([a1,...,ak−1,αak+βv,ak+1,...,an])
这可以分解为:
det ( B ) = α det ( [ a 1 , ... , a k − 1 , a k , a k + 1 , ... , a n ] ) + β det ( [ a 1 , ... , a k − 1 , v , a k + 1 , ... , a n ] ) \det(B) = \alpha \det([a_1, \ldots, a_{k-1}, a_k, a_{k+1}, \ldots, a_n]) + \beta \det([a_1, \ldots, a_{k-1}, v, a_{k+1}, \ldots, a_n]) det(B)=αdet([a1,...,ak−1,ak,ak+1,...,an])+βdet([a1,...,ak−1,v,ak+1,...,an])
简化后得到:
det ( B ) = α det ( A ) + β det ( A k → v ) \det(B) = \alpha \det(A) + \beta \det(A_{k \to v}) det(B)=αdet(A)+βdet(Ak→v)
其中 A k → v A_{k \to v} Ak→v表示将 A A A的第 k k k列替换为 v v v后得到的矩阵。
第三步:推广到所有列
由于行列式关于每一列都是线性的,我们可以对矩阵 A A A的每一列都进行类似的线性变换,并应用上述的线性性质。因此,对于矩阵 A A A的任意线性变换(即每一列都是原列的线性组合),其行列式都是原行列式的线性组合。
结论
综上所述,矩阵 A = [ a 1 , a 2 , ... , a n ] A = [a_1, a_2, \ldots, a_n] A=[a1,a2,...,an]的行列式确实是各列的线性函数。这意味着,如果我们对矩阵的某一列进行线性变换(即乘以一个标量或加上另一个向量的线性组合),其行列式也会以相应的方式线性地变化。
行列式的线性性质主要指的是行列式关于其行或列的线性依赖性。
- 具体来说,行列式关于其任意一行或一列都是线性的,这意味着如果我们固定行列式的其他行(或列),并对某一行(或列)进行线性变换(即乘以一个标量或加上另一行/列的线性组合),那么新的行列式将是原行列式的线性组合。
- 然而,需要注意的是,行列式的线性性质并不允许同时对多行或多列进行线性组合。即,它只保证了对单一行或列的线性变换的线性性。
- 对于单列(或行)的线性性质,我们可以这样表述: 设 A A A 是一个 n × n n \times n n×n 矩阵, a i a_i ai 是 A A A 的第 i i i
列(或行), v v v 是一个与 a i a_i ai 同维的向量, α \alpha α 和 β \beta β 是标量。那么,构造一个新的矩阵 B B B,其中
B B B 的第 i i i 列(或行)是 α a i + β v \alpha a_i + \beta v αai+βv,其余列(或行)与 A A A 相同。则: det ( B ) = α det ( A ) + β det ( A i → v ) \det(B) = \alpha \det(A) + \beta \det(A_{i \to v}) det(B)=αdet(A)+βdet(Ai→v) 其中 A i → v A_{i \to v} Ai→v 表示将 A A A 的第 i i i 列(或行)替换为 v v v 后得到的矩阵。- 这个性质可以推广到多列(或行)的情况,但每次只能对一列(或行)进行线性变换,并且需要分别考虑每次变换对行列式的影响。
然而,在实际应用中,我们更常使用行列式的其他性质(如按行或列展开、三角矩阵的行列式、行列式的乘积性质等)来计算或证明行列式的值。线性性质主要用于理解行列式的结构和在某些特定情况下的计算简化。
最后,需要强调的是,行列式的线性性质是关于其行或列的,而不是关于矩阵元素的线性组合。即,我们不能简单地将行列式视为矩阵元素的线性函数,而是需要将其视为矩阵行或列的线性函数
- 行列式中有两列相同,则行列式值=0
有 d e t [ a 1 , . . . , a k − 1 , a k , a k + 1 , . . . , a n ] = d e t [ a 1 , . . . , a k − 1 , a k , a k , . . . , a n ] = 0 有det[a_1,...,a_{k-1},a_k,a_{k+1},...,a_n] \\=det[a_1,...,a_{k-1},a_k,a_k,...,a_n]=0 有det[a1,...,ak−1,ak,ak+1,...,an]=det[a1,...,ak−1,ak,ak,...,an]=0 - 行列式中有一列为0,则行列式为0
有 d e t [ a 1 , . . . , a k − 1 , 0 , a k + 1 , . . . , a n ] = 0 有det[a_1,...,a_{k-1},0,a_{k+1},...,a_n]=0 有det[a1,...,ak−1,0,ak+1,...,an]=0
- 令 I n = [ e 1 , e 2 , . . . . , e n ] = [ 1 0 . . . 0 0 1 . . . 0 . . . . . . . . . . . . 0 0 . . . 1 ] d e t ( I n ) = 1 令I_n=[e_1,e_2,....,e_n]= \begin{bmatrix} 1 &0 &...&0 \\0&1&...&0 \\...&...&...&... \\0&0&...&1 \end{bmatrix} \\det(I_n)=1 令In=[e1,e2,....,en]= 10...001...0............00...1 det(In)=1
- 矩阵行列式的一列加上另外一列与某个标量的乘积,行列式值不变化 。
d e t [ a 1 , . . . , a k − 1 , a k + α a j , a k + 1 , . . . , a j , . . . , a n ] = d e t [ a 1 , . . . , a k − 1 , a k , a k + 1 , . . . , a j , . . . , a n ] + α d e t [ a 1 , . . . , a k − 1 , a j , a k + 1 , . . . , a j , . . . , a n ] = d e t [ a 1 , . . . , a n ] det[a_1,...,a_{k-1},a_k+\alpha a_j,a_{k+1},...,a_j,...,a_n]= \\det[a_1,...,a_{k-1},a_k,a_{k+1},...,a_j,...,a_n] \\+\alpha det[a_1,...,a_{k-1},a_j,a_{k+1},...,a_j,...,a_n]\\ =det[a_1,...,a_n] det[a1,...,ak−1,ak+αaj,ak+1,...,aj,...,an]=det[a1,...,ak−1,ak,ak+1,...,aj,...,an]+αdet[a1,...,ak−1,aj,ak+1,...,aj,...,an]=det[a1,...,an]
- 方阵的行列式是方阵的一个重要属性,它满足一系列的性质。以下是一些基本的方阵行列式性质:
-
单位矩阵的行列式 :
对于单位矩阵 I n I_n In(即主对角线上都是1,其余位置都是0的 n × n n \times n n×n矩阵),其行列式 ∣ I n ∣ = 1 |I_n| = 1 ∣In∣=1。
-
行列式的乘积性质 :
如果 A A A 和 B B B 是两个 n × n n \times n n×n 矩阵,那么 ∣ A B ∣ = ∣ A ∣ ⋅ ∣ B ∣ |AB| = |A| \cdot |B| ∣AB∣=∣A∣⋅∣B∣。注意,这里 A B AB AB 也必须是方阵。
-
行列式的转置性质 :
矩阵 A A A 的转置(记为 A T A^T AT)的行列式等于原矩阵的行列式,即 ∣ A T ∣ = ∣ A ∣ |A^T| = |A| ∣AT∣=∣A∣。
-
行列式的行(列)倍加性质 :
如果矩阵 A A A 的某一行(或列)是另一行(或列)的 k k k 倍加到其上得到的,那么新矩阵的行列式与原矩阵的行列式相等。但这一性质通常用于行列式的计算中通过行变换或列变换简化矩阵,而不是直接作为行列式的一个基本性质。
-
行列式的行(列)交换性质 :
交换矩阵 A A A 的两行(或两列),新矩阵的行列式是原矩阵行列式的相反数,即 ∣ A ′ ∣ = − ∣ A ∣ |A'| = -|A| ∣A′∣=−∣A∣,其中 A ′ A' A′ 是 A A A 通过交换两行(或两列)得到的矩阵。
-
三角矩阵的行列式 :
上三角矩阵(或下三角矩阵)的行列式等于其主对角线上元素的乘积。
-
零行(列)性质 :
如果矩阵 A A A 有一行(或一列)全为零,那么 ∣ A ∣ = 0 |A| = 0 ∣A∣=0。
-
拉普拉斯展开 :
对于 n × n n \times n n×n 矩阵 A A A,可以沿着任意一行或一列展开其行列式,得到 n n n 个 ( n − 1 ) × ( n − 1 ) (n-1) \times (n-1) (n−1)×(n−1) 子矩阵的行列式的线性组合。
这些性质在行列式的计算、证明以及线性代数中的其他应用中都非常有用。
线性无关的条件
是线性代数中的一个重要概念,它描述了向量集合中向量之间的一种独立性。具体来说,如果一组向量中的任何一个向量都不能由其他向量的线性组合来表示,那么这组向量就被称为线性无关的。
对于向量组 α 1 , α 2 , ... , α s \alpha_1, \alpha_2, \ldots, \alpha_s α1,α2,...,αs(其中每个 α i \alpha_i αi 都是 n n n 维向量),它们线性无关的条件可以通过以下两种方式之一来表述:
1. 线性组合为零向量的唯一性
向量组 α 1 , α 2 , ... , α s \alpha_1, \alpha_2, \ldots, \alpha_s α1,α2,...,αs 线性无关当且仅当线性组合
k 1 α 1 + k 2 α 2 + ⋯ + k s α s = 0 k_1\alpha_1 + k_2\alpha_2 + \cdots + k_s\alpha_s = 0 k1α1+k2α2+⋯+ksαs=0
只有唯一解 k 1 = k 2 = ⋯ = k s = 0 k_1 = k_2 = \cdots = k_s = 0 k1=k2=⋯=ks=0。换句话说,如果这组向量线性相关,那么上述线性组合就有非零解。
2. 矩阵的秩
如果向量组 α 1 , α 2 , ... , α s \alpha_1, \alpha_2, \ldots, \alpha_s α1,α2,...,αs 可以作为矩阵 A A A 的列向量,即
A = [ α 1 , α 2 , ... , α s ] A = [\alpha_1, \alpha_2, \ldots, \alpha_s] A=[α1,α2,...,αs]
那么这组向量线性无关当且仅当矩阵 A A A 的秩 rank ( A ) = s \text{rank}(A) = s rank(A)=s。这里 s s s 是向量组中向量的个数。如果秩小于 s s s,则存在至少一个向量可以由其他向量线性表示,即向量组线性相关。
3. 几何解释(对于二维和三维空间)
- 在二维空间中,两个向量线性无关当且仅当它们不共线。
- 在三维空间中,三个向量线性无关当且仅当它们不共面。
4. 行列式(对于方阵)
如果向量组 α 1 , α 2 , ... , α n \alpha_1, \alpha_2, \ldots, \alpha_n α1,α2,...,αn( n n n 维向量)可以构成一个 n × n n \times n n×n 矩阵 A A A,那么这组向量线性无关当且仅当矩阵 A A A 的行列式 ∣ A ∣ ≠ 0 |A| \neq 0 ∣A∣=0。这是因为行列式为零意味着矩阵的列(或行)向量之间存在线性关系,即向量组线性相关。
总结
线性无关的条件可以通过多种方式来理解和验证,包括线性组合的唯一性、矩阵的秩、几何解释以及行列式的值。在实际应用中,选择哪种方式取决于具体问题的背景和需要。
矩阵的非零子式
是矩阵中选取的一部分元素(行和列)所构成的行列式,且这个行列式的值不为零。具体来说,给定一个 m × n m \times n m×n矩阵 A A A,我们可以从它的行中选取 k k k行( k ≤ m k \leq m k≤m),从列中选取 k k k列( k ≤ n k \leq n k≤n),这样得到的 k × k k \times k k×k子矩阵的行列式就被称为矩阵 A A A的一个 k k k阶子式。如果这个子式的值不为零,则称它为矩阵 A A A的一个非零子式。
基础
矩阵 A 具有 r 阶子式 ∣ M ∣ ,具备以下性质: 1. ∣ M ∣ ≠ 0 2. 从 A 中再抽取一行和一列,增加到 M 中,新子式(新的行列式)为 0 。 则: r a n k A = r 矩阵 A 的秩等于它的非零子式的最高阶数。 一个矩阵 A 可以有不同阶的非零子式。 矩阵A具有r阶子式|M|,具备以下性质: \\1. |M|\ne 0 \\2.从A中再抽取一行和一列,增加到M中,新子式(新的行列式)为0。 \\则:rank A =r \\矩阵A的秩等于它的非零子式的最高阶数。 \\一个矩阵A可以有不同阶的非零子式。 矩阵A具有r阶子式∣M∣,具备以下性质:1.∣M∣=02.从A中再抽取一行和一列,增加到M中,新子式(新的行列式)为0。则:rankA=r矩阵A的秩等于它的非零子式的最高阶数。一个矩阵A可以有不同阶的非零子式。
重要性
- 非零子式的存在对于判断矩阵的秩、线性方程组解的情况、矩阵的线性相关性等具有重要意义。
- 矩阵的秩定义为矩阵中最大的非零子式的阶数。
例子
考虑以下矩阵 A A A:
A = ( 1 2 3 4 5 6 7 8 0 ) A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 0 \end{pmatrix} A= 147258360
- 矩阵 A A A的 1 1 1阶子式有很多,例如选取第一行第一列的元素 1 1 1,它本身就是一个 1 1 1阶子式,其值为 1 1 1(非零)。
- 矩阵 A A A的 2 2 2阶子式可以是通过选取前两行和前两列得到的子矩阵的行列式,即
∣ 1 2 4 5 ∣ = 1 ⋅ 5 − 2 ⋅ 4 = 5 − 8 = − 3 ≠ 0 \begin{vmatrix} 1 & 2 \\ 4 & 5 \end{vmatrix} = 1 \cdot 5 - 2 \cdot 4 = 5 - 8 = -3 \neq 0 1425 =1⋅5−2⋅4=5−8=−3=0
因此,这是一个非零子式。
- 矩阵 A A A的 3 3 3阶子式就是矩阵 A A A本身的行列式,但在这个例子中,矩阵 A A A的行列式为零(因为第三列是前两列的线性组合),所以它不是非零子式。然而,这并不妨碍矩阵 A A A有较低阶的非零子式。
注意事项
- 非零子式的存在并不意味着矩阵的所有子式都是非零的。
- 矩阵的秩是其所有非零子式的最大阶数,但找到这个最大阶数通常不需要检查所有可能的子式。
- 在实际应用中,我们可能更关心矩阵的秩,因为它与矩阵的许多重要性质直接相关。然而,了解非零子式的概念对于深入理解这些性质是很有帮助的。
非奇异矩阵(也称为可逆矩阵或满秩矩阵)
是线性代数中一个非常重要的概念。一个矩阵如果满足某些条件,则被称为非奇异的,这些条件通常与其行列式、秩或线性方程组解的存在性有关。
定义
一个 n × n n \times n n×n矩阵 A A A被称为非奇异的,如果满足以下条件之一:
- 行列式不为零 :矩阵 A A A的行列式 ∣ A ∣ ≠ 0 |A| \neq 0 ∣A∣=0。
- 满秩 :矩阵 A A A的秩等于其阶数 n n n,即 rank ( A ) = n \text{rank}(A) = n rank(A)=n。
- 线性无关的行和列 :矩阵 A A A的行向量和列向量都是线性无关的。
- 存在逆矩阵 :存在一个与 A A A同阶的矩阵 B B B,使得 A B = B A = I AB = BA = I AB=BA=I,其中 I I I是单位矩阵。此时, B B B被称为 A A A的逆矩阵,记作 A − 1 A^{-1} A−1。
性质
非奇异矩阵具有许多重要的性质,包括但不限于:
- 唯一逆 :如果矩阵 A A A是非奇异的,那么它的逆矩阵 A − 1 A^{-1} A−1是唯一的。
- 乘积可逆 :如果 A A A和 B B B都是非奇异的,那么它们的乘积 A B AB AB也是非奇异的,并且 ( A B ) − 1 = B − 1 A − 1 (AB)^{-1} = B^{-1}A^{-1} (AB)−1=B−1A−1。
- 行列式性质 : ∣ A − 1 ∣ = 1 ∣ A ∣ |A^{-1}| = \frac{1}{|A|} ∣A−1∣=∣A∣1。
- 线性方程组解的存在性 :如果 A A A是非奇异的,那么线性方程组 A x = b Ax = b Ax=b有唯一解 x = A − 1 b x = A^{-1}b x=A−1b。
例子
考虑矩阵
A = ( 1 2 3 4 ) A = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} A=(1324)
其行列式为 ∣ A ∣ = 1 ⋅ 4 − 2 ⋅ 3 = 4 − 6 = − 2 ≠ 0 |A| = 1 \cdot 4 - 2 \cdot 3 = 4 - 6 = -2 \neq 0 ∣A∣=1⋅4−2⋅3=4−6=−2=0,因此 A A A是非奇异的。其逆矩阵可以通过多种方法计算,例如使用伴随矩阵和行列式的倒数,得到
A − 1 = − 1 2 ( 4 − 2 − 3 1 ) = ( − 2 1 3 2 − 1 2 ) A^{-1} = -\frac{1}{2} \begin{pmatrix} 4 & -2 \\ -3 & 1 \end{pmatrix} = \begin{pmatrix} -2 & 1 \\ \frac{3}{2} & -\frac{1}{2} \end{pmatrix} A−1=−21(4−3−21)=(−2231−21)
验证逆矩阵的正确性,可以计算 A A − 1 AA^{-1} AA−1和 A − 1 A A^{-1}A A−1A,它们都应该等于单位矩阵。
结论
非奇异矩阵是线性代数中非常重要的概念,它们在解决线性方程组、矩阵运算、特征值和特征向量等方面都有广泛的应用。理解非奇异矩阵的性质和条件对于深入学习线性代数至关重要。
逆矩阵的计算
是线性代数中的一个重要问题,它有很多实际应用,比如在解线性方程组、计算行列式、以及矩阵的秩等方面。
高斯-约旦消元法
这是一种通过行变换将矩阵化为行最简形(在此情况下为单位矩阵)的方法,同时应用相同的行变换到单位矩阵上,从而得到原矩阵的逆。
以下是使用高斯-约旦消元法计算逆矩阵的步骤:
-
构造增广矩阵 :将原矩阵 A A A 和单位矩阵 I I I 并排放置,形成一个新的矩阵 [ A ∣ I ] [A | I] [A∣I]。
-
行变换 :对增广矩阵进行行变换,目标是将 A A A 化为单位矩阵 I I I。
-
读取逆矩阵 :当 A A A 被化为 I I I 时,右侧的单位矩阵 I I I 将变为 A A A 的逆矩阵 A − 1 A^{-1} A−1。
Julia代码
-
我们可以使用内置的函数来计算逆矩阵,也可以手动实现高斯-约旦消元法来计算。
-
首先,我们来看如何使用Julia的内置函数来计算逆矩阵:
julia
# 使用内置函数inv计算逆矩阵
A = [1 2 3; 0 1 4; 5 6 0]
invA = inv(A)
println(invA)
这段代码首先定义了一个3x3的矩阵A
,然后使用inv
函数计算其逆矩阵,并将结果存储在invA
中,最后打印出逆矩阵。
- 接下来,我们手动实现高斯-约旦消元法来计算逆矩阵:
julia
function inverse_matrix(B)
A=Float64.(B)
n = size(A, 1)
# 构造单位矩阵作为逆矩阵的初始值
invA = Matrix{Float64}(I, n, n)
# 高斯-约旦消元法
for i = 1:n
# 将主对角线元素化为1
factor = A[i, i]
for j = 1:n
A[i, j] = A[i, j] / factor
invA[i, j] = invA[i, j] / factor
end
# 将其他行消为0
for k = 1:n
if k != i
factor = A[k, i]
for j = 1:n
A[k, j] = A[k, j] - factor * A[i, j]
invA[k, j] = invA[k, j] - factor * invA[i, j]
end
end
end
end
return invA
end
# 示例
A = [1 2 3; 0 1 4; 5 6 0]
invA = inverse_matrix(A)
println(invA)
这段代码定义了一个inverse_matrix
函数,它接受一个矩阵A
作为输入,并返回其逆矩阵。函数内部使用了高斯-约旦消元法来同时化简矩阵A
和单位矩阵(即逆矩阵的初始值),最终得到逆矩阵。在示例中,我们构造了一个3x3的矩阵A
,然后调用inverse_matrix
函数计算其逆矩阵,并将结果存储在invA
中,最后打印出逆矩阵。
使用伴随矩阵和行列式的倒数来计算逆矩阵
首先需要了解伴随矩阵(Adjugate Matrix)的定义。对于一个 n × n n \times n n×n的矩阵 A A A,其伴随矩阵 a d j ( A ) adj(A) adj(A)是 A A A的代数余子式矩阵的转置。代数余子式 C i j C_{ij} Cij是矩阵 A A A去掉第 i i i行和第 j j j列后得到的 ( n − 1 ) × ( n − 1 ) (n-1) \times (n-1) (n−1)×(n−1)子矩阵的行列式,乘以 ( − 1 ) i + j (-1)^{i+j} (−1)i+j。
逆矩阵 A − 1 A^{-1} A−1可以通过以下公式计算:
A − 1 = 1 det ( A ) ⋅ a d j ( A ) A^{-1} = \frac{1}{\det(A)} \cdot adj(A) A−1=det(A)1⋅adj(A)
其中, det ( A ) \det(A) det(A)是矩阵 A A A的行列式。
在Julia中,我们可以这样实现:
julia
function cofactor_matrix(B)
A=Float64.(B)
n = size(A, 1)
C = zeros(n, n)
for i = 1:n
for j = 1:n
# 计算代数余子式
submatrix = A[[1:i-1; i+1:n], [1:j-1; j+1:n]]
C[j, i] = (-1)^(i+j) * det(submatrix)
end
end
return C
end
function inverse_matrix_with_cofactor(A)
detA = det(A)
if detA == 0
error("Matrix is singular and cannot be inverted.")
end
adjA = cofactor_matrix(A)
invA = (1/detA) * adjA
return invA
end
# 示例
A = [1 2 3; 0 1 4; 5 6 0]
invA = inverse_matrix_with_cofactor(A)
println(invA)
这段代码定义了两个函数:cofactor_matrix
用于计算伴随矩阵,inverse_matrix_with_cofactor
用于计算逆矩阵。在示例中,我们构造了一个 3 × 3 3 \times 3 3×3的矩阵A
,然后调用inverse_matrix_with_cofactor
函数计算其逆矩阵,并将结果存储在invA
中,最后打印出逆矩阵。
参考文献
1.《最优化导论》
2.文心一言
3.chatgpt