matlab 高斯分解,分解 - MATLAB & Simulink - MathWorks 中国

QR分解是线性代数中的一种矩阵分解方法,它将矩阵表示为正交矩阵Q和上三角矩阵R的乘积。正交矩阵的列具有单位长度并相互垂直,保持向量长度和角度不变,适合数值计算。在超定线性方程组中,QR分解可以转换问题为等效的三角形方程组,便于求解。列置换有助于检测矩阵的奇异性和秩,同时精简QR分解可以节省内存。在MATLAB中,可以使用`qr`函数进行QR分解,选择是否进行列置换和得到精简形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QR 分解

正交矩阵或包含正交列的矩阵为实矩阵,其列全部具有单位长度并且相互垂直。如果 Q 为正交矩阵,则

QTQ = I,

其中 I 是单位矩阵。

最简单的正交矩阵为二维坐标旋转:

[cos(θ)sin(θ)−sin(θ)cos(θ)].

对于复矩阵,对应的术语为单位。由于正交矩阵和单位矩阵会保留长度、保留角度并且不会增大误差,因此适用于数值计算。

正交或 QR 分解将任何矩形矩阵表示为正交或酉矩阵与上三角矩阵的积。此外,也可能涉及列置换。

A = QR

AP = QR,

其中,Q 为正交或单位矩阵,R 为上三角矩阵,P 为置换向量。

QR 分解有四种变化形式 - 完全大小或合适大小,以及使用列置换或不使用列置换。

超定线性方程组涉及行数超过列数的矩形矩阵,也即 m×n 并且 m > n。完全大小的 QR 分解可生成一个方阵(m×m 正交矩阵 Q)和一个矩形 m×n 上三角矩阵 R:

C=gallery('uniformdata',[5 4], 0);

[Q,R] = qr(C)

Q =

0.6191 0.1406 -0.1899 -0.5058 0.5522

0.1506 0.4084 0.5034 0.5974 0.4475

0.3954 -0.5564 0.6869 -0.1478 -0.2008

0.3167 0.6676 0.1351 -0.1729 -0.6370

0.5808 -0.2410 -0.4695 0.5792 -0.2207

R =

1.5346 1.0663 1.2010 1.4036

0 0.7245 0.3474 -0.0126

0 0 0.9320 0.6596

0 0 0 0.6648

0 0 0 0

在许多情况下,Q 的最后 m – n 列是不需要的,因为这些列会与 R 底部的零相乘。因此,精简 QR 分解可生成一个矩形矩阵(具有正交列的 m×n Q)以及一个方阵 n×n 上三角形矩阵 R。对于 5×4 示例,不会节省太多内存,但是对于更大的大量矩形矩阵,在时间和内存方面的节省可能会很重要:

[Q,R] = qr(C,0)

Q =

0.6191 0.1406 -0.1899 -0.5058

0.1506 0.4084 0.5034 0.5974

0.3954 -0.5564 0.6869 -0.1478

0.3167 0.6676 0.1351 -0.1729

0.5808 -0.2410 -0.4695 0.5792

R =

1.5346 1.0663 1.2010 1.4036

0 0.7245 0.3474 -0.0126

0 0 0.9320 0.6596

0 0 0 0.6648

与 LU 分解相比,QR 分解不需要进行任何消元或置换。但是,可选的列置换(因存在第三个输出参数而触发)对检测奇异性或秩亏是很有帮助的。在分解的每一步,未分解的剩余矩阵的列(范数最大)将用作该步骤的基础。这可以确保 R 的对角线元素以降序排列,并且各列之间的任何线性相关性肯定能够通过检查这些元素来显示。对于此处提供的小示例,C 的第二列的范数大于第一列的范数,因此这两列被交换:

[Q,R,P] = qr(C)

Q =

-0.3522 0.8398 -0.4131

-0.7044 -0.5285 -0.4739

-0.6163 0.1241 0.7777

R =

-11.3578 -8.2762

0 7.2460

0 0

P =

0 1

1 0

组合了合适大小和列置换后,第三个输出参数为置换向量而不是置换矩阵:

[Q,R,p] = qr(C,0)

Q =

-0.3522 0.8398

-0.7044 -0.5285

-0.6163 0.1241

R =

-11.3578 -8.2762

0 7.2460

p =

2 1

QR 分解可将超定线性方程组转换为等效的三角形方程组。表达式

norm(A*x - b)

等于

norm(Q*R*x - b)

与正交矩阵相乘可保留欧几里德范数,因此该表达式也等于

norm(R*x - y)

其中 y = Q'*b。由于 R 的最后 m-n 行为零,因此该表达式将分为两部分:

norm(R(1:n,1:n)*x - y(1:n))

并且

norm(y(n+1:m))

如果 A 具有满秩,则可以对 x 求解,使这些表达式中的第一个表达式为零。然后,第二个表达式便可以提供残差范数。如果 A 没有满秩,则可以通过 R 的三角形结构体对最小二乘问题求基本解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值