超定方程最小二乘解 超定方程组最小二乘解课程设计 最小二乘法广泛地应用于工程计算中, 用最小二乘法消除(平滑) 误差, 用最小二乘法从有噪声的数据中提取信号, 从海量数据中找出数据变化的趋势, ……。 甚至利用简单函数计算复杂函数的近似值, 我们并不期望它的近似值多么精确(事实上很多时候也不用很精确) , 尽管如此还是希望计算出的近似数据与原始数据之间有相似之处。 如果从线性代数角度来理解最小二乘法, 实际上是将一个高维空间的向量投影到低维子空间所涉及的工作。 一、 超定方程组的最小二乘解 当方程组 GX=b 的方程数多于未知数个数时, 对应的系数矩阵 G 的行数大于列数, 此时方程组被称为是超定方程组。 设 G=(giu) m× n, 当 m>n 时即所谓的高矩阵, 绝大多数情况下, 超定方程组没有古典意义下的解。 超定方程组的最小二乘解是一种广义解, 是指使残差 r = b – GX 的 2-范数达取极小值的解, 即 | | b　GX*| | 2　minm| | b　GX| | 2 X　R 该问题是一个优化问题。 TT 命题 1: 如果 X*是正规方程组 GGX=Gb 的解, 则 X*是超定方程组 GX=b 的最小二乘解 T 证 由题设可得, G (b – GX*) =0。 对任意 n 维向量 Y, 显然有 (X* – Y) TGT (b – GX*) =0 考虑残差 2-范数平方, 由 | | b　GY| | 2　| | (b　GX) 　G(X2**　Y) | | 2 2 上式右端利用内积, 得 | | b　GY| | 2　| | b　GX2*| | 2　| | G(X2*　Y) | | 2　| | b　GX2*| | 2 2 从而有 | | b – GY | | 2 ≥ | | b – GX*| | 2 等式仅当 Y=X*时成立。 所以 X*是超定方程组 GX=b 的最小二乘解。 TT 命题 2: 如果 X*是超定方程组 GX=b 的最小二乘解, 则 X*满足正规方程组 GGX=Gb 证 由题设, | | b　GX 函数的极小值点 *| | 2　minm| | b　GX| | 2, 利用 2-范数与内积关系, 知 X 是下面二次X　R* 　(X) = (GX, GX) – 2(GX, b) + (b, b) 取任意 n 维向量 v, 对任意实数 t, 构造一元函数 g(t) = 　(X* + t v) 显然, g(t) 是关于变量 t 的二次函数 g(t) = (G (X* + t v) , G (X* + t v) ) – 2(G (X* + t v) , b) + (b, b) = g(0) + 2t [(GX*, Gv) – (Gv, b) ] + t2 (Gv, Gv) 由题设 t=0 是 g(t) 的极小值点。 由极值必要条件, 得 g　(0) 　0。 即 (GX*, Gv) – (Gv, b) =0 将左端整理化简, 便得 (Gv, GX* – b ) =0 利用内积性质, 得 ( v, GT(GX* – b ) ) =0 T 由 v 的任意性, 得 G(GX* – b ) =0 二、 最小二乘解的几何意义 首先考虑一个简单的超定方程组 　2 　3　 　　14　　11　x　　　　　　5　　　3 　y　　　　　2　　　6　　 该方程组的右端向量是三维向量, 系数矩阵的每一列也是三维向量, 但待求的未知向量却是二维向量。 将系数矩阵按列分块, G =[　1, 　2] , 记右端向量为　。 则方程组求解问题可表示为求组合系数 x 和 y 使 x　1 + y　2 = 　 的向量的线性组合问题。 由于两个向量　1, 　2 不构成三维空间的一组基, 所以一般情况下这一问题无解。 而由向量　1, 　2 张成的子空间 span{　1, 　2} 是一张平面, 记为 　。 则超定方程组的最小二乘解实际上是求 X*, 使 GX* 恰好等于　 在平面　上的投影。而最小二乘解所对应的残差向量则垂直于向量 GX*。 事实上, 由正规方程组 GTGX=GTb 得 G(b – GX ) = 0 上式的几何意义可解释为: 最小二乘解的残 差向量与超定方程组的系数矩阵 G 的所有 列向量正交。 从而 T *(X*) T GT (b – GX * ) = 0 所以 (GX *, b – GX * ) = 0 三、 最小二乘解的两种方法 超定方程组的最小二乘解是指正规方程组 GTGX=GTb 的解。 如果系数矩阵(GG) 可逆, 则正规方程组有唯一解。 此时, 最小二乘解可以形式地写为如下形式 T X=(GTG) -1GTb 两种常用的方法如下 1. 用对称矩阵的三角分解法解正规方程组 GGX = Gb; 记 A=GG, 则 A 是对称矩阵, T 由三角分解 A = L D L, 其中 L 是下三角矩阵, D 是对角矩阵。 将这一算法写过三个过程: T①解下三角方程组: LY1 = Gb; ②解对角方程组: DY2 = Y1 ; T③解上三角方程组: LY3 = Y2 2. 用矩阵的 QR 分解直接求解超定方程组 由 QR 分解(正交三角分解) G=QR, 其中 Q 是正交矩阵, R 是上三角矩阵。 将 QR 分解代入最小二乘解表达式中, 得 TTT X=( R T QTQR) -1(QR)Tb = R-1QTb 由此可知, 用分解方法求超定方程组的最小二乘解只需求解上三角方程组 RX=QTb 四、 GPS 定位解算原理 如果不考虑 GPS 接收机钟差, 也不考虑信号传播过程的电离层延迟、 对流层延迟和多径延迟误差, 则 GPS 定位模型为 　 j 　 (x　x) 　(y　y) 　(z　z) , ( j = 1, 2, …, N ) j 2 j 2 j 2 其中, (x, y, z) 为接收机坐标, (x, y, z) 为卫星 Pj 的坐标; 　j 是伪距(实际上可得到的距离观测量) 。 当已知接收机的概略位置 r0 = (x0, y0, z0) 时, 可以用牛顿迭代法结合最小二乘原理实现精确定位。 对模型右边应用 Taylor 级数展开, 并略去高次项,得到 l　x　m　y　n　z　b　L j j j j j j j 其中, 　x　x　x0, 　y　y　y0, 　z　z　z0, l j x　x0 　, mj R j j j j y　y0　, nj R j j j z　z0　 j R j 2 j 2 j L　　 ~j~　R, R 　 (x　x0) 　(y　y0) 　(z　z0) j2 设视界内的卫星数为 N。 将上述方程组写为矩阵形式, 得到 GX=L 其中, X　[　x　y　zb] , L=[L, L, ……, L] 而 T 11NT 　l1　2l　G　　　　N　l　 mm 12 nn 12 　m N 　n N 　1　 　　1　　　　　1　　 用最小二乘法求解超定方程组, 得正规方程 GGX　GL T T 当为矩阵 GG 非奇异时, 其解为 X　(GG) GL T 　1 T T 得定位解 x1　x0　　x, y1　y0　　y , z1　z0　　z 如果概略坐标(x0, y0, z0) 误差较大, 则需要做迭代计算, 以(x1, y1, z1) 代替(x0, y0, z0) 重复上面计算过程。 下面数据来自于 Applied mathematics and computation 119(2001) 21—34 文章题目:Alternative algorithms for the GPS static positioning solution 作者: John B. Lundberg MATLAB 仿真程序(gps0. m) %卫星的坐标, 伪距 xyz=[16414028. 668, 660383. 618, 20932036. 907 16896800. 648, -18784061. 365, -7418318. 856 9339639. 616, -14514964. 658, 20305107. 161 -18335582. 591, -11640868. 305, 15028599. 071 -2077142. 705, -20987755. 987, -15879741. 196 -4957166. 885, -23306741. 039, 12039027. 096 17977519. 820, -13089823. 312, 14331151. 065 9682727. 508, -24060519. 485, 3985404. 530]; ro=[24658975. 31743 22964286. 41228 21338550. 64536 23606547. 29359 24263298. 50401 20758264. 10823 21847468. 81689 20352077. 19349]; P=[0; 0; 0] ; %设定位数据初始值即概略坐标 error=10; k=0; tic %程序运行计时开始 while error>1e-8 %设置定位精度 for j=1:8 Dj=xyz(j, :) -P' ; dj=norm(Dj) ; %计算接收机到第 j 颗卫星向量及其长度 G(j, 1: 3) =Dj/dj; G(j, 4)=-1; L(j, :) =dj-ro(j) ; %计算几何矩阵第 j 行及方程右端值 end b=G\L; %解几何方程 error=abs(b(1:3) ) ; %计算位值修正量绝对值 P=P+b(1: 3) ; k=k+1; %修正定位数据 end toc %程序运行计时结束 format long e X=[P; b(4) ]' %显示满足精度的定位数据 Format 计算结果 elapsed_time = 0. 0160 X = Columns 1 through 3 9. 613338291042342e+005 -5. 674076369901314e+006 2. 740537661301808e+006 Column 4 -3. 600000000248986e+004 数值实验问题 1. 一个测绘员要测量出在某个基准点上三个山头 A、 B、 C 的高度, 首先从基准点处观测, 测得山头高度分别为 x1=1237(ft) 、 x2=1914(ft) 、 x3=2417(ft) 为了进一步确认测量数据。 测绘员爬上第一个山头, 测得第二个山头相对于第一个山头的高度为 711(ft) , 第三个山头相对于第一个山头的高度为 1177(ft) 。 最后它再爬上第二个山头测得第三个山头相对于第二个山头的高度为 475(ft) 。 用最小二乘法处理六个测量数据。 2. 数据拟合的最小二乘方法源于天文学中对行星或慧星这类天体的轨道计算。 1795年, 高斯在计算行星的椭圆轨道时提出并使用了这种方法, 这一方法由勒让德于 1805 年首次公布。 由开普列的研究成果, 行星在其轨道平面上的运行轨迹是一个椭圆, 而椭圆方程 a1x2 + 2a2 xy + a3y2 + a4x + a5y + 1=0 需要由五个参数确定。 原则上只要对行星的位置作 5 次观测就足以确定它的整个轨迹方程。 但由于存在测量误差, 由 5 次观测所确定的轨迹极不可靠, 需要进行多次观测, 用最小二乘法来消除误差, 得到有关轨迹参数的更精确的值。 最小二乘近似将几十次甚至上百次的观察所产生的高维空间问题降维到五参数的椭圆轨迹模型的五维空间处理。 行星位置的 10 个观测点数据如下 利用最小二乘法确定行星的轨道参数, 并确定椭圆方程。 7Ol$z6Nk!y 5Mj#x3K hYv2JgXu1IfWt0GdUr-FcTq) EbSp(D9Qn&B8 Pm%A7Ol$z6Mj #x4LiZw3KhYv 2IfWt0HeVs+G dUr-FbSp(DaRo*C9Qn&B8Ol$ z6Nk!y 5Mj#x4 LhYv2JgXu1IfWt0HeUr-FcTq ) EbSp(DaQn&B 8Pm%A7Ol$z6Nj#x4LiZw3KhY v2JgWt0HeVs+ GdUr-FcTp(DaRo*C9Qn&B8Pm $z6Nk!y5Mj#x 4LiZv2JgXu1IfWt0HeVr-FcT q) EbSp (DaRo& B8Pm%A7Ol$z6Nk!x4LiZw3Kh Yv2JgX u0HeVs +GdUr-FcTq) DaRo*C9Qn&B8P m%z6Nk !y5Mj# x4LiZw2JgXu1IfWt0HeVs+Fc Tq) EbSp(DaRo *C8Pm%A7Ol$z6Nk!y5LiZw3K hYv2Jg Xu1IeV s+GdUr-FcTq) EaRo*C9Qn&B8 Pm%A7Nk!y5Mj #x4LiZw3KgXu1IfWt0HeVs+G dTq) E bSp(DaR o*C9Qm %A7Ol$z6Nk!y5MjZw 3KhYv2JgXu1I fVs+GdUr-FcTq) EbSo*C9Qn& B8Pm%A 7Ol!y5 Mj#x4LiZw3KhYu1IfWt0HeVs +GdUr)EbSp(D aRo*C9Qn%A7Ol$z6Nk!y5Mj# w3KhYv 2JgXu1 IfWt+GdUr-FcTq) EbSp(C9Qn &B8Pm%A7Ol$z 5Mj#x4LiZw3KhYv2IfWt0HeV s+GdUr -EbSp( DaRo*C9Qn&B7 O l$z6Nk!y5Mj #x4KhYv 2JgXu 1IfWt0HdUr-F cTq) EbSp(DaQ n&B8Pm%A7Ol$ z6Mj#x4LiZw3 K hYv2JfWt0He Vs+GdUr -FcSp (DaRo*C9Qn&B8Pl$z6Nk!y5M j#x4LiY v2JgX u1IfWt0HeVr-FcTq) EbSp(Da Rn&B8P m%A7Ol $z6Nk#x4LiZw3KhYv2JgXt0H eVs+Gd Ur-FcT q(DaRo*C9Qn&B8Pm%z6Nk!y5 Mj#x4LiZw2Jg Xu1IfWt0HeVs-FcTq) EbSp(D aRo*B8Pm%A7Ol$z6Nk!y4Li Z w3KhYv2JgXu 1HeVs+G dUr-F cTq) EaRo*C9Q n &B8Pm%A6Nk! y5Mj#x4 LiZw3 JgXu1IfWt0He V s+GcTq) EbSp (DaRo*C 9Pm%A 7Ol$z6Nk!y5M iZw3KhYv2JgX u1IfVs+GdUr- FcTq) EbRo*C9 Q n&B8Pm%A7Ok !y5Mj#x 4LiZw 3KhXu1IfWt0H eVs+GdUq) EbS p(DaRo* C9Qn% A7Ol$z6Nk!y5 M jZw3KhYv2Jg Xu1IfWs+GdUr -FcTq) EbSp*C 9Qn&B8Pm%A7O l$y5Mj#x 4LiZ w3KhYv1IfWt0 H eVs+GdUr-Eb Sp(DaRo* C9Qn &A7Ol$z6Nk!y 5M j#x3KhYv2J gXu1IfWt0GdU r-FcTq) EbSp( D 9Qn&B8Pm%A7 Ol$z6Mj#x4Li Zw3KhYv2JfWt 0HeVs+GdUr-F bSp(DaRo *C9Q n&B8Ol$z6Nk! y5Mj#x4LhYv2 JgXu1IfW t0He Ur-FcTq) EbSp ( DaRn& B8Pm%A7Ol$z6N j#x4 LiZw3KhYv2Jg Wt0HeVs+GdUr -FcTp(Da Ro*C 9Qn&B8Pm$z6N k!y5Mj#x4LiZ v2JgXu1IfWt0 HeVs-FcTq) Eb Sp(DaRo&B8Pm %A7Ol$z6Nk!x 4LiZw3KhYv2J gX u0HeVs+GdU r-FcTq) Da Ro* C9Qn&B8Pm%A6 Nk !y5Mj#x4Li Zw2Jk! x4L iZw 3KhYv2JgXu0H eV s+GdUr-FcTq) DaRo* C9Qn&B8 Pm%z6Nk! y5Mj#x4LiZw2JgXu 1IfWt0HeVs+F cTq) EbSp(DaRo*C8Pm%A7Ol$ z6Nk!y5LiZw3 KhYv2JgXu1HeVs+GdUr-FcTq ) EaRo* C9Qn&B 8Pm%A7Nk! y5Mj#x4LiZw3KgX u1IfWt0HeVs+ GdTq) EbSp(DaRo*C9Qm%A7Ol $z6Nk!y5MiZw 3KhYv2JgXu1IfVs+GdUr-FcT q) EbSo *C9Qn& B8Pm%A7Ol! y5Mj#x4LiZw3Kh Yu1IfW t0HeVs +GdUq) EbSp(DaRo*C9Qn%A7O l$z6Nk ! y5Mj# w3KhYv2JgXu1IfWt+GdUr-Fc Tq) EbSp(C9Qn &B8Pm%A7Ol$z5Mj#x4LiZw3K hYv1If Wt0HeV s+GdUr-EbSp(DaRo*C9Qn&B7 Ol$z6Nk! y5Mj #x4KhYv2JgXu1IfWt0HdUr-F cTq) E bSp(D9Q n&B8Pm%A7Ol$z6Mj#x4LiZw3 KhYv2JfWt0He Vs+GdU r-FcSp(DaRo*C9Qn& B8Pl$z6Nk! y5 Mj#x4LiYv2JgXu1IfWt0HeUr -FcTq) E bSp(D aRn&B8Pm%A7O l$z6Nk#x4LiZ w3KhYv2JgXt0 HeVs+GdUr-FcTq(DaRo*C9Qn &B8Pm% z6Nk! y 5Mj#x4LiZv2JgXu1IfWt0HeV s-FcTq)EbSp( DaRo*B8Pm%A7Ol$z6Nk!y4Li Zw3KhYv 2JgXu 1HeVs+GdUr-F cTq) DaRo*C9Q n&B8Pm% A6Nk! y5Mj#x4LiZw3JgXu1IfWt0He Vs+GcTq) EbSp (DaRo*C9Pm%A7Ol$z6Nk!y5M iZw3KhY v2JgX u1IeVs+GdUr-FcTq) EbRo*C9 Qn&B8P m%A7Ok !y5Mj#x4LiZw3KhXu1IfWt0H eVs+Gd Uq) EbS p(DaRo*C9Qm%A7Ol$z6Nk!y5 MjZw3K hYv2Jg Xu1IfWs+GdUr-FcTq) EbSp*C 9Qn&B8Pm%A7O l$y5Mj#x4LiZw3KhYv1IfWt3 KhYv2JgXu1IfWs+GdUr-FcT q ) EbSp*C9Qn& B8Pm%A7Ol! y5 Mj#x4LiZw3Kh Y u1IfWt0HeVs +GdUr) E bSp(D aRo*C9Qn&A7O l$z6Nk!y5Mj# x3KhYv2JgXu1 IfWt0GdUr-Fc Tq) EbSp(C9Qn &B8Pm%A7Ol$z 5Mj#x4LiZw3K h Yv2IfWt0HeV s+GdUr- FbSp( DaRo*C9Qn&B8 O l$z6Nk!y5Mj #x4KhYv 2JgXu 1IfWt0HdUr-F cTq) EbSp(DaQ n&B8Pm% A7Ol$ z6Nj#x4LiZw3 Kh Yv2JgWt0He Vs+GdUr-FcTp (DaRo*C9Qn&B 8P l$z6Nk!y5M j#x4LiYv 2JgX u1IfWt0HeVr- F cTq) EbSp(Da Ro&B8Pm %A7Ol $z6Nk!x4LiZw 3KhYv2JgXu0H eVs+GdU r-FcT q(DaRo*C9Qn& B 8Pm%z6Nk!y5 Mj#x4LiZ w2Jg Xu1IfWt0HeVs +FcTq) EbSp(D aRo*C8Pm %A7O l$z6Nk!y4LiZ w 3KhYv 2JgXu1HeVs+GdU r-F cTq) EaRo*C9Q n& B8Pm%A7Nk! y5Mj#x4LiZw3 KgXu1IfWt0Hh Yv 2JgXu1HeVs +GdUr-FcTq) E aRo*C9Qn&B8P m%A7Nk!y5Mj# x4LiZw3JgXu1 IfWt0HeVs+Gc Tq ) EbSp(DaRo *C9Pm%A7Ol$z 6Nk!y5MiZw3K hY v2JgXu1IfV s+GdUr-FcTq) EbSo* C9Qn&B8 Pm%A7Ok! y5Mj#x4LiZw3KhXu 1IfWt0HeVs+G dUq) EbSp(DaRo*C9Qn%A7Ol$ z6Nk!y5Mj#w3 KhYv2JgXu1If Ws+GdUr-FcTq ) EbSp* C9Qn&B 8Pm%A7Ol$y5Mj#x4LiZw3KhY v1IfWt0HeVs+ GdUr-EbSp(DaRo*C9Qn&B7Ol $z6Nk!y5Mj#x 3KhYv2JgXu1IfWt0GdUr-FcT q) EbSp (D9Qn& B8Pm%A7Ol$z6Mj#x4LiZw3Kh Yv2JfW t0HeVs +GdUr-FbSp(DaRo*C9Qn&B8O l$z6Nk ! y5Mj# x4LhYv2JgXu1IfWt0HeUr-Fc Tq) EbSp(DaUr -FbSp(DaRo* C 9Qn&B8Ol$z6N k!y5M j#x4LhY v2JgXu1IfWt0 HeUr-FcTq) Eb Sp(Da Qn&B8Pm %A7Ol$z6Nj#x4LiZw3KhYv2J gWt0H eVs+GdU r-FcTp(DaRo * C9Qn&B8Pm$z6 Nk!y5Mj#x4Li Zv2JgX u1IfWt0HeVr-FcTq) EbSp(DaRo&B8 Pm%A7Ol$z6Nk!x4LiZw3KhYv 2JgXu0HeVs+G dUr-FcTq) DaR o *C9Qn&B8Pm% z6Nk!y5Mj#x4 LiZw2JgXu1IfWt0HeVs+FcTq ) EbSp( DaRo*C 8Pm%A7Ol$z6Nk!y5LiZw3KhY v2JgXu1IeVs+ GdUr-FcTq) Ea R o*C9Qn&B8Pm %A7Nk!y 5Mj#x 4LiZw3KgXu1I f Wt0HeVs+GdT q) EbSp( DaRo* C9Qm%A7Ol$z6 N k!y5MjZw3Kh Yv2JgXu1IfVs +GdUr-FcTq) EbSo*C9Qn&EbS p(DaRo* C9Pm% A7Ol$z6Nk!y5MiZw3KhYv2Jg Xu1IfVs+GdUr -FcTq) EbSo*C9Qn&B8Pm%A7O l!y5Mj# x4LiZ w3KhXu1IfWt0HeVs+GdUq) Eb Sp(DaRo *C9Qn %A7Ol$z6Nk!y5Mj#w3KhYv2J gXu1IfW t+GdU r-FcTq) EbSp(C9Qn&B8Pm%A7 Ol$y5Mj#x4LiZw3KhYv1IfW t0HeVs+GdUr- EbSp(Da Ro*C9 Qn&B7Ol$z6Nk !y5Mj#x4KhYv 2JgXu1IfWt0H dUr-FcTq) EbS p (D9Qn&B8Pm% A7Ol$z6Mj#x4 LiZw3KhYv2Jf Wt0HeVs+GdUr -FcSp(Da Ro*C 9Qn&B8Pl$z6N k!y5Mj#x4LhY v2Jg#x4L iZw3 KhYv2JfWt0He Vs+GdUr-FcSp (DaRo*C 9Qn&B 8Ol$z6Nk!y5M j#x4LhYv2JgX u1IfWt0HeUr- FcTq) EbSp(Da R n&B8Pm%A7Ol $z6Nk#x4 LiZw 3KhYv2JgWt0H eVs+GdUr-FcT p(DaRo* C9Qn& B8Pm$z6Nk!y5 M j#x4LiZv2Jg Xu1IfWt0HeVs -FcTq) EbSp(D a Ro*B8Pm%A7O l$z6Nk!x 4LiZ w3KhYv2JgXu0 HeVs+GdUr-Fc Tq) DaRo* C9Qn &B8Pm%A6Nk!y 5M j#x4LiZw3J gXu1IfWt0HeV s+FcTq) EbSp( Da Ro*C 8Pm%A7Ol$z6Nk!y5L iZw3KhYv2JgX u1IeVs+GdUr- FcTq) EbR o*C9 Qn&B8Pm%A7Ok !y 5Mj#x4LiZw 3KgXu1If Wt0H hYv2JgXu1IeV s+GdUr-FcTq) EaRo*C9Qn&B8 Pm%A7Nk!y5Mj #x 4LiZw3KgXu 1IfWt0HeVs+G dTq) EbSp(D