返回
首页>资讯

奇异值分解法的原理

时间: 2023-04-19 18:21:27

奇异值分解法的原理

这是矩阵论里面的一种矩阵分解方法,先找矩阵的奇异值,然后按照步骤做就可以将一个矩阵分解三个矩阵的相乘。

奇异值分解:是线性代数中一种重要的矩阵分解,为矩阵分析中正规矩阵酉对角化的推广,主要应用在信号处理、统计学等领域。奇异值分解在某些方面与对称矩阵,基于特征向量的对角化类似。然而这两种矩阵分解尽管有其相关性,但还是有明显的不同。对称阵特征向量分解的基础是谱分析,而奇异值分解则是谱分析理论在任意矩阵上的推广。

维根斯法<sup>[1,9]</sup>

当G接近奇异时,有的奇异值较小,此时由于W中的元素相差过大,导致条件数极大,逆矩阵的计算误差较大,方程的解极不稳定。为了解决这个问题,维根斯(Wiggins)提出去掉较小的奇异值,用r×r矩阵We来代替W,从而有较稳定的广义逆[9]:

地球物理反演教程

其中:

地球物理反演教程

这样方程Gm=d就有广义逆解:

地球物理反演教程

下面以三个例子来说明如何使用奇异值分解程序[1]。

地球物理反演教程

下面程序段是维根斯法的具体实现步骤。用到两个子程序:奇异值分解子程序svdcmp和回代解线性方程组子程序svbksb。这两个子程序可以从Fortran power station 4.0中获得源程序。

首先调用svdcmp子程序进行奇异值分解,找到最大奇异值wmax;然后设定最小奇异值和最大奇异值的比值界限ε(下面的程序令ε=10-6),从而设定了最小奇异值wmin=wmax*ε,如果原来矩阵W中有奇异值小于wmin,则令它为零;最后调用子程序svbksb用近似的奇异值矩阵回代解线性方程组。

! 例1,2,3

usemsimsl

! parameter(mp=3,np=2)! 例3

! parameter(mp=2,np=3)! 例2

parameter(mp=1,np=2)! 例1

integerm,n,np,mp

reala(mp,np),X(np),d(mp),w(np),v(np,np),wmax,wmin

dataa/1,1/,d/2/ ! 例1

! dataa/1,0,1,0,0,1/,d/3,3/ ! 例2

! dataa/1,1,0,1,0,1/,d/3,1,1/! 例3

m=mp

n=np

! 对a进行奇异值分解

callsvdcmp(a,m,n,mp,np,w,v)

! SUBROUTINEsvdcmp(a,m,n,mp,np,w,v)

! INTEGERm,mp,n,np,NMAX

! REALa(mp,np),v(np,np),w(np)

! PARAMETER(NMAX=500)

!findmaximumsingularvalue

wmax=0.0

do13k=1,np

if(w(k).gt.wmax)wmax=w(k)

13 continue

! define"small";

wmin=wmax*(1.0e-6)

!zerothe"small";singularvalues

do14k=1,np

if(w(k).lt.wmin)w(k)=0.0

14 continue

write(*,*)'u'

doi=1,m

write(*,*)(a(i,j),j=1,n)

enddo

! 回代解方程

callsvbksb(a,w,v,m,n,mp,np,d,X)

!这时a就是u

!SUBROUTINEsvbksb(u,w,v,m,n,mp,np,b,x)

!INTEGERm,mp,n,np,NMAX

!REALb(mp),u(mp,np),v(np,np),w(np),x(np)

!PARAMETER(NMAX=500)

write(*,*)'v'

doi=1,np

write(*,*)(v(i,j),j=1,n)

enddo

write(*,*)'w'

doi=1,np

write(*,*)w(i)

enddo

write(*,*)'x'

write(*,*)(x(i),i=1,np)

end

用以上方法解式(4.1)就可以直接获得模型的解。当然一般来说写不出那样的数据方程,而是用泰勒公式近似的,所以用以上方法解第3章的最小二乘法的线性方程组公式(3.14),获得模型修改量,使反演的迭代过程可以稳定进行下去。

应用奇异值分解法并不要求系数矩阵为方阵,当G的维数M<N时,方程组Gm=d欠定,奇异值分解法得到的是最小长度解。当G的维数M>N时,方程组超定,得到最小方差解[1]。

[例1] m1+m2=2

这是一个欠定方程组。未知数个数大于方程个数,所以有无穷多个解,但是用奇异值分解法可以得到唯一解,这个解为最小长度解(解向量的长度最小)。

用上面程序解出m1=m2=0.999999≈1,从图4.1可知,符合[例1]方程的解有无穷多个,但是从原点到方程的直线的距离最小的点只有一个,这个点就是最小长度解。

图4.1 [例1]最小长度解示意图[1]

[例2]

这也是一个欠定方程组。用奇异值分解法也可以得到唯一最小长度解。

[例2]中第一个方程代表图4.2中FDCB所在的平面。第二个方程代表EDF所在的平面。这两个平面的相交线为FD所在的直线。FD直线上所有的点都是[例2]方程组的解。用奇异值分解法可以解出最小长度解(A点到原点的距离最小)。

图4.2 [例2]最小长度解示意图[1]

图4.3 [例3]最小方差解示意图

[例3]

地球物理反演教程

这是一个超定方程组,有2个未知数,3个方程,并且是一个矛盾方程组,因为无法同时满足3个方程,理论上这样的方程应该是无解的,但是奇异值分解法可以得到唯一解,即“最小方差解”。

图4.3所示黑点为奇异值分解法所得的“最小方差解”。它不满足[例3]中任何一个方程,但是它到每个方程所代表的直线的距离的平方和最小。

矩阵的奇异值分解

线性代数中,我们所说的矩阵的特征分解,即为:
然而,要满足特征分解,矩阵必须为方阵,否则无法直接求解特征值。

对于一般矩阵,我们如果也要对其进行分解成3个矩阵乘积,其中为的矩阵,为的方阵,为的矩阵,为的矩阵。

矩阵如何分解呢?首先,它应该满足一个条件,它是方的!那么如何把矩阵变成方针呢?

一个矩阵乘以它的转置即为方阵。

那么接下来的分解就是对与构造方阵的分解。还是特征分解的老步骤。这里,先提一下,是半正定矩阵:。
由于满足矩阵交换乘积,有,且。

我们可以设的特征值为,设的特征值为,且不为0的特征值个数相等。因此,有
矩阵半正定,特征值非负,可以开根号。特征值从右上角开始写,直到写到最后一个非零特征值。其余元素均为0。

刚才提及的是矩阵的奇异值分解的方法,现在我们初步看一下这个方法在降维中的应用。

令,为矩阵对角线元素。

奇异值分解后的矩阵可以表示为:
令特征值从大到小排列,意味着前面的较大的特征值保留了矩阵较为重要的特征,后面的较小的特征值保留了矩阵比较细节的特征。以图像的压缩为例子:

压缩钱图像矩阵为,意味着参数有个,只取前个特征值,参数有。误差为:。

也可以用作在神经网络的加速运算,之后提及。

下面是图片压缩的例子(转自知乎@DeepWeaver)

声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

猜你喜欢

本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有

邮箱:daokedao3713@qq.com

备案号:鲁ICP备2022001955号-4

网站地图