高等代数精解【9】
文章目录
- 向量空间与矩阵
- 矩阵的行列式
- 矩阵A的秩保持不变
- 方阵的行列式
- 线性无关的条件
- 1. 线性组合为零向量的唯一性
- 2. 矩阵的秩
- 3. 几何解释(对于二维和三维空间)
- 4. 行列式(对于方阵)
- 总结
- 矩阵的非零子式
- 基础
- 重要性
- 例子
- 注意事项
- 非奇异矩阵(也称为可逆矩阵或满秩矩阵)
- 定义
- 性质
- 例子
- 结论
- 逆矩阵的计算
- 高斯-约旦消元法
- Julia代码
- 使用伴随矩阵和行列式的倒数来计算逆矩阵
- 参考文献
向量空间与矩阵
矩阵的行列式
矩阵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的内置函数来计算逆矩阵:
# 使用内置函数inv计算逆矩阵
A = [1 2 3; 0 1 4; 5 6 0]
invA = inv(A)
println(invA)
这段代码首先定义了一个3x3的矩阵A
,然后使用inv
函数计算其逆矩阵,并将结果存储在invA
中,最后打印出逆矩阵。
- 接下来,我们手动实现高斯-约旦消元法来计算逆矩阵:
using LinearAlgebra
function inverse_matrix(B)A=Float64.(B)n = size(A, 1)# 构造单位矩阵作为逆矩阵的初始值invA = diagm(ones(n))# 高斯-约旦消元法for i = 1:n# 将主对角线元素化为1factor = A[i, i]for j = 1:nA[i, j] = A[i, j] / factorinvA[i, j] = invA[i, j] / factorend# 将其他行消为0for k = 1:nif k != ifactor = A[k, i]for j = 1:nA[k, j] = A[k, j] - factor * A[i, j]invA[k, j] = invA[k, j] - factor * invA[i, j]endendendendreturn invAend# 示例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中,我们可以这样实现:
function cofactor_matrix(B)A=Float64.(B)n = size(A, 1)C = zeros(n, n)for i = 1:nfor 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)endendreturn C
endfunction inverse_matrix_with_cofactor(A)detA = det(A)if detA == 0error("Matrix is singular and cannot be inverted.")endadjA = cofactor_matrix(A)invA = (1/detA) * adjAreturn 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
相关文章:

高等代数精解【9】
文章目录 向量空间与矩阵矩阵的行列式矩阵A的秩保持不变方阵的行列式线性无关的条件1. 线性组合为零向量的唯一性2. 矩阵的秩3. 几何解释(对于二维和三维空间)4. 行列式(对于方阵)总结 矩阵的非零子式基础重要性例子注意事项 非奇…...

谷粒商城の缓存篇
文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…...

永远学习:为什么人工智能难以适应新挑战
理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境,正如水适应水瓶。”——中国谚语 “适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特乔治威尔斯 近年来,人工智能取得了长足的进步。所…...

【spring】 Jackson :@JsonIgnore 注解
@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别
现在Maven项目管理,在开发中时比较常用的,在一些项目汇总遇到依赖冲突的问题之后,还是没有能有一个很好的解决办法,这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...

git svn 日记
1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息,包括文件更改情况。 git log:显示 Git 仓库的提交历史。-p:显示每次提交的差异 (diff),也就是文件内容的修改部分。-1:表示只显示最近的一…...

FSMC
RAM ROM RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据,种电路结构不需要定时…...

NAT技术+代理服务器+内网穿透
NAT技术 IPv4协议中,会存在IP地址数量不充足的问题,所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的,而公网中的IP地址都是唯一的,所以NAT(Network Address Translation&…...

【ABAP】ole2 excel多sheet导入导出
原理就不分享了 原来是用了动态表格,但是要导出不方便,所以就写死了,excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...

图像配准-小结
图像配准:找到一对图像间的几何变换关系,并且将待配准图像根据几何变换关系对齐到参考图像上,从而为图像融合、变化检测/监测提供基础。图像匹配,在某些语境中可能与上面的图像配准指的是一个东西,而在某些语境中可能指…...

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

计算机基础知识-2
x86架构的寄存器 AT&T汇编和Intel汇编的区别 每取出完一条指令,PC会自动+"1",指向下一条要被执行的指令。这里的1是指下一条指令,但是指令本身可能占用多个字节,所以地址可能不是以1叠加 当前执行的是10…...

Ubuntu2204配置连续失败后账户锁定
配置启用pam_faillock sudo nano /etc/pam.d/common-auth在最上面添加以下内容 auth required pam_faillock.so preauth silent audit auth sufficient pam_unix.so nullok try_first_pass auth [defaultdie] pam_faillock.so authfail auditsudo nano /etc/pam.d/…...

windows下安装elasticSearch和kibana
下载es 下载地址官网 下载后是个压缩包(elasticsearch-8.15.0-windows-x86_64),解压即可 启动 配置 改一下 /conf/jvm.options文件,最后加一行编码配置,这个是为了启动后防止控制台乱码 -Dfile.encodingGBK启动es 依赖jdk8环境…...

Java-IDEA模拟一个Redis服务器,与Redis客户端进行一次简单的交互。默认端口号:6379
首先要了解Redis的交互协议。 摘抄: 简单字符串(Simple Strings): 以 “” 开头,例如 “OK\r\n” 表示一个成功的响应。错误(Errors): 以 “-” 开头,例如 “-ERR unknown command\r\n” 表示一…...

WEB服务与虚拟主机/IIS中间件部署
WWW(庞大的信息系统)是基于客户机/服务器⽅式的信息发现技术和超⽂本技术的综合。网页浏览器//网页服务器 WWW的构建基于三项核⼼技术: HTTP:超文本传输协议,⽤于在Web服务器和客户端之间传输数据。HTML:⽤…...

JAVA开源项目 图书个性化推荐系统 计算机毕业设计
本文项目编号 T 015 ,文末自助获取源码 \color{red}{T015,文末自助获取源码} T015,文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例设计1.3 时序设计 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究…...

Spring Boot 注解探秘:HTTP 请求的魅力之旅
在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时…...

TYPE-C USB设计
目录 摘要 TYPE-C电路 握手过程 USB电路 摘要 TYPE-C,是USB的一种接口,USB的第一种接口为常见的USB接口,U盘即为这种接口;第二种接口的形状类似一个凸字,常应用在打印机中,第三种接口即为TYPE-C,支持正…...

Python炒股自动化,怎样理解股票交易性质
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

Vue2 day-02
目录 一. Vue脚手架(Vue CLI) 1.1 安装新版本的Vue脚手架vue/cli 1.2 用命令创建Vue项目 1.2.1 命令创建vue项目 1.2.2 默认创建 1.2.3 自定义创建 1.2.4 基于ui界面创建Vue项目 1.3 分析Vue脚手架生成的项目结构及代码执行 1.3.1 默认创建文件结构 1.3.2 分开放置文…...

什么?!新版 Node.js V22.5 自带 SQLite 模块啦
前言 2024年7月,Node.js V22.5.0 版本发布,自带了 SQLite 模块,意味着开发者可以直接在程序中使用 SQLite 数据库,而无需引入第三方库👍。 话不多说,感觉来体验一波✈。 安装/升级 我现在用的是21.4.0版…...

Maven持续集成(Continuous integration,简称CI)版本友好管理
从Maven 3.5.0-beta-1 版本开始可以在pom文件中使用 r e v i s i o n 、 {revision}、 revision、{sha1}、${changelist}做为版本的占位符。 一、单module简单使用${revision}的场景 <project><modelVersion>4.0.0</modelVersion><parent><groupId…...

EvoSuite使用总结
1.安装EvoSuite插件 以IDEA为例,在Plugins栏搜索EvoSuite后点击install,安装完成后重启IDEA 2.使用EvoSuite 选中文件右键选择Run EvoSuite 生成成功可以看到如下提示: 注意事项: 生成路径:src/test/java 使用juni…...

Cortex-A7:简单中断处理(不可嵌套中断)机制
0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A…...

k8s HPA
水平自动扩容和缩容HPA HPA全称Horizontal Pod Autoscaler,即pod水平自动伸缩。HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率,也可以基于其他应用程序提供的度量指标cust…...

5G移动网络运维实验(训)室解决方案
随着第五代移动通信技术(5G)的快速普及和工业互联网的迅猛发展,全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力,为工业自动化、智能制造等领域带来了革命性的技术支持。为了…...

单片机学习笔记
一、单片机帝国的诞生与发展 1.1 单片机的基本概念 单片机是一种集成电路芯片,采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。 一般而言,单片机也…...

SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较
SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较 更新时间:2024年08月08日 09:41:48 作者:岳轩子 在Spring Boot中,Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,ConfigurationProperties用于将配置文件…...

执行任务赚积分
题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问…...