舒尔补【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.mfbz.cn/a/595177.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringMVC 】什么是SpringMVC(二)?如何整合ssm框架以及使用mybatisPlus?

文章目录 SpringMVC第三章1、ssm整合1、基本步骤1-3步4-5步6步7步8-12步13步14-15步2、添加数据3、删除数据4、配置事务5、修改数据2、pageHelpe分页1、基本步骤第四章1、mybatisPlus1、基本步骤1-45-7892、基本方法的使用查询2、新ssm项目1、基本步骤1-5678-910-111213-15Spri…

✌粤嵌—2024/4/29—轮转数组

代码实现&#xff1a; // 逆置数组 void nizhi_array(int *nums, int l, int r) { // 左闭右闭if (l > r) {return;}int i l, j r;while (i < j) {int temp nums[i];nums[i] nums[j];nums[j] temp;i;j--;} }void rotate(int *nums, int numsSize, int k) {if (k >…

CSAPP | Chapter 1 | 计算机系统漫游

CSAPP | Chapter 1 | 计算机系统漫游 计算机系统由系统软件与硬件组成。 对于一个简单的 C 程序 hello.c 来说&#xff0c;即便它非常简单&#xff0c;但是为了让它运行&#xff0c;系统的每个主要组成部分都需要协调工作。 #include <stdio.h>int main() {printf(&quo…

AI适老化!10秒一张的AI姓氏头像,居然要卖9块9?中老年用户都说好!

看短视频的你&#xff0c;一定会刷到过这样的直播间&#xff1a; 现在大家明白了&#xff0c;这是一个做姓氏图像的直播间。我刚开始刷到的时候也觉得这种头像好看&#xff0c;高大上&#xff0c;也想做一个这样的图像&#xff0c;来当自己的微信头像。 做这样的图像需要排队刷…

迅饶科技 X2Modbus 网关 AddUser 任意用户添加漏洞复现

0x01 产品简介 X2Modbus是上海迅饶自动化科技有限公司Q开发的一款功能很强大的协议转换网关, 这里的X代表各家不同的通信协议, 2是T0的谐音表示转换, Modbus就是最终支持的标准协议是Modbus协议。用户可以根据现场设备的通信协议进行配置,转成标准的Modbus协议。在PC端仿真…

代码随想录算法训练营DAY43|C++动态规划Part5|1049.最后一块石头的重量II、494.目标和、474.一和零

文章目录 1049.最后一块石头的重量II思路CPP代码 ⭐️494.目标和回溯算法抽象成01背包问题CPP代码本题总结 474.一和零思路CPP代码 1049.最后一块石头的重量II 力扣题目链接 文章链接&#xff1a;1049.最后一块石头的重量II 视频链接&#xff1a;这个背包最多能装多少&#xff…

高中数学-三角函数之常见题型总结

相关公式 新教材&#xff0c;取消了和差化积与积化和差的三角函数题目 例题1 解析 根据条件tanθ -2&#xff0c;我们应该就要想到&#xff0c;把待求式的角向θ靠拢 所以要想到如何降角&#xff0c;将2θ化成θ&#xff0c;那么&#xff0c;想到的公式就是&#xff1a;正弦…

【C++第三阶段】Set Map容器 员工分组案例

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 Set容器构造和赋值大小和交换插入和删除一次性迭代器&#xff08;可能迅速失效的迭代器&#xff09;长久保留的迭代器如何判断迭代器是否一次性 查找和统计set和multiset的区别pari对…

【notes2】并发,IO,内存

文章目录 1.线程/协程/异步&#xff1a;并发对应硬件资源是cpu&#xff0c;线程是操作系统如何利用cpu资源的一种抽象2.并发&#xff1a;cpu&#xff0c;线程2.1 可见性&#xff1a;volatile2.2 原子性&#xff08;读写原子&#xff09;&#xff1a;AtomicInteger/synchronized…

239 基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF(粒子滤波)三种算法的估计结果比较

基于matlab的EKF(扩展卡尔曼滤波)_UKF(无迹卡尔曼滤波)_PF&#xff08;粒子滤波&#xff09;三种算法的估计结果比较&#xff0c;输出估计误差&#xff0c;并单独对粒子滤波进行估计及其置信区间可视化。程序已调通&#xff0c;可直接运行。 239 EKF(扩展卡尔曼滤波) - 小红书 …

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

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

Java转Kotlin

Kotlin 是一种静态编程语言 2011JetBrains开始开发Kotlin&#xff0c;用于多平台应用&#xff08;能脱离虚拟机&#xff0c;直接编译成可以在win,mac,linux运行的二进制代码&#xff09; 2017获得谷歌官方支持 语法简洁&#xff08;减少了大量的样板代码&#xff0c;语法糖&…

【Python深度学习(第二版)(2)】深度学习之前:机器学习简史

文章目录 一. 深度学习的起源1. 概率建模--机器学习分类器2. 早期神经网络--反向传播算法的转折3. 核方法 -- 忽略神经网络4. 决策树、随机森林和梯度提升机5. 神经网络替代svm与决策树 二. 深度学习与机器学习有何不同 可以这样说&#xff0c;当前工业界所使用的大部分机器学习…

服务器端口怎么查,服务器端口查看方法详解

服务器端口是网络通信的关键组件&#xff0c;对于网络管理员和系统管理员来说&#xff0c;了解和掌握如何查看服务器端口是非常重要的。接下来介绍两种常用的方法来查看服务器端口。 方法一&#xff1a;使用命令提示符&#xff08;CMD&#xff09; 1. 首先&#xff0c;点击电脑…

JavaScript百炼成仙自学笔记——12

函数七重关之五&#xff08;自执行函数&#xff09; 什么时候用它&#xff1f; 很多时候&#xff0c;我们只想执行一个函数&#xff0c;却无所谓这个函数叫什么名字。那么这种情况下就可以考虑使用自执行函数。 {function(){console.log(123);} }(); 这就是一个简单的自执行的…

视频剪辑:视频文件元数据修改工具,批量操作提升效率和准确性

在视频剪辑和后期处理的过程中&#xff0c;除了对视频本身的编辑和修改&#xff0c;元数据的管理和修改同样重要。元数据&#xff0c;如标题、艺术家、专辑封面等&#xff0c;不仅提供了视频文件的基本信息&#xff0c;还有助于更好地组织、搜索和共享视频内容。而针对视频文件…

dumpsys meminfo 流程中细节

源码基于&#xff1a;Android U 参考&#xff1a; dumpsys meminfo 详解(R) dumpsys meminfo 详解(U) 1. 命令入口 MemBinder frameworks/base/services/core/java/com/android/server/am/AMS.javastatic class MemBinder extends Binder {ActivityManagerService mActivity…

原型模式和建造者模式

1、原型模式 1.1 概念 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 1.2 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。 具体原型类&#xff1a;实现抽…

链表经典面试题01

目录 引言 面试题01:返回倒数第k个节点 题目描述: 思路分析: 代码展示: 面试题02:链表的回文结构 题目描述: 描述 思路分析: 代码展示: 面试题03:相交链表 题目描述: 思路分析: 代码展示: 小结: 引言 这次的题均来自力扣和牛客有关链表的经典面试题,代码只会展示…

二.Django--创建多个APP路由映射

目录 1-创建项目 2-创建多个APP 3-注册APP 4-创建"前端页面"并做路由映射 各个APP里面的views.py写视图函数等等 1-创建项目 django-admin startproject 项目名 django-admin startproject my_project 2-创建多个APP python manage.py startapp app名 pyth…
最新文章