2008,44(3)ComputerEngineeringandApplications计算机工程与应用
1引言
矩阵特征值计算在许多工程领域中有着重要应用,因此,
多年来一直是个十分活跃的研究课题,并已研究出多种计算矩
阵特征值的算法[1-5]。这些算法各有优缺点,分别适用于不同场
合。本文基于线性代数和矩阵理论,将实对称矩阵的LDLT分
解用于估计该矩阵在给定区间内特征值的个数,进而拓展为一
种计算实对称矩阵特征值的递归算法。下面给出算法的推导与
理论分析,以及利用Matlab对算法进行验证的结果,并对算法
的性能进行评价与测试。
2实对称矩阵的LDLT分解
由LDLT分解定理可知:若A∈Rn×n,AT=A,且A的所有顺
序主子式都不为零,则存在唯一的单位下三角矩阵L和对角
矩阵D,使A=LDLT[6]。
为得到计算L、D元素的公式,设A=(aij)n×n(其中aij=aji),L
和D具有如下形式:
L=10…0
l211…0
………
ln1ln2…
"
#
#
#
#
#
#
#
#
##
$
%
&
&
&
&
&
&
&
&
&&
’
1
,D=
d110…0
0d22…0
………
00…dnn
"
(
(
(
(
(
(
(
(
((
$
%
&
&
&
&
&
&
&
&
&&
’
将上式代入A=LDLT,比较对应元素可得:
aij=
j
k=1
)likljkdjk,j=1,2,…,n;i=j,j+1,…,n
根据上式就可得到由j=1到j=n逐列计算L、D各元素的公式为:
d11=a11
li1=ai1
a11
lij=
aij-
j-1
k=1
)likljkdkk
djj
djj=ajj-
j-1
k=1
)l2jkdkk,j=1,2,…,n;i=j+1,j+2,…,
*
,
,
,
,
,
,
,
,
,
,
,
+
,
,
,
,
,
,
,
,
,
,
,
-
n
可见,上述算法保留了CholeskyLLT分解[6]的优点,而省去了开方运算。
3判断实对称矩阵在给定区间内特征值个数的算法为判断A在区间(a,b)内特征值的个数,根据实对称矩阵对角化原理[7],特构造如下对称矩阵:
P(a)=A-aI=QTdiag(!1,!2,…,!n)Q-aQTQ=QTdiag(!1-a,!2-a,…,!n-a)Q
P(b)=A-bI=QTdiag(!1,!2,…,!n)Q-bQTQ=QTdiag(!1-b,!2-b,…,!n-b)Q
其中Q∈Rn×n,为正交矩阵;!1,!2,…,!n为A的特征值,且均为实数。
设矩阵P(a)和P(b)的正惯性指数分别为N
a
+
和N
b
+
,则由
惯性指数的定义可知[6],N
a
+
表示!1,!2,…,!n中大于a的个数,
N
b
+
表示!1,!2,…,!n中大于b的个数,而N
a
+
-N
b
+
即为矩阵A在
基于LDLT分解求实对称矩阵特征值的递归算法
张鹍1,张有志2
ZHANGKun1,ZHANGYou-zhi2
1.山东大学威海分校,山东威海264209
2.山东大学信息科学与工程学院,济南250100
1.ShandongUniversityatWeihai,Weihai,Shandong264209,China
2.SchoolofInf.Sci.andEng.,ShandongUniversity,Ji’nan250100,China
E-mail:zhangkuncom119@sina.com
ZHANGKun,ZHANGYou-zhi.RecursivealgorithmforcalculatingeigenvaluesofrealsymmetricmatrixbasedonLDLTdecomposition.ComputerEngineeringandApplications,2008,44(3):78-80.
Abstract:ArecursivealgorithmforcalculatingtheeigenvaluesofarealsymmetricmatrixbasedonLDLTdecompositionisgiv-en.Withthisalgorithm,thenumberofeigenvaluesofarealsymmetricmatrixinthegivenintervalcanbecounted,andtheeigen-valuesofthematrixcanbecalculated.Throughtheoreticalanalysisandnumericalsimulation,thisalgorithmisprovedtobeef-fective.
Keywords:LDLTdecomposition;realsymmetricmatrix;eigenvalue;recursivealgorithm
摘要:基于线性代数与矩阵理论,给出利用LDLT分解计算实对称矩阵特征值的递归算法。该算法可求出实对称矩阵在给定区间内的特征值的个数,并可计算满足精度要求的特征值。理论分析和实际测试证明该算法是有效的。
关键词:LDLT分解;实对称矩阵;特征值;递归算法
文章编号:1002-8331(2008)03-0078-03文献标识码:A中图分类号:TP301.6;O151.21
78
2008,44(3)i
01234567ai0.000000.000000.250000.250000.312500.343750.359380.35938bi
1.000000.500000.500000.375000.375000.375000.375000.36719bi-ai
1.000000.500000.250000.125000.062500.031250.015620.00781
i
891011121314ai
0.359380.361330.361330.361330.361330.361450.36151bi
0.363280.363280.362300.361820.361570.361570.36157bi-ai
0.003900.001950.000970.000490.000240.000120.00006表1
特征值计算过程
区间(a,b)内的特征值的个数(含特征值的重数)。于是判断矩阵A在区间(a,b)内特征值个数的问题就转化为计算矩阵P(a)和P(b)的惯性指数的问题。算法如下:
(1)对实对称阵P(a)进行LDLT分解得
P(a)=L(a)D(a)LT(a)其中L(a)和D(a)分别为单位下三角阵和对角阵。显然,L(a)是非奇异的(其行列式为1)。
(2)计算对角阵D(a)的正惯性指数,即主对角线上大于0的元素个数;根据文献[6]中的定理1.1.3可知,P(a)和D(a)具
有相同的惯性指数,由此可求得P(a)的正惯性指数Na+
。
(3)对P(b)进行LDLT分解,求得P(b)的正惯性指数Nb+
;Na+
-Nb+
即为矩阵A在区间
(a,b)内的特征值个数。值得注意的是,当a或b等于A的某个特征值时,对P(a)
或P(b)的LDLT分解将会失败,因为此时P(a)或P(b)的顺序主子式会出现0。这时应适当调整原来指定的区间重新计算。
4计算实对称矩阵特征值的算法
设矩阵A在指定区间(a,b)内的特征值个数为k,取区间
中点c=a+b2
,经计算得(a,c)内的特征值个数为k1,(c,b)内的
特征值个数为k2,k=k1+k2。若k1=0,则放弃区间(a,c);若k1>0则令a1=a,b1=c,再计算区间(a1,b1)内的特征值个数。重复上述过程,直至区间(ai,bi)内的特征值个数ki>0且|bi-ai|<ε(其中ε为预定计算精度),则取ai+bi2
作为矩阵A的一个特征值,其重
数近似为区间(ai,bi)内的特征值个数ki。上述算法的流程如图
1所示。
要计算区间(a,b)内的所有特征值,就要遍历对分得到的
所有包含特征值的子区间。记录这些子区间的端点是极其繁琐的。为此,可利用函数递归调用的方式自动保存这些参数。设利用LDLT分解求对称矩阵P(x)=A-xI的正惯性指数的函数为nx=inertia_pos(A,x),则计算实对称矩阵A在区间(a,b)内所有特征值的递归算法如下:
functioneig_ldl
(A,a,b,na,nb,ε)c=(a+b)/2//区间对分
if|b-a|<εthen//精度达到要求
fori=1to|na-nb|
outputc//输出特征值,重数为|na-nb|else//精度未达到要求
nc=inertia_pos
(A,c)//计算区间中点的正惯性指数ifna≠ncthen//
(a,c)内有特征值calleig_ldl
(A,a,c,na,nc,ε)//递归,计算(a,c)内的特征值ifnb≠ncthen//
(c,b)内有特征值calleig_ldl
(A,c,b,nc,nb,ε)//递归,计算(c,b)内的特征值return
在函数eig_ldl中将区间端点的正惯性指数作为参数记忆
和传递,是为了避免递归时在同一端点上重复进行LDLT分解。上述算法保证每次调用产生新的、必要的子区间,并且在新产生的两个子区间的公共端点处只进行一次LDLT分解。
主程序中需要预先计算矩阵P(x)在初始区间端点处的正惯性指数,算法如下:
functioneig_ldl_main(A,a,b,ε)na=inertia_pos(A,a)nb=inertia_pos
(A,b)calleig_ldl(A,a,b,na,nb,ε)return
可见,实现上述递归算法的程序是非常简洁的。根据矩阵特征值估计理论[8],利用上述算法可以求得实对称矩阵A的所
有特征值。
5算法性能分析及测试验证
5.1算法的复杂度
设A∈Rn×n
,初始区间为(a,b),精度为ε。采用对分法找到
(a,b)内的某个特征值理论上需要对初始区间分割N=[lbb-a
ε
]+
1次,进行LDLT分解的次数约为[lbb-a
ε
]+3次
(包括端点a,b)。
可见,精度每提高一个数量级,只需增加3 ̄4次对分。例如,随机取对称矩阵:
A=4202210590554294#
$$$$$$$$$$%
&’
’
’’
’
’
’
’’
’(
9其特征值为0.36154,1.94409,4.24516,21.44920。
若用上述算法在(0,1)内计算特征值,精度取10-4。计算过
程如表1所示(其中Na+-Nb+
=1)。
由表1可知,最终得到的特征值为(a14+b14)/2=0.36154,与实际值相比达到指定精度。理论上的分割次数为N=[lb104]+1=
14,实际分割次数也是14。
若要求出(a,b)内的所有k个特征值,最坏情况下约需kN
给a,b,ε赋初值对P(a),P(b)做LDLT分
解求得Na+
和Nb
+
调整a,b
分解失败?
Na+
=Nb+
?
|b-a|<ε
?令a=(b+a)/2或b=(a+b)/2
特征值"≈(a+b)/2重数为Na+
-Nb
+
Y
Y
NN
N
Y
图1算法流程图注:调整a,b的方法是:若P(a)分解失败则令a=a-δ(δ充分小);若P(b)分解失败则令b=b+δ。若Na+
=Nb+
(即该区间内无特征值)则更换为由对分生成的其它子区间。
张鹍,张有志:基于LDLT分解求实对称矩阵特征值的递归算法
79
2008,44(3)ComputerEngineeringandApplications计算机工程与应用
双音节词这些产业类型母亲法语四万只有成为显示衰老平均值
传统算法3.53.03.04.52.52.53.52.54.54.03.35
本文算法3.54.04.03.53.52.53.54.04.54.03.7
传统算法1.99
-1.563.98-3.26-3.94-1.310.303.640.31-1.46-0.131
本文算法
3.761.404.19-5.626.862.311.373.650.40-0.491.783
MOSSNR/dB
表1两种频谱平滑方法的MOS得分和信噪比(SNR)
以看到,共振峰的不连续情况得到了较大的改善,音节间的共振峰实现了较为平滑的过渡。
为了与传统的频谱平滑算法进行比较,也使用了基于语音的源-滤波器模型的频谱平滑算法对这10个双音节词进行了实验。并将这2种方法在MOS得分和信噪比(SNR)方面进行了对比,如表1所示。
4结论
通过在主观听音和客观评价两方面与传统算法的比较,频
谱平滑算法显示出了较好的特性,使合成语音的频谱得到了较好的修正,同时其音质没有明显的下降。
然而,由于算法需要进行FFT计算,因此,其计算量比传统方法有所增加。
在语音频谱平滑算法的研究中还有很多问题需要更好的解决方法。例如:如何找到一种更加准确而简洁的方法对语音的频谱进行表示,如何更加自然的从源语音帧的频谱向目标语音帧的频谱进行过渡等,这些问题是今后进一步研究的方向。(收稿日期:2007年8月)
参考文献:
[1]QuatieriTF.Discrete-timespeechsignalprocessing:principlesand
practice[M].Beijing:PublishingHouseofElectronicsIndustry,2004.[2]PfitzingerHR.DFW-basedspectralsmoothingforconcatenative
speechsynthesis[C]//ProcICSLP2004,Korea,2004:1397-1400.
[3]WoutersJ,MaconMW.Controlofspectraldynamicsinconcatena-
tivespeechsynthesis[J].IEEETransonSpeechandAudioProcess-
ing,2001,9
(1):30-38.[4]KangH,LiuWenju.Sinusoidalall-polemodificationbasedspectral
smoothingforconcatenativespeechsynthesis[C]//NaturalLanguage
ProcessingandKnowledgeEngineering,IEEENLP-KE’
05,2005.[5]WoutersJ,MaconMW.Spectralmodificationforconcatenative
speechsynthesis[C]//Acoustics,Speech,andSignalProcessing2000ICASSP’00,Proceedings2000IEEEInternationalConference,2000,2:941-944.
[6]蔡莲红,黄德智,蔡锐.现代语音技术基础与应用[M].北京:清华大
学出版社,2003.
[7]清华大学计算机科学与技术系.语音合成语料库TH-CoSS技术报
告[R].北京:清华大学,2003.
(上接71页)
次分割(与特征值在该区间内的分布有关,特征值越密集或有重特征值时每次迭代划分的子区间越少)。可以证明,当矩阵阶数n足够大时,一次LDLT分解约需n3/6次乘除法。每次分割要进行一次LDLT分解,因此,求出所有k个特征值需要的乘除法次数大约为kNn3/6。
5.2算法的有效性从算法的推导可以看出,该算法可以完成指定精度的特征值的计算。在对称阵A存在重特征值或特征值比较密的情况下,为得到较准确的结果,应该保证足够高的精度。从上面的分析可知,算法的复杂度随精度的提高呈对数特性,故提高精度是可行的。
例如,求A=QTdiag(-1,0,1.0001,1,1,2)Q(Q为一正交阵)的所有特征值。取初始区间为(-2,3),精度为10-3,利用上述算法求得特征值为-0.9999,-0.0002,1.0001,1.0001,1.0001,
1.9999。在此情况下,算法判断A有3重特征值1.000;若精度提高至10-4,则得特征值为-0.99998,0.00001,0.99999,0.99999,
1.00007,1.99998。
此时算法判断A有2重特征值1.0000和1重特征值1.0001。
可见,只要预定精度足够高,该算法就可以求得满足精确要求的特征值。究竟取多高的精度才算合适,应根据实际需要来决定。
5.3算法的稳定性
该算法中,特征值的计算只用到了加法和除以2的运算,运算简单,对误差不敏感;LDLT分解虽然计算相对复杂,但由于只需对对角阵D中对角线元素的符号进行判断,分解过程中的误差对特征值的计算影响不大。
当区间端点靠近实际特征值时,LDLT分解得到的对角阵
D的某些对角元素绝对值很小,在有限精度的情况下容易判断为0,造成惯性指数的计算错误。这时应略微扩展原区间重新计算。
例如,计算A=QTdiag(-1,0,1,1,2)Q(Q为正交矩阵)在(0,2)内的特征值时LDLT分解失败。此时只需将原区间扩展
为(10-6,2+10-6),即可得到正确结果。
理论和实验表明,若成功完成LDLT分解,就能得到满足给定精度要求的结果;当LDLT分解失败时,微调区间端点,也能获得正确结果。
6结论
本文设计的利用LDLT分解计算实对称矩阵特征值的递归算法能够判断实对称矩阵在给定区间内特征值的个数,并能计算该区间内的特征值。算法实现简单,稳定性好,提高精度需要的附加运算也不多。(收稿日期:2007年7月)
参考文献:
[1]魏立峰,李晓梅.计算实对称矩阵广义特征值问题的并行算法[J].计
算机工程与应用,2001,37(11):4-5.
[2]HasanMA.Newalgorithmsforcomputingtheminimumeigenpair
ofthegeneralizedsymmetriceigenvalueproblem[C]//2002IEEEIn-ternationalSymposiumonCircuitsandSystemsProceedings,IEEEPress,Phoenix,USA,2002,4:767-770.
[3]HeDa-ke,WangJian-bo.Parallelcomputingofeigenvalueofdou-
blystochasticmatrix[C]//ProceedingsofFifthInternationalConfer-enceonAlgorithmsandArchitecturesforParallelProcessing.Bei-jing,China:IEEEPress,2002:355-358.
[4]LiuYi-guang,YouZhi-sheng,CaoLi-ping.Aconcisefunctional
neuralnetworkcomputingthelargest
(smallest)eigenvalueandonecorrespondingeigenvectorofarealsymmetricmatrix[C]//Proceed-ingsof2005InternationalConferenceonNeuralNetworksandBrain,IEEEPress,Beijing,China,2005:1334-1339.
[5]YangLiu,BouganisCS,CheungPYK,etal.Hardwareefficient
architecturesforeigenvaluecomputation[C]//ProceedingsofDATE’06.Munich,Germany:SiGPublish,2006,1:1-66.
[6]蔡大用,白峰杉.现代科学计算[M].北京:科学出版社,2000.[7]熊全淹,叶明训.线性代数[M].3版.北京:高等教育出版社,1987.[8]程云鹏.矩阵论[M].西安:西北工业大学出版社,2000.
80