11、矩阵的分解

这篇具有很好参考价值的文章主要介绍了11、矩阵的分解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、对称正定矩阵的Cholesky分解

二、一般方阵的高斯消去法分解

三、矩形矩阵的正交分解

四、舒尔分解


矩阵分解是把一个矩阵分解成几个“较简单”的矩阵连乘的形式。在MATLAB中矩阵分解的相关函数有:

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数

在MATLAB中,线性方程组的求解主要基于4种基本的矩阵分解,即对称正定矩阵的Cholesky分解、一般方阵的高斯消去法分解、舒尔分解和矩形矩阵的正交分解。

一、对称正定矩阵的Cholesky分解

Cholesky分解在MATLAB中用函数chol()来实现,其常用的调用方式如下:

  1. R = chol(X):其中X为对称正定矩阵,R是上三角矩阵,使得X=R'·R。如果X 是非正定的,则结果将返回出错信息。
  2. [R,p] = chol(X):返回两个参数,并且不会返回出错信息。当X是正定矩阵时,返回的上三角矩阵R满足X=R'·R,且p=0;当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数为p-1,且满足X(1:p-1,1:p-1)=R'·R。

示例1:利用chol进行矩阵分解

A=pascal(5) %产生5阶帕斯卡矩阵

B=eig(A) %矩阵A的特征值

C=chol(A) %利用chol进行矩阵分解

D=C'*C

运行结果:

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数

对于稀疏矩阵,MATLAB提供了函数cholinc()来做不完全Cholesky分解。函数cholinc()的另一个优点是它可用于计算实半正定矩阵。函数cholinc()的调用格式如下:

  1. R = cholinc(X,DROPTOL):其中 X 和 R 的含义与函数 chol()中的变量相同,DROPTOL为不完全Cholesky分解的丢失容限。当DROPTOL设为0时,退化为完全Cholesky分解。
  2. R = cholinc(X,OPTS):其中 OPTS 为结构体,它有3个属性,即DROPTOL、MICHOL和RDIAG。DROPTOL为不完全Cholesky分解的丢失容限;MICHOL为1时采用改进算法的不完全Cholesky分解,否则不采用改进算法;RDIAG为1时R的对角元素中的零值替换成为DROPTOL的平方根,RDIAG为0时不做此替换。
  3. R = cholinc(X,'0'):完全Cholesky分解。
  4. [R,p] = cholinc(X,'0'):返回两个参数,并且不会返回出错信息。当X是正定矩阵时,返回的上三角矩阵R满足X=R'·R,且p=0;当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数为p-1,且满足X(1:p-1,1:p-1)=R'· R。
  5. R = cholinc(X,'inf' ):采用 Cholesky-Infinity 分解。Cholesky-Infinity分解是基于Cholesky分解的,但它可以处理实半正定矩阵。

示例2:稀疏矩阵Cholesky分解

A=[2 0 3 0;0 25 0 30;3 0 91 0;0 32 0 661];

B=cholinc(sparse(A),'inf') %采用 Cholesky-Infinity 分解

C=full(B) %转为稀疏矩阵

D=C'*C

运行结果:

上面代码无错,我matlab缺少cholinc函数,不知道解决方式

二、一般方阵的高斯消去法分解

高斯消去法分解又称LU分解,它可以将任意一个方阵A分解为一个下三角矩阵L和一个上三角矩阵U 的乘积,即A=LU。LU分解在MATLAB中用函数lu()来实现,其调用方式如下:

  1. [L,U] = lu(X):X为一个方阵,L为“心理”下三角矩阵,U为上三角矩阵,满足关系X=L·U。
  2. [L,U,P] = lu(X):X为一个方阵,L为下三角矩阵,U为上三角矩阵,P为置换矩阵,满足关系P·X = L·U。
  3. Y = lu(X):X为一个方阵,把上三角矩阵和下三角矩阵合并在矩阵Y中给出,矩阵Y的对角元素为上三角矩阵的对角元素,即Y=L+U-I。置换矩阵P的信息丢失。

利用LU分解来计算行列式的值和矩阵的逆,其命令形式如下:

  1. det(A)=det(L)*det(U)。
  2. inv(A)=inv(U)*inv(L)。

示例3:进行LU分解

A=[2 4 5;8 9 6;1 3 5];

[L1,U1]=lu(A) %矩阵的LU分解

[L2,U2,P]=lu(A)

B=lu(A)

C=L1*U1  %验证

D=L2+U2-eye(size(A))

运行结果:

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数

此外,对于稀疏矩阵,MATLAB提供了函数luinc()来做不完全LU分解,其调用格式如下:

  1. [L U]= luinc(X,DROPTOL):其中 X、L 和 U 的含义与函数 lu()中的变量相同,DROPTOL为不完全LU分解的丢失容限。当DROPTOL设为0时,退化为完全LU分解。
  2. [L U] = luinc(X,OPTS):其中 OPTS 为结构体,它有4个属性,即DROPTOL、MICHOL、RDIAG 和 THRESH。DROPTOL 为不完全 LU分解的丢失容限;MICHOL为1时采用改进算法的不完全 LU分解,否则不采用改进算法;RDIAG为1时,R的对角元素中的零值替换成DROPTOL的平方根,为0时不做此替换;THRESH 是绕对角线旋转因子,其取值范围是[0,1],当THRESH 为0时强制绕对角线旋转,THRESH 的默认值是1。
  3. [L,U,P] = luinc(X,'0'):0级不完全LU分解。
  4. [L,U] = luinc(X,'0'):0级不完全LU分解。
  5. Y = luinc(X,'0'):0级完全LU分解。

三、矩形矩阵的正交分解

矩形矩阵的正交分解又称QR分解。QR分解把一个m×n的矩阵A分解为一个正交矩阵Q和一个上三角矩阵R的乘积,即A=Q·R。在MATLAB中QR分解由函数qr()来实现,下面介绍QR分解的调用方式

  1. [Q,R] = qr(A):其中矩阵R为与矩阵A具有相同大小的上三角矩阵,Q为正交矩阵,它们满足A=Q·R。该调用方式适用于满矩阵和稀疏矩阵。
  2. [Q,R] = qr(A,0):为“经济”方式的QR分解。设矩阵A是一个m×n 的矩阵,若m>n,则只计算矩阵Q的前n列元素,R为n×n的矩阵;若m≤n,则与[Q,R]=qr(A)效果一致。该调用方式适用于满矩阵和稀疏矩阵。
  3. [Q,R,E] = qr(A):R 是上三角矩阵,Q 为正交矩阵,E 为置换矩阵。它们满足A·E=Q·R,程序选择一个合适的矩阵 E 使得 abs(diag(R))是降序排列的。该调用方式适用于满矩阵。
  4. [Q,R,E] = qr(A,0):“经济”方式的QR分解,其中E是一个置换矢量。它们满足A(:,E)= Q·R。该调用方式适用于满矩阵。
  5. R =qr(A):返回上三角矩阵R,这里R= chol(A'·A)。该调用方式适用于稀疏矩阵。
  6. R = qr(A,0):以“经济”方式返回上三角矩阵R。
  7. [C,R] = qr(A,B):其中矩阵B必须与矩阵A具有相同的行数,矩阵R是上三角矩阵,C=Q' ·B。

示例4:通过QR分解分析矩阵的秩

A=[2 4 5;8 9 6;1 3 5];

[Q1,R1]=qr(A) %矩阵的QR分解

B=[2 4 5;8 9 6;1 3 5;5 4 10];

C=rank(B) %矩阵的秩

[Q2,R2]=qr(B) %矩阵的QR分解

运行结果:

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数

四、舒尔分解

舒尔分解定义式为

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数

其中A必须是一个方阵,U是一个酉矩阵,S是一个块对角化矩阵,由对角线上的1×1和2×2块组成。特征值可以由矩阵S的对角块给出,而矩阵U给出比特征向量更多的数值特征。此外,对缺陷矩阵也可以进行舒尔分解。MATLAB中用函数schur()来进行舒尔分解,其调用格式如下:

  1. [U,S] = schur(A):返回酉矩阵U和块对角矩阵S。
  2. S = schur(A):仅返回块对角矩阵S。
  3. schur(A,'real'):返回的实特征值放在对角线上,而把复特征值放在对角线上的2×2块中。
  4. schur(A,' complex'):返回的矩阵S是上三角矩阵,并且如果矩阵A有复特征值,则矩阵S是复矩阵。

另外,函数rsf2csf()可以把实数形式的舒尔矩阵转换成复数形式的

舒尔矩阵。

示例5:舒尔分解

A=pascal(5); %产生5阶帕斯卡矩阵

[U,S]=schur(A) %矩阵的舒尔分解

B=U*S*U-A %验证

运行结果:

矩阵正交分解,Matlab基础,矩阵,matlab,线性代数文章来源地址https://www.toymoban.com/news/detail-717553.html

到了这里,关于11、矩阵的分解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性代数的学习和整理19,特征值,特征向量,以及引入的正交化矩阵概念

    目录 1 什么是特征值和特征向量? 1.1 特征值和特征向量这2个概念先放后 1.2 直观定义 1.3 严格定义 2 如何求特征值和特征向量 2.1 方法1:结合图形看,直观方法求 2.1.1 单位矩阵的特征值和特征向量 2.1.2 旋转矩阵 2.2  根据严格定义的公式 A*X=λ*X 来求 2.3  特征方程 2.4 互异特

    2024年02月09日
    浏览(66)
  • 线性代数中的矩阵分解与稀疏处理

    线性代数是计算机科学、数学、物理等多个领域的基础知识之一,其中矩阵分解和稀疏处理是线性代数中非常重要的两个方面。矩阵分解是指将一个矩阵分解为多个较小的矩阵的过程,这有助于我们更好地理解和解决问题。稀疏处理是指处理那些主要由零组成的矩阵的方法,

    2024年04月15日
    浏览(48)
  • 线性代数 --- 矩阵的QR分解,A=QR

            首先先简单的回顾一下Gram-Schmidt正交化过程的核心思想。即,如何把一组线性无关的向量构造成一组标准正交向量,或者说,如何把一般的线性无关矩阵A变成标准正交矩阵Q。         给定一组线性无关的向量a,b,c,我们希望构造出一组相互垂直的单位向量q1,q2,q3。

    2024年02月08日
    浏览(41)
  • 线性代数笔记4--矩阵A的LU分解

    1. 矩阵的转置 1.1 定义 矩阵的转置,即矩阵的行列进行互换。 A = [ 1 2 3 4 5 6 ] A= begin{bmatrix} 1 2 3 \\\\ 4 5 6\\\\ end{bmatrix} A = [ 1 4 ​ 2 5 ​ 3 6 ​ ] 矩阵 A A A 的转置 B = A ⊤ = [ 1 4 2 5 3 6 ] B=A^top= begin{bmatrix} 1 4\\\\ 2 5\\\\ 3 6 end{bmatrix} B = A ⊤ = ​ 1 2 3 ​ 4 5 6 ​ ​ 1.2 性质 ( A ⊤ ) ⊤ = A

    2024年04月13日
    浏览(43)
  • MIT - 线性代数-LU_LDU分解|单位矩阵

    U为消元结果(行变换),L为行变换矩阵的逆矩阵 D为主元(Pivot)A的主对角线元素,在这里为2、3,U为对D做列变换使其得到LU中的U 为什么要写成A=LU而不是E21A=U呢?因为A=LU中L只包含行变换信息,E21A=U还有额外的数字 2×2 2 3×3 3×2=6 4×4 4×3×2=24 结论:单位矩阵的逆=转置矩阵(

    2024年01月23日
    浏览(48)
  • 线性代数 --- LU分解(Gauss消元法的矩阵表示)

                     首先, LU分解实际上就是用矩阵的形式来记录的高斯消元的过程 。其中,对矩阵A进行高斯消元后的结果为矩阵U,是LU分解后的两个三角矩阵中其中之一。U是一个上三角矩阵,U就是上三角矩阵upper triangle的首字母的大写。         高斯消元的每一步都

    2024年02月02日
    浏览(52)
  • 【线性代数/机器学习】矩阵的奇异值与奇异值分解(SVD)

    我们知道,对于一个 n × n ntimes n n × n 的矩阵 A A A ,如果 A A A 有 n n n 个线性无关的特征向量,则 A A A 可以相似对角化,即存在可逆矩阵 P P P 使得 A = P Λ P − 1 A=PLambda P^{-1} A = P Λ P − 1 ,其中 Λ Lambda Λ 是 A A A 的特征值组成的对角阵。 P P P 的列实际上就是 A A A 的特征向

    2024年02月10日
    浏览(41)
  • Matlab | Lab4——用LU 分解法、 Jacobi 迭代、 Gauss-Seidel 迭代 解线性病态方程组(系数矩阵为Hilbert矩阵)

    考虑线性方程组Hx=b,其中H为n阶Hilbert矩阵,即 通过先给 定解 (例如取x的各个分量为1),再计算出右端向量b的办法给出一个精确解已知的问题. (1)分别编写Doolittle LU 分解法、 Jacobi 迭代、 Gauss-Seidel 迭代的一般程序; (2) 取阶数n=6,分别用 LU 分解法、 Jacobi 迭代、 Gauss-S

    2024年02月11日
    浏览(42)
  • 04 MIT线性代数-矩阵的LU分解 Factorization into A=LU

    目的: 从矩阵的角度理解高斯消元法, 完成 LU 分解得到 A = LU U 为上三角阵(Upper triangular matrix),  L 为下三角阵(Lower triangular matrix), 通过分解得到对角阵 D (diagonal matrix) 设定一组消元矩阵,其中 E31 为单位阵 I ,其它两个消元矩阵如下: row3 -5 newrow2 = row3 -5( row2 -2 row1 )= row3 -

    2024年02月07日
    浏览(41)
  • 线性代数笔记11--矩阵空间、秩1矩阵

    1. 矩阵空间 所有的 3 × 3 3 times 3 3 × 3 矩阵构成的空间 M M M 。 考虑空间 M M M 的子空间 上三角矩阵 对称矩阵 对角矩阵 3 x 3 3x3 3 x 3 矩阵空间的基: [ 1 0 0 0 0 0 0 0 0 ] [ 0 1 0 0 0 0 0 0 0 ] [ 0 0 1 0 0 0 0 0 0 ] [ 0 0 0 1 0 0 0 0 0 ] [ 0 0 0 0 1 0 0 0 0 ] [ 0 0 0 0 0 1 0 0 0 ] [ 0 0 0 0 0 0 1 0 0 ] [ 0 0 0 0 0 0

    2024年03月10日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包