线性代数学习笔记4——矩阵的逆

2023-11-02

在进行矩阵的运算的时候,我们会发现我们没有定义矩阵的除法,但是经常又需要做类似的操作,因而我们引入矩阵的逆的概念,用以填补这个空白。

矩阵的逆

由于我们在定义矩阵运算的时候只定义了数乘和矩阵乘法,而没有除法运算。和逆元的产生一样,我们为了定义出除法,我们采用乘一个数/矩阵得到单位1/单位矩阵的方法,并定义这个数/矩阵为原数/原矩阵的乘法。

注:单位矩阵是一个除了主对角线为1,其他全为0的方阵。由于阶数不固定,因而有无穷多种单位矩阵。

[ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\\end{bmatrix} 100010001

定义:设 A A A n n n阶方阵,若存在 n n n阶方阵 B B B,使得 A B = B A = I AB=BA=I AB=BA=I,则称 B B B A A A的逆,并称 A A A为可逆矩阵。 A − 1 A^{-1} A1 A A A的逆。

A A A可逆,则逆唯一。

证明:若 B B B C C C都是 A A A的逆,由定义 A B = B A = I AB=BA=I AB=BA=I A C = C A = I AC=CA=I AC=CA=I,则有:

B = I B = ( C A ) B = C ( A B ) = C I = C B=IB=(CA)B=C(AB)=CI=C B=IB=(CA)B=C(AB)=CI=C

B = C B=C B=C

有一种用行列式来判定和计算矩阵是否可逆的方法,过于繁琐,不适用于计算,只在此介绍。

定义:设 n n n阶方阵

[ a 11 a 12 a 13 ⋯ a 1 n a 12 a 22 a 23 ⋯ a 2 n ⋮ ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 a n 3 ⋯ a n n ] \begin{bmatrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} \\ a_{12} & a_{22} & a_{23} & \cdots & a_{2n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & a_{n3} & \cdots & a_{nn} \\ \end{bmatrix} a11a12an1a12a22an2a13a23an3a1na2nann

A A A的行列式 ∣ A ∣ |A| A中元素 a i j a_{ij} aij的代数余子式 A i j A_{ij} Aij构成的如下 n n n阶方阵:

A ∗ = [ A 11 A 21 A 31 ⋯ A n 1 A 12 A 22 A 32 ⋯ A n 2 ⋮ ⋮ ⋮ ⋱ ⋮ A n 1 A n 2 A 3 n ⋯ A n n ] A^*=\begin{bmatrix} A_{11} & A_{21} & A_{31} & \cdots & A_{n1} \\ A_{12} & A_{22} & A_{32} & \cdots & A_{n2} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ A_{n1} & A_{n2} & A_{3n} & \cdots & A_{nn} \\ \end{bmatrix} A=A11A12An1A21A22An2A31A32A3nAn1An2Ann

A ∗ A^* A A A A的伴随矩阵,而 A A A可逆的充要条件为 ∣ A ∣ ≠ 0 |A| \neq 0 A=0,且

A − 1 = A ∗ ∣ A ∣ A^{-1}=\frac{A^*}{|A|} A1=AA

此处证明需要用到行列式的性质,在此略去。

下文有更简单的判定和计算方法。

逆变换有一重要性质:若 A , B A,B A,B均可逆,则 A B AB AB也可逆,且 ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1。该性质可以反复利用,因此可以拓展到 k k k个可逆行列式相乘:

( A 1 A 2 … … A k ) − 1 = A k − 1 A k − 1 − 1 … … A 1 − 1 (A_1A_2……A_k)^{-1}=A_k^{-1}A_{k-1}^{-1}……A_1^{-1} (A1A2Ak)1=Ak1Ak11A11

初等矩阵

把单位矩阵进行一次初等行变换,就得到了初等矩阵。复习一下,初等行变换有以下三种:

1.交换矩阵的任意两行。

2.用一个非零整数 k k k乘矩阵的任意一行。

3.将矩阵中某一行乘以 k k k倍加到另外一行。

因此对于三阶单位矩阵 I 3 I_3 I3

[ 1 0 0 0 1 0 − 4 0 1 ] [ 0 1 0 1 0 0 0 0 1 ] [ 1 0 0 0 1 0 0 0 5 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0\\ -4 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0\\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0\\ 0 & 0 & 5 \\ \end{bmatrix} 104010001010100001100010005

均为初等矩阵。

由于初等行变换可逆(可以改过去又可以改回来),因此初等矩阵可逆。

证明:设 E E E为一初等矩阵,由于 E I = E EI=E EI=E,因此任意一个初等矩阵可以视为对 I I I矩阵的一种变换,使其变为 E E E矩阵。由于初等行变换可逆,则存在 E E E变换的逆变换 F F F,将 E E E矩阵变回 I I I,因此 E F = I EF=I EF=I,即 E E E可逆,且其逆为 E E E的逆变换。


到此可以引出本题的证明了:

方阵 A A A可逆,当且仅当 A A A行等价于 I n I_n In ,即 A A A经过若干次行变换可以变成 I n I_n In

充分性:由于 A A A可逆,则方程 A x = b Ax=b Ax=b必有解,其中 x , b x,b x,b均为向量(求解只需要在等式两边左乘以 A − 1 A^{-1} A1即可)。那么,对于解 x x x

x = [ x 1 x 2 ⋮ x n ] x=\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n\\ \end{bmatrix} x=x1x2xn

必可写出与 A A A等价的增广矩阵 A ′ A' A(因为解一样):

A ′ = [ 1 x 1 1 x 2 ⋱   ⋮ 1 x n ] A'=\left[ \begin{array}{cccc|c} 1&&&&x_1\\ &1&&&x_2\\ &&\ddots\ && \vdots\\ &&&1&x_n \end{array} \right] A=11 1x1x2xn

那么原矩阵必与 I n I_n In等价,否则无法化简成 A ′ A' A

必要性:如果 A A A等价于 I n I_n In,则 A A A是由若干次初等行变换得到。对于每次初等行变换都有一个对应的初等矩阵,那么这些操作可以被记作:

E p E p − 1 … … E 1 A = I n E_pE_{p-1}……E_1A=I_n EpEp1E1A=In

由矩阵逆的另一种定义,若 A A A可逆,则必存在一种能让 A A A回到 I n I_n In的方法。考虑对上式两边左乘 ( E p E p − 1 … … E 1 ) − 1 (E_pE_{p-1}……E_1)^{-1} (EpEp1E1)1

( ( E p E p − 1 … … E 1 ) − 1 E p E p − 1 … … E 1 ) A = ( E p E p − 1 … … E 1 ) − 1 I n ((E_pE_{p-1}……E_1)^{-1}E_pE_{p-1}……E_1)A=(E_pE_{p-1}……E_1)^{-1}I_n ((EpEp1E1)1EpEp1E1)A=(EpEp1E1)1In

A = ( E p E p − 1 … … E 1 ) − 1 A=(E_pE_{p-1}……E_1)^{-1} A=(EpEp1E1)1,为可逆矩阵的乘积,因此 A A A可逆,且 A − 1 = E p E p − 1 … … E 1 A^{-1}=E_pE_{p-1}……E_1 A1=EpEp1E1。因此, A − 1 A^{-1} A1可以由 E 1 , E 2 , … … , E p E_1,E_2,……,E_p E1,E2,,Ep依次作用于 I n I_n In得到。

得证。


接下来就是解法时间

我们把 A A A I n I_n In置于同一矩阵中:

[ A I n ] \begin{bmatrix} A & I_n \end{bmatrix} [AIn]

对其进行高斯-若尔当消元操作将 A A A变换为 I n I_n In。由于是在同一矩阵中,因此 A A A I n I_n In得到的操作都是一样的。我们只需要让前面的 A A A变换为 I n I_n In,那么对于同一过程, I n I_n In就会变成矩阵的逆。

用一张图来表示这个互相转化关系:

A ⇔ P ′ P I n ⇔ P ′ P A − 1 A\stackrel{P}{\underset{P'}{\Leftrightarrow}}I_n\stackrel{P}{\underset{P'}{\Leftrightarrow}}A^{-1} APPInPPA1

下面是洛谷P4783的代码,内含逆元,但是大体思路一样,因而还是放上代码。

#include <cstdio>
#include <algorithm>
using namespace std;
const long long mod = 1000000007;
long long power(long long a,int x)//快速幂板子
{
    long long ans = 1;
    while(x)
    {
        if(x&1)
        {
            ans *= a;
            ans %= mod;
        }
        a *= a;
        a %= mod;
        x >>= 1;
    }
    return ans % mod;
}
long long a[405][805];
int main()
{
    int n, m;
    scanf("%d", &n);
    m = 2 * n;//矩阵的宽
    for (int i = 1; i <= n;i++)
    {
        for (int j = 1; j <= n;j++)
            scanf("%lld", &a[i][j]);
        a[i][i + n] = 1;//后面要跟上一个n阶单位矩阵
    }
    for (int i = 1; i <= n; i++)//高斯-若尔当消元的板子
    {
        int place = i;
        for (int j = i + 1; j <= n; j++)//找到绝对值最大的元素开始消元
            if(abs(a[j][i])>abs(a[place][i]))
                place = j;
        if (i != place)
            swap(a[i], a[place]);
        if(!a[i][i])//如果某行没有主元则A无法化为单位矩阵,无解
        {
            printf("No Solution");
            return 0;
        }
        long long inv = power(a[i][i], mod - 2);//本题加入的逆元特色
        for (int j = 1; j <= n; j++)
            if(j!=i)
            {
                long long multiple = a[j][i] * inv % mod;//等价于除以a[i][i],消去其他行在第i列上的数,使之变成简化阶梯形矩阵
                for (int k = i; k <= m; k++)
                    a[j][k] = ((a[j][k] - a[i][k] * multiple) % mod + mod) % mod;
            }
        for (int j = 1; j <= m; j++)//由于此处需要简化阶梯型矩阵,要把原矩阵化为简化矩阵的必须操作。
        //“在使用高斯-若尔当消元的时候,计算机计算的时候通常采用回带法,而人操作的时候建议采用此法。”——《线性代数及其应用》
            a[i][j] = (a[i][j] * inv % mod);
    }
    for (int i = 1; i <= n;i++)
    {
        for (int j = n + 1; j <= m; j++)//只打印后面,前面的单位矩阵不要打出来了
            printf("%lld ", a[i][j]);
        printf("\n");
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性代数学习笔记4——矩阵的逆 的相关文章

  • 2022全国职业技能大赛-网络安全赛题解析总结④(超详细)

    2022全国职业技能大赛 网络安全赛题解析总结 自己得思路 模块A 基础设施设置与安全加固 20分 模块B 网络安全事件响应 数字取证调查和应用安全 40分 模块C CTF夺旗 攻击 20分 模块D CTF夺旗 防御 20分 有什么不懂得可
  • 给定一个序列快速计算不同二叉树的个数

    给定一个序列求二叉树的个数 就相当于n个数进栈然后得到一个出栈序列种树 假设用f n 表示n个数的出栈序列数的种树 假设第一个出栈序数是k 则k将1 n的序列分为两个序列 其中一个是1 k 1 序列个数是k 1 另一个是 k 1 n 序列个
  • CST2020 安装包和安装步骤

    安装包和破解码的百度云链接 链接 https pan baidu com s 1RNSWxVxb DIu8dg8gkCzAw 提取码 dve7 如果失效可评论留言 谢谢 1 关闭防火墙和杀毒软件 2 解压后 以管理员模式运行setup文件
  • API接口开发简述简单示例

    作为最流行的服务端语言PHP PHP Hypertext Preprocessor 在开发API方面 是很简单且极具优势的 API Application Programming Interface 应用程序接口 架构 已经成为目前互联网产
  • 变分模态分解(VMD)运算步骤及源码解读

    1 简述 VMD的目标是将实值输入信号 f f f分解为离散数量的子信号 模态 u k u k uk 我们先假设每个模态在一个中心频率
  • Unicode编码小结

    Unicode编码 一 ASCLL码 ASCII American Standard Code for Information Interchange 美国信息交换标准代码 是基于拉丁字母的一套电脑编码系统 主要用于显示现代英语和其他西欧语
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • Ubuntu和Windows使用Mmdetection训练Swin-Transformer+Mask-RCNN

    最近想用各种SOTA的Swin Transformer来试试实例分割效果 于是找了一下教程实验了一下 主要分为以下步骤 1 安装Mmdetection 这部分的教程很多 网上搜一下就行了 但是这里出错最多 2 下载Swin Transfor
  • MATLAB小技巧(20)矩阵分析--主成分回归

    MATLAB小技巧 20 矩阵分析 主成分回归 前言 一 MATLAB仿真 二 仿真结果 三 小结 前言 MATLAB进行图像处理相关的学习是非常友好的 可以从零开始 对基础的图像处理都已经有了封装好的许多可直接调用的函数 这个系列文章的话
  • 近日,小序一

    最近啊 想明白一些事情 人活着 为了什么 为名利 为欲望 还是为来生 为名利者 争权夺势 终会迷失本心 为欲望者 浑浑噩噩 终会误入歧途 唯有为来生者 无欲无求 一心向善 一心向善者 是灵魂富有的人 但往往生活贫瘠 所以 我为什么 你又为什
  • 教你5步学会用Llama2:我见过最简单的大模型教学

    在这篇博客中 Meta 探讨了使用 Llama 2 的五个步骤 以便使用者在自己的项目中充分利用 Llama 2 的优势 同时详细介绍 Llama 2 的关键概念 设置方法 可用资源 并提供一步步设置和运行 Llama 2 的流程 Meta
  • 《VirtualLab Fusion物理光学实验教程》好书分享

    目录 第一章 物理光学概念介绍 6 1 1 几何光学和光线追迹 6 1 2 物理光学和光场追迹 6 1 3 电场 磁场以及坡印廷矢量 8 1 4 振幅 相位及实部和虚部 9 1 5 振幅 相位与偏振 10 1 6菲涅尔公式 11 1 7 全
  • [足式机器人]Part2 Dr. CAN学习笔记-Ch0-1矩阵的导数运算

    本文仅供学习使用 本文参考 B站 DR CAN Dr CAN学习笔记 Ch0 1矩阵的导数运算 1 标量向量方程对向量求导 分母布局 分子布局 1 1 标量方程对向量的导数 1 2 向量方程对向量的导数 2 案例分析 线性回归 3 矩阵求导
  • Latex公式中矩阵的方括号和圆括号表示方法

    一 背景 在使用Latex写论文时 不可避免的涉及到矩阵公式 有的期刊要求矩阵用方括号 有的期刊要求矩阵用圆括号 因此 特记录一下Latex源码在两种表示方法上的区别 以及数组和方程组的扩展 二 矩阵的方括号表示 首先所有的矩阵肯定都是在标
  • 一文图解 Transformer,小白也看得懂(完整版)

    原作者 Jay Alammar 原链接 https jalammar github io illustrated transformer 1 导语 谷歌推出的 BERT 模型在11项NLP任务中夺得SOTA结果 引爆了整个NLP界 而BER
  • 短视频账号矩阵系统3年技术独立源头正规开发搭建

    短视频账号矩阵3年技术独立开发打造是一个非常有挑战性和前景的项目 以下是一些建议 帮助你成功打造一个成功的短视频账号矩阵 1 确定目标受众 首先需要明确你的目标受众是谁 了解他们的兴趣爱好 年龄 性别等 以便为他们提供他们感兴趣的内容 2
  • 短视频账号矩阵系统3年独立开发正规接口源码搭建部署开发

    一 矩阵系统源码主要有三种框架 短视频账号矩阵源码的框架有很多种 以下列举其中几种 1 星图矩阵 星图矩阵是抖音官方向商家提供的短视频广告推广平台 是抖音官方的赚钱工具 商家可利用星图矩阵进行广告推广 同时短视频创作者也能通过星图平台获取收
  • C 库函数 - mktime()

    描述 C 库函数 time t mktime struct tm timeptr 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数 发生错误时返回 1 声明 下面是 mktime 函数的声明 time
  • 如何设计一个高并发系统?

    所谓高并发系统 是指能同时处理大量并发请求 并及时响应 从而保证系统的高性能和高可用 那么我们在设计一个高并发系统时 应该考虑哪些方面呢 1 搭建集群 如果你只部署一个应用 只部署一台服务器 那抗住的流量请求是非常有限的 并且 单体的应用
  • 5_机械臂运动学基础_矩阵

    上次说的向量空间是为矩阵服务的 1 学科回顾 从科技实践中来的数学问题无非分为两类 一类是线性问题 一类是非线性问题 线性问题是研究最久 理论最完善的 而非线性问题则可以在一定基础上转化为线性问题求解 线性变换 数域 F 上线性空间V中的变

随机推荐

  • Spring Boot + Vue3前后端分离实战wiki知识库系统<十二>--用户管理&单点登录开发一...

    目标 在上一次https www cnblogs com webor2006 p 17533745 html我们已经完成了文档管理的功能模块开发 接下来则开启新模块的学习 用户登录 这块还是有不少知识点值得学习的 先来看一下整体的效果 关于
  • 我的微博 http://t.sina.com.cn/wangtianping

    我的微博 http t sina com cn wangtianping
  • OpenCV中SVM的参数具体设置

    CvSVMParams CvSVMParams svm type CvSVM C SVC kernel type CvSVM RBF degree 0 gamma 1 coef0 0 C 1 nu 0 p 0 class weights 0
  • 数据提取之正则

    1 什么是正则表达式 用事先定义好的一些特定字符 及这些特定字符的组合 组成一个规则字符串 这个规则字符串用来表达对字符串的一种过滤逻辑 2 正则表达式的常见语法 知识点 正则中的字符 正则中的预定义字符集 正则中的数量词 正则的语法很多
  • cpu如何区分指令和数据

    cpu如何区分指令和数据 我们知道指令是操作码 地址码组成 以二进制的形式存放在内存中 数据也是以二进制的形式存放在内存中 那么当cpu去访问内存的存储单元时 怎么区分现在读取的是指令还是数据呢 冯诺依曼计算机是根据指令周期的不同阶段 来区
  • 交叉编译bluez-5.3及解决No default controller available文件解决

    Bluez作为当前最成熟的开源蓝牙协议栈 在Linux的各大发行版中已经得到了广泛的应用 在桌面环境下 使用Bluez应该已经没有太大的问题 本文的主要目的是介绍在嵌入式平台上 搭建和配置Bluez的各个Profile运行所需做的工作 讨论
  • android学习笔记-------notification类显示通知

    notification类可以对程序设置推送信息 就是对状态栏的信息进行推送 首先需要一个NotificationManager来对通知进行管理 调用Context的getSystemService 方法获取到 创建一个Notificati
  • AES加解密local_policy.jar包下载

    AES加密 AES加密的五种模式 ECB Electronic Codebook Book 电码本模式 将明文分成若干段相同的小段 不足补齐 然后依次对每一小段进行加密后输出密文 ECB模式的弱点在于 相同的明文会产生相同的密文 容易遭到字
  • 【转载】C#之密封类(sealed class)

    C 之密封类 sealed class 密封类 sealed 修饰符可以应用于类 实例方法和属性 密封类不能被继承 密封方法会重写基类中的方法 但其本身不能在任何派生类中进一步重写 当应用于方法或属性时 sealed 修饰符必须始终与 ov
  • 单细胞测序的原理及应用

    单细胞测序技术自2009年问世 2013年被Nature Methods评为年度技术以来 越来越多地被应用在科研领域 2015年至今 10X Genomics Drop seq Micro well Split seq等技术的出现 彻底降低
  • LeetCode - 数独类题目总结

    什么是数独 数独是源自18世纪瑞士的一种数学游戏 是一种运用纸 笔进行演算的逻辑游戏 玩家需要根据9 9盘面上的已知数字 推理出所有剩余空格的数字 并满足每一行 每一列 每一个粗线宫 3 3 内的数字均含1 9 不重复 1 数独盘面是个九宫
  • PS工具的使用

    PS工具的使用 要求 1 会简单的抠图 2 会简单的修改PSD效果图 3 熟练的切图 4 与设计师 美工沟通 1 按拖拽工具 可以将其他的图片拖拽到另一个图片里面去 2 ctrl T可以改变图像的大小 变换过程中 按住shirt键 可以等比
  • JS逆向04之xhr断点webpack抠代码,图文并茂,导出加密函数。

    说明 本文只针对新手入门了解 高手绕道 只做技术性研究 请勿用于非法渠道 目标 https www gm99 com 前言 1 首先准备Chrome内核浏览器 我用的360极速版浏览器 2 打开目标网址 按F12或者网页空白处右键审查元素
  • 1 如何在计算机中表示一个词的意思?

    本章主要介绍了 如何在计算机中表示一个词的意思 从WordNet OneHot 到最重要的Word2Vec算法 参考 https www zhihu com column c 1507074362628374528 https zhuanl
  • Linux服务器-Linux服务器的类型

    Linux系统发行版本 当前市面上流行的Linux系统主要分为Readhat和Debian两大系列 而android底层直接用linux原版内核 2 一 Redhat系列 Redhat 主要是服务器型Linux 商用收费 RHEL是Red
  • CSS ul li 缩进控制,各版本兼容设置,文章第一行缩进两汉字

    CSS ul li 缩进控制 各版本兼容设置 将margin 和padding 都设置成0 ul list style type none margin 0px padding 0px text indent 2em 这句话的目的就是为了让
  • UncaughtExceptionHandler示例使用

    概述 UncaughtExceptionHandler是用来catch线程内的没有被捕获到的exception 可以在uncaughtException方法中对这些异常进行统一处理 用法 UncaughtExceptionHandler是一
  • windows切换窗口快捷键

    切换窗口实际看上去也不复杂 但是一旦打开的软件窗口多了 单纯的用眼搜索查找 鼠标点击效率还是有点低 IDE有快捷键 windows也有快捷键 感觉也可以总感觉汇总一个 这里就是关于windows切换窗口的几个快捷键 1 crtl tab 这
  • 西门子S120常见故障F7900及其排查方法

    西门子S120作为一款高性能伺服驱动器 其强大的功能和优越的控制性能得到了广大用户的一致好评和青睐 借助强大的调试软件可以方便完成S120的调试 但对于初步接触和使用该产品的工程师来说 调试过程中往往会遇到一些简单的问题 由于缺乏经验而导致
  • 线性代数学习笔记4——矩阵的逆

    在进行矩阵的运算的时候 我们会发现我们没有定义矩阵的除法 但是经常又需要做类似的操作 因而我们引入矩阵的逆的概念 用以填补这个空白 矩阵的逆 由于我们在定义矩阵运算的时候只定义了数乘和矩阵乘法 而没有除法运算 和逆元的产生一样 我们为了定义