舒尔补【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…

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

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

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

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

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

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

Vue 介绍

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

open 函数到底做了什么

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

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 社区经理: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…

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…

Unity | Shader基础知识(第十三集:编写内置着色器阶段总结和表面着色器的补充介绍)

目录 前言 一、表面着色器的补充介绍 二、案例viewDir详解 1.viewDir是什么 2.viewDir的作用 3.使用viewDir写shader 前言 注意观察的小伙伴会发现,这组教程前半部分我们在编写着色器的时候,用的是顶点着色器和片元着色器的组合。 SubShader{CGPRO…

个股期权是什么,个股期权使用方法?

今天期权懂带你了解个股期权是什么,个股期权使用方法?个股期权作为金融市场的重要工具之一,是指投资者在约定时间内有权而非义务以约定价格买卖特定数量的个股的金融衍生品。 个股期权是什么? 个股期权合约是一种由交易所统一设定的标准化合…

git-新增业务代码分支

需求 使用git作为项目管理工具管理项目,我需要有两个分支,一个分支是日常的主分支,会频繁的推送和修改代码并推送另外一个是新的业务代码分支,是一个长期开发的功能,同时这个业务分支需要频繁的拉取主分支的代码&#…

Python_GUI框架 Pyside6的常用部件介绍

PySide6是一个非常完善的商用级别的GUI框架,涉及的知识点相对比较多,今天我先在这里介绍一下我们在实际应用中最常见的几种部件及其功能: 1. QMainWindow QMainWindow 提供了一个主应用程序窗口的框架,通常包含一个菜单栏、工具…

pytest教程-37-钩子函数-pytest_collection_finish

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_collection_start钩子函数的使用方法,本小节我们讲解一下pytest_collection_finish钩子函数的使用方法。 pytest_collection_finish(session) 是一个 pytest 钩子函数&…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库(不支持SQL标准语法)。 …