首页 > 其他分享 >行列式学习笔记

行列式学习笔记

时间:2024-08-02 10:32:44浏览次数:8  
标签:ddots 矩阵 笔记 学习 cdots 行列式 bmatrix vdots

前置知识

部分内容摘自 OI-Wiki

排列

由 \(1,2,\dots,n\) 组成的有序数组称为 \(1,2,\dots,n\) 的排列。前 \(n\) 个正整数的不同排列有 \(n!\) 个。

如果排列的逆序对个数是奇数,那么这是一个奇排列;如果排列的逆序对个数是偶数,那么这是一个偶排列。

置换

一个有限集合 \(S\) 到自身的双射(即一一对应)称为 S 的一个置换。集合 \(S=\{a_1,a_2,\dots ,a_n\}\) 上的置换可以表示为

\[f=\binom{a_1,a_2,\dots,a_n}{a_{p_1},a_{p_2},\dots,a_{p_n}} \]

其中 \(p_1,p_2,\dots,p_n\) 是 \(1,2,\dots,n\) 的一个排列。

对换

把 \(1,2,\dots,n\) 的排列中,任意两个不同数 \(i\) 和 \(j\) 交换,得到一个新的排列,这叫做一个对换,用 \((i,j)\) 表示。

性质

  • 一个排列一定能通过若干次对换转换成另一个排列。
  • 一次对换会改变排列的奇偶性。

矩阵行列式

定义

对于一个矩阵:\(A=\begin{bmatrix}a_{1,1}&\cdots&a_{1,n}\\\vdots &\ddots&\vdots\\ a_{n,1}&\cdots&a_{n,n}\end{bmatrix}\),定义它的行列式为:

\[\det(A)=\sum _{p_{1,2\dots n}} (-1)^{\pi(p)} \prod _{i=1}^n a_{i,p_i} \]

其中,\(p\) 表示 \(1,2,\dots,n\) 的一个排列,\(\pi(p)\) 表示排列的逆序对个数。

性质

部分内容摘自 数学(5)——线性代数:行列式 - 洛谷专栏 (luogu.com.cn)

转置矩阵行列式不变(1)

矩阵 \(A\) 的转置矩阵为 \(A^T\),其中 \(A_{i,j}=A^T_{j,i}\)。

原因是排列 \(p_1,p_2,\dots,p_n\) 的奇偶性和 \(p'_1,p'_2,\dots,p'_n\)(满足 \(p'_{p_i}=i\) 的排列) 的奇偶性相同。

交换矩阵的两行(列),行列式取反(2)

原因是对原先枚举的排列 \(p\) 进行一次对换,其奇偶性改变。

对于列的证明,因为转置矩阵行列式不变,所以证明了行的性质也就证明了列的性质。

矩阵一行(列)所有元素同乘一个数,行列式也乘以这个数(3)

表示为 \(\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ ka_{i,1}&ka_{i,2}&\cdots&ka_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix} = k\times \det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}\)。

如果矩阵 \(A\) 中某一行是(列)矩阵 \(B\) 和矩阵 \(C\) 中对应行(列)的所有元素之和,那么 \(\det(A)=\det(B)+\det(C)\)(4)

表示为 \(\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ b_{i,1}+c_{i,1}&b_{i,2}+c_{i,2}&\cdots&b_{i,n}+c_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}=\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ b_{i,1}&b_{i,2}&\cdots&b_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}+\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ c_{i,1}&c_{i,2}&\cdots&c_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}\)

如果矩阵中某两行(列)成比例,那么其行列式为 \(0\)(5)

表示为 \(\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ ka_{i,1}&ka_{i,2}&\cdots&ka_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix} =0\)

可以这样理解:把上面的第 \(i\) 行所有元素乘 \(k\),于是得到相同的两行,交换这两行,矩阵不变,行列式不变;但因为交换了两行,所以啊行列式取反,因此行列式为 \(0\)。

矩阵中一行(列)每个元素减去另一行(列)对应元素的若干倍,行列式不变(6)

表示为 \(\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{j,1}&a_{j,2}&\cdots&a_{j,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}=\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{j,1}+ka_{i,1}&a_{j,2}+ka_{i,2}&\cdots&a_{j,n}+ka_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}\)。

利用性质(4):\(\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{j,1}&a_{j,2}&\cdots&a_{j,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}=\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{j,1}&a_{j,2}&\cdots&a_{j,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}+\det \begin{bmatrix}a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\\vdots&\vdots&\ddots&\vdots\\ a_{i,1}&a_{i,2}&\cdots&a_{i,n}\\\vdots&\vdots&\ddots&\vdots\\ ka_{i,1}&ka_{i,2}&\cdots&ka_{i,n}\\\vdots&\vdots&\ddots&\vdots\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}\)。

最右边的矩阵第 \(i\) 行和第 \(j\) 行成比例,因此行列式为 \(0\),由此得证。

上三角矩阵行列式为对角线的乘积(7)

其中上三角矩阵中指的是,只有在 \(i\le j\) 的时候第 \(i\) 行第 \(j\) 列才有值,反之值为 \(0\)。

可以根据行列式的定义理解,只有当所有 \(p_i=i\) 的时候后面的连乘才不是 \(0\)。

同样,对于只有在 \(i\ge j\) 的时候第 \(i\) 行第 \(j\) 列有值的下三角矩阵来说,其行列式也为对角线的乘积。

计算

利用性质(6),可以把矩阵像高斯消元一样转换成上三角矩阵,然后根据性质(7)求值。

当模数为质数的时候可以直接高斯消元:

点击开 D
for(i=1;i<=n;++i) {
    if(!a[i][i]) {
        for(j=i+1;j<=n;++j) if(a[j][i]) { k=i; break; }
        flag^=1,swap(a[i],a[k]);
    }
    Mul(ans,a[i][i]);
    inver=inv(a[i][i]);
    for(j=i+1;j<=n;++j) {
        muler=mul(inver,a[j][i]);
        for(k=i;k<=n;++k)
            Sub(a[j][k],mul(a[i][k],muler));
    }
}
if(flag) Mul(ans,moder-1);

但是当模数不是质数的时候,可能会出现 \(a_{i,i}\) 没有逆元的情况,这个时候就要用类似辗转相除法的方法来消元:

点击开 D
for(i=1;i<=n;++i) {
    if(!a[i][i]) {
        for(j=i+1;j<=n;++j) if(a[j][i]) { k=i; break; }
        flag^=1,swap(a[k],a[i]);
    }
    for(j=i+1;j<=n;++j) {
        if(a[i][i]>a[j][i])
            flag^=1,swap(a[j],a[i]);
        while(a[j][i]) {
            flag^=1,swap(a[j],a[i]);
            muler=moder-a[j][i]/a[i][i];
            for(k=i;k<=n;++k)
                a[j][k]=(a[j][k]+muler*a[i][k])%moder;
        }
    }
    ans=ans*a[i][i]%moder;
}
if(flag) ans=(moder-ans)%moder;

<\details>

时间复杂度 \(O(n^3)\)。

标签:ddots,矩阵,笔记,学习,cdots,行列式,bmatrix,vdots
From: https://www.cnblogs.com/fydj/p/-/determinant

相关文章

  • 深度学习扫盲——Transforms
    在PyTorch中,torchvision是一个常用的库,它提供了对图像和视频数据的处理功能,包括数据加载、转换等。transforms是torchvision.transforms模块的一部分,它定义了一系列的图像转换操作,这些操作可以单独使用或者组合成转换序列(通过transforms.Compose),以便于在数据加载时自动应用到图像......
  • HCIP笔记2
    网络类型:1.点到点:在一个网段内,只能存在两个物理节点MA-多路访问--在一个网段内物理节点的数量不限制MA---BMA NBMA2.BMA--广播型多路访问3.NBMA--非广播型多路访问注:不同网络类型实际为不同的数据链路层技术;由于二层同时作为了物理层的大脑;故当选择不同的数据链路层技......
  • python需要学习的基础库
    Python在数据分析和机器学习领域非常强大,得益于其丰富的库和框架。以下是一些常用的数据分析和机器学习库,以及推荐的学习资源网站:数据分析库NumPy:提供高性能的多维数组对象和用于处理数组的工具。它是许多科学计算库的基础。学习资源:NumPy官方文档Pandas:为数据分析提供了......
  • Python 学习中的 API,如何调用API ?
    1.1API的定义API,全称是ApplicationProgrammingInterface(应用程序编程接口)。它是一组定义好的协议和工具,用于在软件应用程序之间进行通信。API可以简化软件开发,使不同的应用程序能够相互协作。它是软件开发中非常关键的组成部分,因为它提供了一种标准化的方式来访问某些功能,......
  • Java毕业设计-基于springboot开发的智能学习平台系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、学生信息管理2、课程信息管理3/试卷信息管理4/公告信息管理四、毕设内容和源代码获取总结逃逸的卡路里博主介绍:✌️码农一枚|毕设布道师......
  • 深度学习扫盲——PIL(python图像处理库)
    PIL(PythonImagingLibrary)库,也称为Pillow,是Python中广泛使用的PIL。它提供了丰富的图像处理功能,支持几乎所有图片格式的存储、显示和处理,能够完成图像的缩放、裁剪、叠加以及图像添加线条、图像和文字等操作。以下是对PIL库(Pillow)的详细介绍:一、基本介绍定义:PIL是PythonImagin......
  • 深度学习之自我扫盲——img_tensor是什么
    img_tensor在计算机视觉和深度学习的上下文中,通常指的是一个图像数据被转换成张量(Tensor)格式后的结果。张量是深度学习框架(如TensorFlow、PyTorch等)中用于表示数据的基本单位,它们可以看作是更高维度的数组或矩阵。在图像处理领域,一张图像通常由像素值组成,这些像素值可以表示颜......
  • java笔记3
    6.类与对象面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据和代码,它们是现实世界中某些事物的抽象。面向对象与面向过程面向过程编程:关注于动作和步骤,将程序分解为一系列的过程或函数。面向对象编程:关注于数据和对象,将程序构建为交互的对象集合。......
  • python中字典的学习
    字典(dict)目录字典(dict)字典的概念字典操作字典的遍历字典的常用方法字典的概念dictionary(字典)是除列表以外python之中最灵活的数据类型字典同样可以用来存储多个数据通常用于存储描述一个物体的相关信息和列表的区别列表是有序的对象集合字典是无序的对象集合......
  • HTML基础笔记
    1.HTML语法规范1.1基本语法概述1.HTML标签是由尖括号包围的关键词,例如<html>2.HTML通常是成对出现的,叫做双标签,分别是开始标签,结束标签。<html></html>3。有些特殊的标签必须是单标签。<br/>1.2标签关系双标签关系可以分为两类:包含关系和并列关系。<html><head......