第三章,矩阵,07-用初等变换求逆矩阵、矩阵的LU分解


玩转线性代数(19)初等矩阵与初等变换的相关应用的笔记,例见原文

一个基本的方法

已知: A r ∼ F A^r \sim F ArF,求可逆阵 P P P,使 P A = F PA = F PA=F ( F F F A A A的行最简形)
方法:利用初等行变换,将矩阵A左边所乘初等矩阵相乘,从而得到可逆矩阵P.
步骤:
(1)对矩阵A进行l次初等行变换至行最简形:
A r ∼ F A^r \sim F ArF,即 P l . . . P 2 P 1 A r = F P_l...P_2P_1A^r = F Pl...P2P1Ar=F
(2)求 P = P l . . . P 2 P 1 P=P_l...P_2P_1 P=Pl...P2P1
( A , E ) (A, E) (A,E)看成分块矩阵,后面的E为记录器,对分块矩阵 ( A , E ) (A, E) (A,E)进行初等行变换:
( A , E ) → P l . . . P 2 P 1 ( A , E ) → ( P l . . . P 2 P 1 A , P l . . . P 2 P 1 ) → ( P A , P ) → ( F , P ) (A, E) \rightarrow P_l...P_2P_1(A, E) \rightarrow (P_l...P_2P_1A, P_l...P_2P_1) \rightarrow (PA, P) \rightarrow (F, P) (A,E)Pl...P2P1(A,E)(Pl...P2P1A,Pl...P2P1)(PA,P)(F,P)
即当A化为F后E化为P。
那么若A可逆, A − 1 A = E A^{-1}A = E A1A=E,即将A化为单位阵,右边的E就化为 A − 1 A^{-1} A1

A − 1 B A^{-1}B A1B

即将上面的“记录器”E换为B,将A化为E的一系列行变换操作(等效于左乘 A − 1 A^{-1} A1)全部作用到B上
A − 1 ( A , B ) = ( E , A − 1 B ) A^{-1}(A, B)=(E,A^{-1}B) A1(A,B)=(E,A1B)

LU分解

假设A是m*n矩阵并且可以化简为行阶梯形而不必经过行对换或数乘,则A可以分解成如下的形式:
A = ( 1 0 0 0 ∗ 1 0 0 ∗ ∗ 1 0 ∗ ∗ ∗ 1 ) ( ■ ∗ ∗ ∗ ∗ 0 ■ ∗ ∗ ∗ 0 0 0 ■ ∗ 0 0 0 0 0 ) = L U A= \begin{pmatrix} 1 & 0 & 0 & 0 \\* & 1 & 0 & 0 \\* & * & 1 & 0\\* & * & * & 1 \end{pmatrix} \begin{pmatrix} \blacksquare & * & * & * & * \\0 & \blacksquare & * & * & * \\0 & 0 & 0 & \blacksquare & *\\0 & 0 & 0 & 0 & 0 \end{pmatrix} =LU A= 1010010001 000000000 =LU
L是单位下三角矩阵,主对角线元素全是1,它其实是一系列 E ( i j ( k ) ) E(ij(k)) E(ij(k))类型初等矩阵的乘积,L可逆;U是A的一个等价的行阶梯形矩阵。

例1,求矩阵A的LU分解:


A = ( 2 4 2 1 5 2 4 − 1 9 ) A= \begin{pmatrix} 2 & 4 & 2 \\ 1 & 5 & 2 \\ 4 & -1 & 9 \end{pmatrix} A= 214451229

( A , E ) = ( 2 4 2 1 0 0 1 5 2 0 1 0 4 − 1 9 0 0 1 ) ∼ ( 2 4 2 1 0 0 0 3 1 − 1 2 1 0 0 − 9 5 − 2 0 1 ) ∼ ( 2 4 2 1 0 0 0 3 1 − 1 2 1 0 0 0 8 − 7 2 3 1 ) = ( U , p ) (A,E)=\begin{pmatrix} 2 & 4 & 2 & 1 & 0 & 0 \\ 1 & 5 & 2 & 0 & 1 & 0 \\ 4 & -1 & 9 & 0 & 0 & 1 \end{pmatrix} \sim \begin{pmatrix} 2 & 4 & 2 & 1 & 0 & 0 \\ 0 & 3 & 1 & -\frac{1}{2} & 1 & 0 \\ 0 & -9 & 5 & -2 & 0 & 1 \end{pmatrix}\sim \begin{pmatrix} 2 & 4 & 2 & 1 & 0 & 0 \\ 0 & 3 & 1 & -\frac{1}{2} & 1 & 0 \\ 0 & 0 & 8 & -\frac{7}{2} & 3 & 1 \end{pmatrix} =(U, p) (A,E)= 214451229100010001 2004392151212010001 20043021812127013001 =(U,p)
U = P A ⇒ A = P − 1 U U=PA \Rightarrow A=P^{-1}U U=PAA=P1U,有
A = ( 2 4 2 1 5 2 4 − 1 9 ) = ( 1 0 0 1 2 1 0 2 − 3 1 ) ( 2 4 2 0 3 1 0 0 8 ) = L U A= \begin{pmatrix} 2 & 4 & 2 \\ 1 & 5 & 2 \\ 4 & -1 & 9 \end{pmatrix}= \begin{pmatrix} 1 & 0 & 0\\ \frac{1}{2} & 1 & 0\\ 2 & -3 & 1 \end{pmatrix} \begin{pmatrix} 2 & 4 & 2\\ 0 & 3 & 1\\ 0 & 0 & 8 \end{pmatrix}=LU A= 214451229 = 1212013001 200430218 =LU

例12,LU分解解线性方程组:

将系数矩阵进行LU分解,然后分两步解出方程
在这里插入图片描述
在具体求解时要使用数学软件来求,计算机解线性方程组时就采用LU分解.手动进行LU分解当然是比较麻烦的.

### 关于 Visual Studio 2010 调试窗口一闪而过问题 Visual Studio 2010 中调试模式下程序运行结束时可能会导致控制台窗口瞬间关闭,这是因为默认情况下调试器会在程序正常退出时不等待用户输入就自动关闭窗口[^1]。以下是具体的解决方案: #### 方法一:修改项目属性设置 可以通过调整项目的属性来让程序在完成执行后暂停并等待用户的按键操作。 1. 右键单击解决方案资源管理器中的项目名称,选择 **“属性”**。 2. 在弹出的对话框中导航至 **“配置属性 -> C/C++ -> 链接器 -> 系统”**。 3. 找到选项 **“子系统 (SubSystem)”** 并将其更改为 **“Console (/SUBSYSTEM:CONSOLE)”** 如果尚未如此设置。 4. 接下来,在源代码文件的最后一行添加 `system("pause");` 或者 `_getch();` 函数调用来手动实现暂停功能。例如: ```cpp #include <stdlib.h> int main() { // 主逻辑... system("pause"); // 让程序暂停直到按下任意键 return 0; } ``` 这种方法适用于希望每次运行都保持窗口打开的情况。 #### 方法二:通过快捷方式区分启动行为 如果经常混淆 F5Ctrl+F5 的作用,则可以考虑自定义工具栏上的按钮或者键盘绑定以便更好地识别两者的区别。 - 如前所述,默认只有调试的小实心三角形被放置到了标准工具条上;为了防止意外触发调试会话,可自行把非调试版本也加入进来作为补充提示手段之一。 具体步骤如下所示: 1. 进入菜单项 **“工具 -> 自定义...”** 2. 切换到标签页 **“命令”**, 然后再选中类别列表里的 “Debug” 3. 寻找名为 **“Start Without Debugging”的动作**(即对应Ctrl-F5的功能), 把它拖拽到任何可见区域比如主界面上方空白处形成新图标即可 这样做的好处在于直观地区分了两种不同的启动形式从而减少失误几率. #### 方法三:更改注册表设置(高级) 对于熟悉 Windows 注册表编辑的人来说还可以尝试直接修改系统的相关参数以改变这种现象: 警告! 修改前请务必做好备份以防万一出现问题难以恢复. 路径大致位于 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0 下寻找有关 OutputWindowAutoClose 的DWORD值设成0表示禁用自动关闭特性. 不过鉴于风险较高一般推荐优先采用上述较为安全简便的方式处理此类状况. ```cpp #include <conio.h> int main(){ printf("Press any key to continue..."); _getch(); } ``` 以上展示了如何利用_getch函数达到相同效果而不依赖外部库调用如system命令那样可能存在安全隐患的做法. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值