舒尔补【Schur Complement】

文章目录

  • 一、定义
  • 二、推导
  • 三、一些性质
  • 四、解线性方程组
  • 五、参考资料


舒尔补(Schur complement)是线性代数中的一个重要概念,经常在矩阵理论、优化问题和数值计算中出现。舒尔补可以用来简化大型线性系统的求解和分析,特别是在稀疏矩阵和块矩阵的情况下。

一、定义

M M M为一个 ( p + q ) × ( p + q ) (p+q)\times(p+q) (p+q)×(p+q)的方阵:
M = [ A B C D ] \mathrm M=\begin{bmatrix}\mathrm A&\mathrm B\\\mathrm C&\mathrm D\end{bmatrix} M=[ACBD]
其中 A , B , C , D A,B,C,D A,B,C,D分别表示 p × p , p × q , q × p , q × q p\times p,p\times q,q\times p,q\times q p×p,p×q,q×p,q×q 维度的矩阵, p , q p,q p,q为两个非负整数。

如果 D D D是可逆的,则矩阵块的 Schur completement 被定义为:
M / D : = A − B D − 1 C . \mathrm{M/D}:=\mathrm{A}-\mathrm{BD}^{-1}\mathrm{C}. M/D:=ABD1C.
如果 A A A是可逆,则矩阵块的 Schur completement 被定义为:
M / A : = D − C A − 1 B . \mathrm{M}/\mathrm{A}:=\mathrm{D}-\mathrm{C}\mathrm{A}^{-1}\mathrm{B}. M/A:=DCA1B.
Tips:顺时针记忆.

二、推导

当对矩阵 M M M执行块高斯消元时,会产生舒尔补。为了消去块对角线以下的元素,需要将矩阵 M M M乘以一个块下三角矩阵,如下所示:
M = [ A B C D ] → [ A B C D ] [ I p 0 − D − 1 C I q ] = [ A − B D − 1 C B 0 D ] , \begin{aligned}&M=\begin{bmatrix}A&B\\C&D\end{bmatrix}\quad\to\quad\begin{bmatrix}A&B\\C&D\end{bmatrix}\begin{bmatrix}I_p&0\\-D^{-1}C&I_q\end{bmatrix}=\begin{bmatrix}A-BD^{-1}C&B\\0&D\end{bmatrix},\end{aligned} M=[ACBD][ACBD][IpD1C0Iq]=[ABD1C0BD],
进一步,我们还可以将 M M M分解为对角块矩阵:
M = [ A B C D ] = [ I p B D − 1 0 I q ] [ A − B D − 1 C 0 0 D ] [ I p 0 D − 1 C I q ] . \mathrm M=\begin{bmatrix}\mathrm A&\mathrm B\\\mathrm C&\mathrm D\end{bmatrix}=\begin{bmatrix}\mathrm I_\mathrm p&\mathrm B\mathrm D^{-1}\\0&\mathrm I_\mathrm q\end{bmatrix}\:\begin{bmatrix}\mathrm A-\mathrm B\mathrm D^{-1}\mathrm C&0\\0&\mathrm D\end{bmatrix}\:\begin{bmatrix}\mathrm I_\mathrm p&0\\\mathrm D^{-1}\mathrm C&\mathrm I_\mathrm q \end{bmatrix}. M=[ACBD]=[Ip0BD1Iq][ABD1C00D][IpD1C0Iq].

三、一些性质

下面假设 A A A可逆,则其舒尔补为 M / A . \mathrm{M}/\mathrm{A}. M/A.

  1. det ⁡ M = det ⁡ A det ⁡ M / A \det M= \det A\det \mathrm{M}/\mathrm{A} detM=detAdetM/A.
  2. rank ⁡ M = rank ⁡ A + rank ⁡ M / A \operatorname{rank} M= \operatorname{rank} A+\operatorname{rank} \mathrm{M}/\mathrm{A} rankM=rankA+rankM/A.
  3. 如果 M M M是Hermitian矩阵,则存在非奇异矩阵 T T T,使得:
    T M T ∗ = [ A 0 0 M / A ] \mathrm{TMT^*}= \begin{bmatrix}\mathrm A&\mathrm 0\\ \mathrm 0&\mathrm{M}/\mathrm{A} \end{bmatrix} TMT=[A00M/A]
    其中 T ∗ T^* T T T T的共轭转置,也就是说当 M M M为Hermitian矩阵时,存在一个合同变换将 M M M变换为块对角矩阵,而合同变换有一个性质是不会改变Hermitian矩阵的惯性指数(正、负、零特征值的个数).由这个性质可以自然的推导出下面的性质.
  4. 用来判断 M M M或者 M / A \mathrm{M}/\mathrm{A} M/A是否正定的性质:
    M ≻ 0 ⇔ A ≻ 0 , M / A ≻ 0 M\succ0 \Leftrightarrow A\succ0,\mathrm{M}/\mathrm{A}\succ0 M0A0,M/A0
    也就是说,M是否正定可以用A是否正定来判断,反之亦然.在优化领域中常用判断矩阵是否正定.

四、解线性方程组

舒尔补会在求解线性方程组时出现,例如我们要求解如下方程组 :
[ A B C D ] [ x y ] = [ u v ] . \left[\begin{array}{ll} A & B \\ C & D \end{array}\right]\left[\begin{array}{l} x \\ y \end{array}\right]=\left[\begin{array}{l} u \\ v \end{array}\right]. [ACBD][xy]=[uv].

假设子矩阵 A A A是可逆的,我们可以从方程中消除 x x x,如下所示:
x = A − 1 ( u − B y ) , x=A^{-1}(u-B y), x=A1(uBy),

将这个表达式代入第二个方程得到
( D − C A − 1 B ) y = v − C A − 1 u . \left(D-C A^{-1} B\right) y=v-C A^{-1} u . (DCA1B)y=vCA1u.

我们将其称为从原始方程中消除 x x x后得到的简化方程。在简化方程中出现的矩阵被称为 M M M中第一个块 A A A的舒尔补,我们记为:
S = def  D − C A − 1 B . S \stackrel{\text { def }}{=} D-C A^{-1} B. S= def DCA1B.

解简化后的方程,得到
y = S − 1 ( v − C A − 1 u ) . y=S^{-1}\left(v-C A^{-1} u\right) . y=S1(vCA1u).

将它代入第一个方程得到
x = ( A − 1 + A − 1 B S − 1 C A − 1 ) u − A − 1 B S − 1 v . x=\left(A^{-1}+A^{-1} B S^{-1} C A^{-1}\right) u-A^{-1} B S^{-1} v . x=(A1+A1BS1CA1)uA1BS1v.

我们可以将上述两个方程表示为:
[ x y ] = [ A − 1 + A − 1 B S − 1 C A − 1 − A − 1 B S − 1 − S − 1 C A − 1 S − 1 ] [ u v ] \left[\begin{array}{l} x \\ y \end{array}\right]=\left[\begin{array}{cc} A^{-1}+A^{-1} B S^{-1} C A^{-1} & -A^{-1} B S^{-1} \\ -S^{-1} C A^{-1} & S^{-1} \end{array}\right]\left[\begin{array}{l} u \\ v \end{array}\right] [xy]=[A1+A1BS1CA1S1CA1A1BS1S1][uv]

因此,分块矩阵的逆矩阵表达式为:
[ A B C D ] − 1 = [ A − 1 + A − 1 B S − 1 C A − 1 − A − 1 B S − 1 − S − 1 C A − 1 S − 1 ] = [ I p − A − 1 B I q ] [ A − 1 S − 1 ] [ I p − C A − 1 I q ] . \left[\begin{array}{ll} A & B \\ C & D \end{array}\right]^{-1}=\left[\begin{array}{cc} A^{-1}+A^{-1} B S^{-1} C A^{-1} & -A^{-1} B S^{-1} \\ -S^{-1} C A^{-1} & S^{-1} \end{array}\right]=\left[\begin{array}{cc} I_p & -A^{-1} B \\ & I_q \end{array}\right]\left[\begin{array}{cc} A^{-1} & \\ & S^{-1} \end{array}\right]\left[\begin{array}{ccc} I_p & \\ -C A^{-1} & I_q \end{array}\right] . [ACBD]1=[A1+A1BS1CA1S1CA1A1BS1S1]=[IpA1BIq][A1S1][IpCA1Iq].

我们可以看到,利用舒尔补,可以在解方程组时降低方程的维数.

五、参考资料

  1. https://en.wikipedia.org/wiki/Schur_complement

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端基础学习html(1)

1.标题标签.h1,h2...h6 2.段落标签p 换行标签br 3.加粗strong(b) /倾斜em(i) /删除 del(s) /下划线ins(u) 4.盒子:div //一行一个 span//一行多个 5.img :src alt title width height border 图片src引用:相对路径 上级/同级/中级 绝对路径&#xff…

触动精灵纯本地离线文字识别插件

目的 触动精灵是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。但触动精灵的图色功能比较单一,无法识别屏幕上的图像,根据图像的变化自动执行相应的操作。本篇文章主要讲解…

GitHacker:Git源码泄漏检测工具可恢复整个Git Repo

GitHacker是一个多线程工具,用于检测站点是否存在git源码泄漏,并能够将网站源代码下载到本地。值得一提的是,这个工具会将整个git repo恢复到本地,而不是像[githack]那样,只是简单的恢复到最新版本。如此一来&#xff…

【Java基础】三大特性——多态

多态的前提条件:继承可以简单理解为:把子类看成父类类型(反之是错误的) 优缺点 弊端: 只能使用父类(父接口)中定义的功能好处: 函数的参数定义为父类(父接口)类型,可以…

使用idea编辑器回退git已经push的代码

直接上结果 选择想要回退的那次/多次提交历史, 右击, 选中 revert commit git自动产生一个Revert记录,然后我们会看到git自动将我第三次错误提交代码回退了,这个其实就相当于git帮我们手动回退了代码。 后续,只需要我们将本次改动push到远…

Vue 介绍

【1】前端发展史 前端的发展史可简述为: 从最初的静态页面编写,依赖后端模板渲染逐步演化为通过JavaScript(特别是Ajax技术)实现前后端分离,使得前端能够独立地加载数据和渲染页面随后,Angular、React、Vu…

《鸿蒙:开启智能新时代的璀璨之光》

在科技的浩瀚宇宙中,华为鸿蒙犹如一颗闪耀的明星,迸发出璀璨的光芒。它是智慧与创新的完美融合,以其卓越的性能和独特的设计,颠覆着我们对科技的认知。 鸿蒙系统,就像一幅绚丽多彩的奇幻画卷,在我们眼前徐徐…

VUE 监视数据原理

1、如何监测对象中的数据? 通过setter实现监视,且要在new vue时就传入监测的数据 (1)对象中后加的属性,vue默认不做响应式处理 (2)如需给后添加的属性做响应式,请使用如下API&#x…

open 函数到底做了什么

使用设备之前我们通常都需要调用 open 函数,这个函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open 函数可以不做具体的工作,你在应用层通过系统调用 open 打开设备…

Docker部署PostgreSQL

1. 指令: # 拉取镜像 docker pull postgres# 创建容器 docker run --name postgres -e POSTGRES_PASSWORDpostgres -p 5432:5432 -v /mydata/docker/postgres/data:/var/lib/postgresql/data -d postgres# 或: docker run \--name postgres \-e POSTGRE…

2024年电化学、可再生能源与绿色发展国际会议(ICERGD2024)

2024年电化学、可再生能源与绿色发展国际会议(ICERGD2024) 会议简介 2024国际电化学、可再生能源与绿色发展大会(ICERGD2024)将在青岛隆重举行。本次会议聚焦电化学、可再生能源和绿色发展领域的最新研究成果和技术趋势,旨在促进相关领域…

OpenNJet:下一代云原生应用引擎

OpenNJet:下一代云原生应用引擎 前言一、技术架构二、新增特性1. 透明流量劫持2. 熔断机制3. 遥测与故障注入 三、Ubuntu 发行版安装 OpentNJet1. 添加gpg 文件2. 添加APT 源3. 安装及启动4. 验证 总结 前言 OpenNJet,是一款基于强大的 NGINX 技术栈构建…

typescript类型基础

typescript类型基础 枚举类型 enum Season {Spring,Summer,Fall,Winter }数值型枚举 enum Direction {Up,Down,Left,Right } const direction:Direction Direction.up每个数值型枚举成员都表示一个具体的数字,如果在定义一个枚举的时候没有设置枚举成员的值&…

Excel利用数据透视表将二维数据转换为一维数据(便于后面的可视化分析)

一维数据:属性值都不可合并,属性值一般在第一列或第一行。 二维数据:行属性或列属性是可以继续合并的,如下数据中行属性可以合并为【月份】 下面利用数据透视表将二维数据转换为一维数据: 1、在原来的数据上插入数据透…

MySQL字符编码中的各个字符集的区别

MySQL8.0及以后版本 默认的字符集是utf8mb4,默认的排序规则是utf8mb4_0900_ai_ci。此排序规则不区分大小写,所以在项目查询功能中要格外注意。另外此排序规则不兼容MySQL8.0之前的数据,当做关联查询时会报错。 MySQL8.0之前版本 默认的字符…

MySQL 社区经理:MySQL 8.4 InnoDB 参数默认值为什么要这么改?

MySQL 8.4 LTS 版本,我们一共修改了 20 个 InnoDB 变量的默认值。 作者:Frederic Descamps,EMEA 和亚太地区的 MySQL 社区经理。于 2016 年 5 月加入 MySQL 社区团队。担任开源和 MySQL 顾问已超过 15 年。最喜欢的主题是高可用和高性能。 本…

解决一个朋友的nbcio-boot的mysql数据库问题

1、原先安装mysql5.7数据库,导入我的项目里的带数据有报错信息 原因不明 2、只能建议用docker进行msyql5.7的安装 如下,可以修改成自己需要的信息 docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_R…

selenium简介、使用selenium爬取百度案例、selenium窗口设置、

1 selenium简介 2 使用selenium爬取百度案例 3 selenium窗口设置 1 selenium简介 【一】web自动化 随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。 现在你可以看到很多网站的数据可能都是通过接口的形式传输的&…

python绘图(pandas)

matplotlib绘图 import pandas as pd abs_path rF:\Python\learn\python附件\pythonCsv\data.csv df pd.read_csv(abs_path, encodinggbk) # apply根据多列生成新的一个列的操作,用apply df[new_score] df.apply(lambda x : x.数学 x.语文, axis1)# 最后几行 …

c#word文档:1.创建空白Word文档及保存/2.添加页内容...

---创建空白Word文档 --- (1)创建一个名为OfficeOperator的类库项目。引用操作Word的.NET类库 (2)定义用于操作Word的类WordOperator1。添加引用Microsoft.Office.Interop.Word命名空间。 (3)为WordOper…