3.2 行列式的性质(第三章 行列式)

主要内容

这一节的核心内容是,将求一个矩阵的行列式的问题,转化为求该矩阵进行行变换后矩阵的行列式的问题。通过这种转化,可以非常灵活地降低求一个复杂矩阵行列式的难度。此外,还在论述过程中,顺便证明了行列式为0和矩阵可逆的关系定理。并讲解了一些围绕核心内容的推论,例如列变换定理,行列式和矩阵乘积的关系等。

行变换定理

计算某个方阵的行列式,可以转换为计算其过行变换的矩阵的行列式。有如下定理:

A A A是一个方阵
a. 若 A A A的某一行的倍数加到另一行得矩阵 B B B,则 d e t   B = d e t   A det \ B = det\ A det B=det A
b. 若 A A A的两行互换得矩阵 B B B,则 d e t   B = − d e t   A det\ B = -det\ A det B=det A
c. 若 A A A的某行乘以 k k k倍得到矩阵 B B B,则 d e t   B = k ⋅ d e t   A det\ B=k\cdot det\ A det B=kdet A

证明:

上述每项操作对应一个初等矩阵的操作,另外,通过简单的计算就可以知道如下结论:
d e t   E = 1 det \ E = 1 det E=1,若 E E E是一个行倍加
d e t   E = − 1 det \ E = -1 det E=1,若 E E E是一个交换
d e t   E = r det \ E = r det E=r,若 E E E是一个 r r r倍乘
因此,上述定理其实可以转化为如下的描述:
d e t   E A = ( d e t   E ) ( d e t   A ) det\ EA = (det\ E)(det\ A) det EA=(det E)(det A)
我们要证明的是上面的式子。
可以通过数学归纳法来证明。
对于 2 × 2 2\times 2 2×2的矩阵,很容易验证上述公式成立。
假设该定理对 k × k k \times k k×k矩阵也成立。
n = k + 1 n = k+1 n=k+1
B = E A B=EA B=EA,通过余因子展开式的方式来展开 B B B,选择在 E E E的作用下没有被改变的一行展开 B B B。如此一来,
B i j B_{ij} Bij也满足 B i j = E A i j B_{ij}=EA_{ij} Bij=EAij,其中 A i j A_{ij} Aij是按同样的方式从 A n A_n An中得到的 k k k维矩阵。
根据上述归纳法的假设,由于 B i j B_{ij} Bij A i j A_{ij} Aij均是 k k k维矩阵,因此有:
d e t   B i j = α d e t   A i j det\ B_{ij} = \alpha det\ A_{ij} det Bij=αdet Aij
α \alpha α的值对应上面的 1 , − 1 , k 1, -1, k 1,1,k
另一方面,
d e t   B = a i 1 ( − 1 ) i + 1 d e t   B i 1 + ⋯ + a i n ( − 1 ) i + n d e t   B i n = α a i 1 ( − 1 ) i + 1 d e t   A i 1 + ⋯ + α a i n ( − 1 ) i + n d e t   A i n = α d e t   A \begin{aligned} det\ B &= a_{i1}(-1)^{i+1}det\ B_{i1} + \cdots + a_{in}(-1)^{i+n}det\ B_{in}\\&=\alpha a_{i1}(-1)^{i+1}det\ A_{i1} + \cdots + \alpha a_{in}(-1)^{i+n}det\ A_{in} \\&=\alpha det\ A \end{aligned} det B=ai1(1)i+1det Bi1++ain(1)i+ndet Bin=αai1(1)i+1det Ai1++αain(1)i+ndet Ain=αdet A
由归纳法,上述定理得证。

例:

计算 d e t   A det\ A det A,其中 A = [ 1 − 4 2 − 2 8 9 − 1 7 0 ] A=\begin{bmatrix}1&-4&2\\-2&8&9\\-1&7&0\end{bmatrix} A=121487290

解:

思路是,通过行变换对原始矩阵进行化简,使行列式便于计算,再通过上述定理求解。
d e t   A = ∣ 1 − 4 2 − 2 8 − 9 − 1 7 0 ∣ = ∣ 1 − 4 2 0 0 − 5

好,让我来解答您的问题。 首先,我们需要读取 iris.csv 文件,并将其分为三个类别。假设 iris.csv 文件的格式如下: | 花萼长度 | 花萼宽度 | 花瓣长度 | 花瓣宽度 | 类别 | |---------|---------|---------|---------|------| | 5.1 | 3.5 | 1.4 | 0.2 | 0 | | 4.9 | 3.0 | 1.4 | 0.2 | 0 | | 4.7 | 3.2 | 1.3 | 0.2 | 0 | | ... | ... | ... | ... | ... | 其中类别为0、1、2中的一个。 我们可以使用 Python 的 csv 模块来读取 iris.csv 文件,并将其分为三个类别: ```python import csv import numpy as np # 读取 iris.csv 文件 with open('iris.csv') as f: reader = csv.reader(f) next(reader) # 跳过第一行 data = [] for row in reader: data.append([float(x) for x in row[:-1]] + [int(row[-1])]) # 分为三个类别 class0 = np.array([x[:4] for x in data if x[4] == 0])[:40] class1 = np.array([x[:4] for x in data if x[4] == 1])[:40] class2 = np.array([x[:4] for x in data if x[4] == 2])[:40] ``` 接下来,我们可以计算每个类别的样本均值、协方差矩阵和其逆矩阵行列式。其中,样本均值可以使用 numpy 的 mean 函数来计算;协方差矩阵可以使用 numpy 的 cov 函数来计算;逆矩阵行列式可以使用 numpy 的 linalg.inv 和 linalg.det 函数来计算: ```python # 求每个类别的样本均值 mean0 = np.mean(class0, axis=0) mean1 = np.mean(class1, axis=0) mean2 = np.mean(class2, axis=0) # 求每个类别的协方差矩阵和其逆矩阵行列式 cov0 = np.cov(class0.T) cov1 = np.cov(class1.T) cov2 = np.cov(class2.T) inv_cov0 = np.linalg.inv(cov0) inv_cov1 = np.linalg.inv(cov1) inv_cov2 = np.linalg.inv(cov2) det_cov0 = np.linalg.det(cov0) det_cov1 = np.linalg.det(cov1) det_cov2 = np.linalg.det(cov2) ``` 现在,我们可以使用判别函数来对第一类和第二类的样本进行分类。判别函数为: g_i(X) = -1/2 (X-μ_i)^T Σ_i^(-1) (X-μ_i) + ln(0.5) - 1/2 ln|Σ_i| 其中,μ_i、Σ_i、Σ_i^(-1)、|Σ_i| 分别表示第 i 个类别的样本均值、协方差矩阵、其逆矩阵行列式。 ```python # 对第一类和第二类的样本进行分类 samples = np.vstack((class0[40:], class1[40:])) labels = np.array([0]*10 + [1]*10) g0 = -0.5 * np.sum((samples - mean0) @ inv_cov0 * (samples - mean0), axis=1) - 0.5 * np.log(det_cov0) + np.log(0.5) g1 = -0.5 * np.sum((samples - mean1) @ inv_cov1 * (samples - mean1), axis=1) - 0.5 * np.log(det_cov1) + np.log(0.5) predictions = np.where(g0 > g1, 0, 1) # 输出分类结果 print(predictions == labels) ``` 最后,我们将待分类样本的类别归为 g_i(X) 大于 g_j(X) 的那个类别。如果 g0(X)>g1(X),则将其归为第一类;否则将其归为第二类。 希望这个答案能够解决您的问题,如有任何疑问,请随时提出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值