首页 > 其他分享 >LU 分解及 Matrix determinant lemma

LU 分解及 Matrix determinant lemma

时间:2024-10-18 09:48:14浏览次数:3  
标签:determinant mathbf 矩阵 times lemma LU pmatrix 行列式

LU 分解

对于一个矩阵 \(\mathbf A\),求出 \(\mathbf A=\mathbf {LU}\),其中 \(\mathbf L\) 是下三角矩阵,\(\mathbf U\) 是上三角矩阵的过程称为 LU 分解。

一般矩阵的 LU 分解可以消成行列式的同时记录逆矩阵,复杂度同高斯消元。

一个比较好的性质是 \(|\mathbf A|=|\mathbf L||\mathbf U|\),如果能利用 \(\mathbf A\) 的特殊性质快速分解出来,因为 \(|\mathbf L|,|\mathbf U|\) 就是对角线乘积,所以 \(|\mathbf A|\) 可以快速计算。

比如 \(\mathbf A_{i,j}=\gcd(i,j)\)。

对其施以欧拉反演,可以得到 \(\mathbf A_{i,j}=\sum\limits_{d\mid \gcd(i,j)}\varphi(d)\)。

则可以拆成两个矩阵:\(\mathbf L_{i,j}=[j\mid i]\varphi(j),\mathbf U_{i,j}=[i\mid j]\),则容易验证 \(\mathbf A=\mathbf L\mathbf U\),且 \(\mathbf L,\mathbf U\) 满足三角矩阵条件。因此 \(|\mathbf A|=\prod\limits_{i=1}^{n}\varphi(i)\)。

进一步的,如果 \(\mathbf A_{i,j}=f(\gcd(i,j))\),则对于满足 \(f_i=\sum\limits_{j\mid i}g_j\),即 \(g\) 为 \(f\) 的高维差分,\(|\mathbf A|=\prod\limits_{i=1}^{n}g(i)\)。

一个可能有用的论文

Matrix determinant lemma

记 \(\mathbf{U}\) 为 \(n\times m\) 的矩阵,\(\mathbf{V}\) 为 \(m\times n\) 的矩阵,\(\mathbf{I}_x\) 为 \(x\) 阶单位矩阵。

主要定理是:

\[|\mathbf{I}_n+\mathbf{U}\mathbf{V}|=|\mathbf{I}_m+\mathbf{VU}| \]

证明可以考虑构造矩阵相乘:

\[\begin{pmatrix}\mathbf{I}_n & \\ \mathbf{V} & \mathbf{I_m}\end{pmatrix} \begin{pmatrix}\mathbf{I}_n+\mathbf{UV} & \mathbf{U}\\ & \mathbf{I_m}\end{pmatrix} \begin{pmatrix}\mathbf{I}_n & \\ \mathbf{-V} & \mathbf{I_m}\end{pmatrix} = \begin{pmatrix}\mathbf{I}_n & \mathbf{U}\\ & \mathbf{VU}+\mathbf{I_m}\end{pmatrix} \]

对两边取行列式即可。

将其扩展到一般的情况,令 \(A\) 为 \(n\times n\) 矩阵,则有

\[|\mathbf{A}+\mathbf{UV}|=|\mathbf A||\mathbf{I}_n+\mathbf{UVA}^{-1}|=|\mathbf{A}||\mathbf{I}_n+\mathbf{V}\mathbf{A}^{-1}\mathbf{U}| \]

假设我们要求的是一个形如 \(|\mathbf{D}-\mathbf{G}|\) 的行列式,且 \(\mathbf{G}=\mathbf{UV}\),\(\mathbf D\) 易求行列式和逆,则 MDL 的最大作用是将 \(\mathbf{G}\) 原本隐藏在这个乘法里的性质显露出来。一个简单的应用例子:如果 \(m\) 远小于 \(n\),则现在只需要做一次 \(m\times n\times m\) 的矩阵乘法并对一个阶为 \(m\) 的矩阵求行列式,而不是原来的 \(n\times m\times n\) 的矩阵乘法以及阶为 \(n\) 的矩阵求行列式。

其相比于 LU 分解来说不要求分解出来的一定是两个对角矩阵,适用性更加广泛,但是性质要弱一点。

PA 2022 Drzewa rozpinające

使用矩阵树定理,我们要求的值即为 \(|\mathbf{D}-\mathbf{G}|\),其中 \(\mathbf D\) 为度数矩阵,\(\mathbf G\) 为邻接矩阵。

\(\mathbf D\) 容易计算,并且由于其为对角矩阵,逆和行列式都容易计算。考虑仍然对 \(\mathbf G\) 施以欧拉反演,可以构造出两个 \(n\times m\) 的矩阵 \(\mathbf U_{i,j}=[j\mid a_i]\varphi(j),\mathbf V_{i,j}=[i\mid a_j]\),满足 \(\mathbf G=\mathbf U \mathbf V\)。

使用 MDL,可以得到我们要求的就是 \(|\mathbf D||\mathbf I_n+\mathbf V\mathbf A^{-1}\mathbf U|\)。

你说得对,但是这看上去还是要求阶为 \(5000\) 矩阵的行列式啊?

考虑矩阵 \(\mathbf V\mathbf A^{-1}\mathbf U\) 的实际意义,会发现只有 \(\operatorname{lcm}(i,j)\leq m\) 的位置有值,因此这个矩阵非常稀疏,且值主要集中在上方的一个类似于反比例函数的区域,所以从下到上消元速度非常快。时间复杂度可以(?)看作 \(O(n^2)\) 的。

submission

AGC060F Spanning Trees of Interval Graph

使用矩阵树定理,直接求行列式需要对一个很大的矩阵消元,爆了。

发现可以使用点减边容斥计算这个 \(\mathbf G\),这样的话使用 MDL 之后就只需要对一个阶 \(2n-1\) 的矩阵求行列式,于是就对完了。

\(\mathbf D,\mathbf V\mathbf A^{-1}\mathbf U\) 均容易根据实际意义二维前缀和求得,时间复杂度 \(O(n^3)\)。

submission

标签:determinant,mathbf,矩阵,times,lemma,LU,pmatrix,行列式
From: https://www.cnblogs.com/275307894a/p/18473629

相关文章

  • vue3.0 使用Element Plus修改el-table表格的横纵滚动条颜色、宽高等样式
    在Vue3.0和ElementPlus中修改el-table的滚动条样式,可能遇到了样式不生效的问题。这通常是因为ElementPlus使用了自定义的滚动条组件el-scrollbar,而不是浏览器默认的滚动条。因此,需要针对el-scrollbar组件进行样式定制。<stylescoped>/*滚动条整体部分*/......
  • luckfox1106初次使用
    luckfox1106初次使用下载rk驱动https://files.luckfox.com/wiki/Luckfox-Pico/Software/DriverAssitant_v5.12.zip安装驱动SD卡烧录工具https://files.luckfox.com/wiki/Luckfox-Pico/Software/SocToolKit_v1.98_20240705_01_win.zip右键以管理员方式运行......
  • 【题解】Solution Set - NOIP2024集训Day56 哈希杂题
    【题解】SolutionSet-NOIP2024集训Day56哈希杂题https://www.becoder.com.cn/contest/5640「CF568C」NewLanguage做过的2-sat。「NOI2024」集合做过。做法见提交记录。「CSP-S2022」星战简要题意:给定有向图。修改使一条边失效/恢复;使一个点的所有入边......
  • luogu P3842 [TJOI2007] 线段
    link好题,考虑如何设定状态。设\(dp_{i,0/1}\)表示到了第\(i\)行走完后停在这一行的最左侧/最右侧。设定\(l_i\)表示这一行该线段的最左侧,\(r_i\)表示这一行的最右侧。思考如何转移。1.当我处在这一行的最左侧时,我需要从这一行的右端点转移过来,所以你的贡献要加上这个线段的长......
  • PyTorchStepByStep - Chapter 5: Convolutions
     single=np.array([[[[5,0,8,7,8,1],[1,9,5,0,7,7],[6,0,2,4,6,6],[9,7,6,6,8,4],[8,3,8,5,1,3],[7,2,7,0,1,0]]]])single.shape#(1,1,6,6)identity=np.array([[[[0,0,......
  • [转]Learn Power Platform Power Apps Dataverse Write a plug-in
    Learn PowerPlatform PowerApps Dataverse Writeaplug-inInthisarticleIPlugininterfacePluginBaseabstractclassServicesyoucanuseinyourcodePuttingitalltogetherShow2moreYoucancreate plug-ins byusingoneofthefollowingmetho......
  • 第十一题luck_guy
    ctrncpyctrncpy属于c语言标准库里的一个函数,定义在string.h头文件中,作用就是将一个字符串的一部分拷贝到另一个字符串里memsetmemset也是属于c语言标准库里的一个函数,定义在string.h的头文件中,作用是将一块内存中所有字节都设定为特定的值intmain(){chararr1[20]="abc......
  • CF1876G Clubstep
    原题链接CF1876GClubstep。DX上课讲的,有趣啊。考虑暴力咋做。首先肯定不会选择一个\(>r\)的\(p\)来做操作,因为不如在\(r\)处做操作。那么一开始我们肯定要在\(r\)处做\(\max(0,\lceil\dfrac{x-a_r}{2}\rceil)\)次操作,然后接着往前做。但是这样每次序列的值会变,发......
  • 【LaTeX】13表格梳理:基本表格、跨行(multirow)和跨列(multicolumn)表格
    【LaTeX】表格梳理:基本表格、跨行(multirow)和跨列(multicolumn)表格写在最前面一、基本表格1.表头标题2.常用选项[htbp]3.其他二、表格美化1.跨列(multicolumn)2.跨行(multirow)三、全部latex代码四、小结......
  • 【亲测】Adobe Illustrator(AI2024)软件功能与系统要求
    目录一、发展历史1.1早期开发1.2成长与竞争1.3行业标准化二、功能介绍2.1精确的绘图工具2.2高级文字处理2.3丰富的颜色和效果三、系统要求3.1操作系统3.2硬件要求一、发展历史1.1早期开发AdobeIllustrator最初是在1986年为苹果公司的麦金塔电脑设计......