楊秋偉,陳華,周聰,李翠紅
(1.紹興文理學院 土木工程系 浙江 紹興 312000;2. 寧波工程學院 建筑與交通工程學院,浙江 寧波 315211;3. 浙江省土木工程工業化建造工程技術研究中心(寧波工程學院),浙江 寧波 315211)
在測量平差問題中,最小二乘估計是求解線性方程組最常用的方法之一,例如,考慮一個常見的線性估計模型:
y=A·x,
(1)
式中:向量y為已知的觀測向量(m×1維);A為系數矩陣(m×n維列滿秩矩陣);向量x為未知的參數向量(n×1維).利用最小二乘法求解方程(1)的過程如下:
對方程(1)兩邊乘以AT,可得法方程為
z=B·x,
(2)
式中,B=ATA,z=ATy.由方程(2)可得x的最小二乘估計為:
xlse=B-1·z.
(3)
由方程(3)所得的最小二乘解滿足最優線性無偏性,因此最小二乘估計又稱為無偏估計.然而,當線性方程的系數矩陣A存在復共線性時,即A中某些列向量相關度很高時,由方程(3)所得的解可能誤差很大甚至完全失真,這種情況稱為病態最小二乘問題[1-5].為了得到準確的x估值,必須研究其他的穩健算法.
如前所述,針對病態最小二乘問題,學者們已提出各種穩健估計算法.其中,奇異值截斷方法[6-11]是最具代表性的一類方法.這類方法普適性強,既可適用于方程數目大于或等于未知量數目的情況(系數矩陣A列滿秩),也可適用于方程數目小于未知量數目的情況(系數矩陣A行滿秩),還可適用于系數矩陣為虧損矩陣的情況.其理論依據是,在方程組系數矩陣的所有非零奇異值中,較大的奇異值對數據噪聲不敏感,而較小奇異值(接近于0的奇異值)體現了系數矩陣的復共線性,且對數據噪聲很敏感.因此,在方程求解時忽略較小的奇異值而只保留較大的奇異值,相當于一定程度上消除了系數矩陣的復共線性,增強了抵抗數據噪聲干擾的能力,從而可以獲得比較穩定的計算結果.
利用奇異值截斷方法求解線性方程組的過程簡述如下.不失一般性,考慮一個任意的線性方程組如下:
y=C·x.
(4)
與方程(1)不同,方程(4)中的系數矩陣C對矩陣維數和是否滿秩沒有特殊要求.接下來首先對方程(4)中的系數矩陣C做奇異值分解,即
C=UΛVT,
(5)
U=[u1,u2,…],V=[v1,v2,…],
(6)

(7)
式中,σ1,σ2,…,σp為矩陣C的p個非零奇異值,且滿足σ1≥σ2≥…≥σp.方程(5)代入方程(4)中可得x的解為

(8)
由方程(8)可見,越小的奇異值倒數越大,其微小變化將引起解的很大變化.因此,為了提高解的穩定性,在方程(8)中可以舍去較小的奇異值,而只保留較大的奇異值.假設只保留前t個奇異值,t又稱為截斷閾值,則截斷奇異值后所得的解為

(9)
方程(9)即為奇異值截斷方法計算x的公式.顯然,決定該方法計算精度的關鍵是確定合適的截斷閾值t.不少學者就此開展研究工作,代表性的方法有F檢驗法[10],廣義交互確認法(GCV)[12],L曲線法[13]等.但這些方法均需要花費額外的計算量,操作步驟上比較復雜,且容易出現誤判.
鑒于奇異值截斷閾值選擇過程比較復雜,增加的額外計算量較多,有些學者提出了奇異值修正的方法[9,12-16],其核心思想是對較小的奇異值進行適量的修正(增大),從而使得結果更為穩定.這些奇異值修正方法所提的修正公式基本都是分段函數,比如文獻[9]中所提修正公式為

(10)
文獻[14-16]中所用的修正公式為

(11)
顯然,這些修正公式中仍然需要確定一個修正閾值q,來對不同的奇異值選擇相應的修正函數. 確定修正閾值q的計算量仍然與確定截斷閾值t的計算量相當,在應用上仍然不太方便,尤其是對于大規模的線性方程組,計算過程很復雜.因此,本文提出一種新的奇異值修正公式,對所有的非零奇異值都采用同樣的修正公式,形式如下

(12)


(13)
顯然,采用本文所提的奇異值修正公式,并不需要確定任何閾值,基本沒有增加額外的計算量,有利于工程應用.由后繼的數值算例可見,本文方法可以獲得比奇異值截斷法精度更高的計算結果.
以文獻[17]所用的病態平差模型y=A·x為例,驗證所提的奇異值修正法,該方程的系數矩陣A和觀測向量y的真值為

(14)
未知參數向量x的真值為

yc=[-10.178 1, 10.640 4, 1.372 4, 12.05, 13.607 7,-0.112 2, 20.942 2, 1.554, 9.328 6, 12.112 3]T.
采用本文所提奇異值修正法,即利用方程(12)和(13),所得的估值xnew的元素值列于表1中.另外,為了比較本文方法、最小二乘法和截斷奇異值方法,表1中同時給出了最小二乘估計xlse的元素值和取最優截斷閾值t=3時的x估值xt的元素值.為了評估這三種解與真值之間的接近程度,表1中還給出了各個估值與真值之差的2-范數eΔx.

表1 本文方法與最小二乘估計和截斷奇異值方法的比較
由表1可見,最小二乘估計xlse與真值差別很大,已完全失真.而采用本文所提奇異值修正方法,所得結果(xnew)的元素值要比奇異值截斷法(xt)的元素值更準確,且本文方法計算公式十分簡單快捷,并不需要任何額外的運算,方便工程應用.
Hilbert病態矩陣[18]經常用于測試各種穩健估計算法的可靠性,該矩陣由如下公式產生:
(15)
式中,i、j為該矩陣中元素hij的行號和列號.隨著矩陣維數的增大,Hilbert矩陣的病態性也會越來越嚴重.以Hilbert矩陣為系數矩陣,建立線性方程如下:
Hm×n·x=y.
(16)
不失一般性,假設該方程中x的真值取為全部元素等于1的列向量,而觀測向量y取為Hm×n·(1,1,…,1)T.現利用本文方法來對方程(16)進行求解,為了說明所提方法的普適性,考慮三種類型的Hilbert矩陣,分別為:行數大于列數、行數等于列數和行數小于列數,不失一般性,分別取系數矩陣為H30×20、H20×20和H15×20,利用本文方法的計算結果xnew的元素值列于表2中.另外,為了便于比較,表2中也給出了部分最小二乘估計和奇異值截斷解.
由表2的第2和3列可見,系數矩陣取為H30×20時(行數大于列數),即使方程中不含有數據噪聲,用最小二乘法計算的結果xlse的元素值也是完全失真的,因為系數矩陣的病態性相當嚴重,而采用本文方法所得結果與真值高度一致.因此,對于病態非常嚴重的方程組,最小二乘法已完全不能使用,故對于系數矩陣取H20×20和H15×20的情況不再給出最小二乘解.對于后兩種情況,表2的第4和6列分別給出了奇異值截斷法的計算結果xt的元素值,和本文方法計算結果對比發現,奇異值截斷法也能取得較好的精度,但顯然操作步驟上比本文方法更為繁瑣,也增加了額外的計算量.總體而言,本文方法綜合效率最好.
提出了一種統一的奇異值修正公式,以此為基礎提出的奇異值修正法,可用于解決測量平差中的病態最小二乘問題.和現有的奇異值截斷法或修正法相比,所提新方法更簡便快捷,且能獲得比奇異值截斷法精度更高的計算結果.另外,所提方法普適性強,對方程系數矩陣的維數和是否滿秩沒有特殊的要求.以兩個病態方程為例對所提方法進行了驗證,并將計算結果與最小二乘解和奇異值截斷解進行了比較,結果說明了所提方法的有效性和優越性.