主要内容

因子分解

介绍

本节中讨论的三个矩阵分解都使用了三角矩阵,其中对角线上方或下方的所有元素均为零。涉及三角矩阵的线性方程组可以使用向前地回来替换

柯列斯基分解

乔里斯基分解将对称矩阵表示为三角形矩阵及其转置的乘积

一个RR

在哪里R是一个上三角矩阵。

不是所有的对称矩阵都可以这样分解;具有这种因式分解的矩阵称为正定矩阵。这意味着所有的对角元素一个帕斯卡矩阵提供了一个有趣的例子。在本章中,示例矩阵一个一直是3乘3帕斯卡矩阵。暂时切换到6乘6:

A=帕斯卡(6)A=11112345613615141035561153570126162156126252

的元素一个二项式系数。每个元素都是它北面和西面的元素之和。乔里斯基分解是

R = 1 1 1 1 10 1 2 3 4 5 0 0 1 3 6 10 0 0 0 1 4 10 0 0 0 0 1 5 0 0 0

这些元素也是二项式系数。事实是‘* R等于一个证明了涉及二项式系数乘积和的恒等式。下载188bet金宝搏

请注意

乔里斯基分解法也适用于复杂矩阵。任何具有乔尔斯基分解的复矩阵都满足

一个“一个

据说是埃尔米特正定

Cholesky分解允许线性系统

斧头b

取而代之

RRxb

因为反斜杠运算符可以识别三角系统,所以可以在MATLAB中求解®环境快速与

x = R \ (R \ b)

如果一个n-借-n的计算复杂度胆固醇(A)是O吗(n3.),但随后的反斜杠解决方案的复杂性仅为O(金宝搏官方网站n2).

LU因子分解

LU分解,或高斯消去,表示任意方阵一个作为下三角矩阵和上三角矩阵置换的乘积

一个

在哪里l是一个下三角矩阵的置换,其对角线和U是一个上三角矩阵。

由于理论和计算的原因,排列是必要的

0 1 1 0

不能表示为三角形矩阵的乘积而不交换其两行。虽然矩阵

ε 1 1 0

可以表示为三角形矩阵的乘积,当ε是小的,因素中的元素是大的,并放大错误,所以即使排列不是严格必需的,他们是可取的。部分枢轴确保了元素l大小为1的元素U都不比我们的大多少一个

例如:

[L,U] = lu(B) L = 1.0000 00 0.3750 0.5441 1.0000 0.5000 1.0000 0 U = 8.0000 1.0000 6.0000 0 8.5000 -1.0000 00 5.2941

矩阵的LU分解一个允许线性系统

A*x=b

迅速解决

x = U \ (L \ b)

行列式和逆式是利用LU分解计算出来的

det(A)=det(L)*det(U)

发票(A) =发票(U) *发票(左)

您还可以使用依据(A) = prod(诊断接头(U)),尽管行列式的符号可能是相反的。

QR分解

一个正交的矩阵,或者说具有标准正交列的矩阵,是一个实矩阵它的列都有单位长度并且互相垂直。如果是正交的,那么

T

在哪里是单位矩阵。

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

余弦 θ θ θ 余弦 θ

对于复矩阵,相应的项为统一的.正交矩阵和酉矩阵是数值计算所需要的,因为它们能保持长度,保持角度,并且不会放大误差。

正交分解或QR分解将任何矩形矩阵表示为正交矩阵或酉矩阵与上三角矩阵的乘积。还可能涉及列排列:

一个QR

美联社QR

在哪里是正交的还是幺正的,R是上三角形,和P是一个排列。

QR因数分解有四种变体——完整或经济规模,有或没有列排列。

超定线性系统涉及行多于列的矩形矩阵,即-借-n具有>n. 全尺寸QR分解生成一个正方形,-借-正交的和一个长方形-借-n上三角R

C =画廊(uniformdata, 4 [5], 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.7245 0.3474 -0.0126 0 0 0.9320 0.6596 0.6648 0 0 0 0 0 0 0

在很多情况下,是最后一个m - n是不需要的,因为它们与R. 所以经济尺寸QR分解产生一个矩形,-借-n具有正交柱和正方形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 11 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

QR分解将超定线性系统转化为等价的三角形系统。表情

规范(A * x - b)

等于

规范(Q * R * x - b)

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

范数(R*x-y)

在哪里y=Q'*b. 自从上次-n一排R为0时,该表达式分成两部分:

规范(R (1: n, 1: n) * x - y (1: n))

规范(y (n + 1: m))

一个有满秩,可以解为x所以第一个表达式是0。然后第二个表达式给出残差的范数。当一个没有满秩,三角结构的R使找到最小二乘问题的基本解成为可能。

使用多线程计算进行因式分解

MATLAB软件支持许多线性代数金宝app和元素数值函数的多线程计算。这些函数会在多个线程上自动执行。为了让一个函数或表达式在多个cpu上执行得更快,必须满足以下条件:

  1. 该函数执行的操作很容易划分为并发执行的部分。这些部分必须能够在进程之间很少通信的情况下执行。它们应该很少需要顺序操作。

  2. 数据大小足够大,因此并发执行的任何优势都超过了划分数据和管理单独执行线程所需的时间。例如,大多数函数只有在数组包含数千个或更多元素时才会加速。

  3. 操作没有内存限制;处理时间不受内存访问时间的支配。一般来说,复杂函数的速度比简单函数快。

qr在大型双精度阵列(约10000个元素)上显示速度显著提高。

另请参阅

||

相关的话题