ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

凸优化有关的数值线性代数知识四:分块消元与Schur补

2020-12-21 10:01:20  阅读:454  来源: 互联网

标签:Schur 求解 浮点运算 分块 矩阵 计算 消元


四、分块消元与Schur补

  1. 消除部分变量
  2. 逆矩阵引理

消除部分变量

考虑Ax=b,将变量x \in R^n分为凉快或两个子向量

x=\begin{bmatrix} x_1 \\x_2\end{bmatrix},x_1 \in R^{n_1},x_2 \in R^{n_2}

对线性方程组Ax=b做同样的划分,

\begin{bmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{bmatrix} \begin{bmatrix} x_1 \\x_2\end{bmatrix}=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

其中A_{11}\in R^{n_1\times n_1},A_{22}\in R^{n_2 \times n_2}

假设A_{11}可逆,则按以下方式消去x_1x_1=A_{11}^{-1}(b_1-A_{12}x_2),再将其代入第二个方程

得到

A_{21}x_1+A_{22}x_2=b_2 \\ \Leftrightarrow A_{21}A_{11}^{-1}(b_1-A_{12}x_2)+A_{22}x_2=b_2 \\ \Leftrightarrow (A_{22}-A_{21}A_{11}^{-1}A_{12})x_2=b_2-A_{21}A_{11}^{-1}b_1

其中S=A_{22}-A_{21}A_{11}^{-1}A_{12}是矩阵A的第一个分块矩阵A_{11}的Schur补。当且仅当A非奇异时,Schur补S是非奇异矩阵。

通过分块消元求解线性方程组

给定非奇异线性方程组Ax=b,其中A_{11}非奇异:

  1. 计算A_{11}^{-1}A_{12}A_{11}^{-1}b_1
  2. 计算S=A_{22}-A_{21}A_{11}^{-1}A_{12}\hat{b}=b_2-A_{21}A_{11}^{-1}b_1
  3. 求解Sx_2=\hat{b}确定x_2
  4. 求解A_{11}x_1=b_1-A_{12}x_2确定x_1

分块消元法的复杂度分析

f表示对A_{11}进行因式分解的计算成本,s表示A_{11}完成相应的求解步骤所需要的计算成本。

  1. 计算A_{11}^{-1}A_{12}A_{11}^{-1}b_1,对A_{11}进行因式分解,再加上求解两个乘法需要的n_2+1次浮点运算,共需要f+(n_2+1)s
  2. 计算S=A_{22}-A_{21}A_{11}^{-1}A_{12}\hat{b}=b_2-A_{21}A_{11}^{-1}b_1,计算A_{21}A_{11}^{-1}A_{12}需要2n_2^2n_1,再加上n_2 \times n_2的矩阵减法,成本为n_2^2,计算\hat{b}=b_2-A_{21}A_{11}^{-1}b_1的成本不如计算S的成本阶次高,因此只需考虑计算S的成本。
  3. 求解Sx_2=\hat{b}确定x_2,对该方程求解需要分解S,再求解,成本为(2/3)n_2^3
  4. 求解A_{11}x_1=b_1-A_{12}x_2确定x_1,计算b_1-A_{12}x_2需要2n_1n_2+n_1次浮点运算,求解方程组可以利用1中的A_{11}的分解结果,因而秩序执行求解步骤,成本为s。

故总成本:f+n_2s+2n_2^2n_1+(2/3)n_2^3

无结构矩阵消元:此时A_{11}的分解为LU分解,于是f=(2/3)n_1^3s=2n_1^2,代入上式得到(2/3)(n_1+n_2)^3

对角矩阵消元:f=0,s=n_1,代入f+n_2s+2n_2^2n_1+(2/3)n_2^3得到2n_2^2n_1+(2/3)n_2^3

逆矩阵引理

考虑线性方程组(A+BC)x=b,A \in R^{n \times n},B \in R^{n \times p},C \in R^{p \times n},引入新的变量y=Cx,写成:

\begin{bmatrix} A &B \\ C&-I \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=\begin{bmatrix} b\\0 \end{bmatrix}

应用块消元,从第一个方程中得到x=A^{-1}(b-By),再将x代入第二个方程得到

Cx-y=0\\ CA^{-1}(b-By)=y \\ CA^{-1}b=(I+CA^{-1}B)y

\Leftrightarrow y=(I+CA^{-1}B)^{-1}CA^{-1}b

\Leftrightarrow x=A^{-1}(b-B(I+CA^{-1}B)^{-1}CA^{-1}b)\\ \Leftrightarrow x=(A^{-1}-A^{-1}B(I+CA^{-1}B)CA^{-1})b

因为b是任意向量,有以下结论

(A+BC)^{-1}=A^{-1}-A^{-1}B(I+CA^{-1}B)CA^{-1}

这就是逆矩阵定理。

求解(A+BC)x=b的计算成本:

如果A是对角元素不等于零的对角矩阵,B,C 是稠密矩阵,

(1)计算D=A+BC需要2pn^2次浮点运算,再对D进行LU分解,需要(2/3)n^3次浮点运算,总成本2pn^2+(2/3)n^3

(2)用逆矩阵引理求解,即先计算y=(I+CA^{-1}B)^{-1}CA^{-1}b,计算z=A^{-1}b需要n次浮点运算,计算E=I+CA^{-1}B需要2p^2n次浮点运算,再求y,需要(2/3)p^3次浮点运算,再计算x=A^{-1}(b-By)=A^{-1}b-A^{-1}By=a-A^{-1}By,再求解x需要2pn次浮点运算。

 

来源:https://blog.csdn.net/wangchy29/article/details/87917717

标签:Schur,求解,浮点运算,分块,矩阵,计算,消元
来源: https://blog.csdn.net/hyl1181/article/details/111305821

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有