2021-10-07

matlab 病态方程——奇异值截断法(杨文采研究员和王振杰博士论文)


前言

对于Hilbert矩阵,当n>10时,最小二乘法解与真实值[1,1,1,1,~,1]差别很大,原因在于Hilbert矩阵存在病态性,其法方程奇异值数量级相差较大。

在数值分析课上,老师希望我们采用不同的方法使得解的差值在1e-4之内。联想到测绘中平差里面对于病态方程求解做过大量的研究,所以尝试采用SVD对此问题求解,但是在复现王振杰博士论文时出现数值不符的问题,本次国庆尝试以失败而告终。在此记录自己的相关代码和问题,以及后续。

文章引用图片出自:王振杰. 大地测量中不适定问题的正则化解法研究[D].中国科学院研究生院(测量与地球物理研究所),2003.

一、Hilbert矩阵matlab代码

代码如下(示例):

n=input('请输入矩阵行数:')
m=input('请输入矩阵列数:')
for i=1:n
       for j=1:m
           a(i,j)=1/(i+j-1);
           x(j,1)=1;
        end
end
l=a*x

二、SVD截断奇异值解法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

%matlab里面奇异值分解代码
[u,s,v]=svd(a)

得到的奇异值降序排列,将较小的奇异值直接赋予0。这样做虽然保留了解中可靠的部分,但是牺牲掉了解的无偏性。


三、杨文采研究员解法

根据奇异值的分布特性,病态问题分成两类,均匀下降型和阶梯型。

在这里插入图片描述

对于均匀下降型奇异值,杨文采研究员提出,提出对大的奇异值进行截断奇异值修正,对小的进行岭估计修正,设t为截断奇异值法保留的最小奇异值门限,q对应小于t的奇异值个数,用以下奇异值进行修正:

在这里插入图片描述

3.1 王振杰博士实验

取n=11,m=9,真值与计算值的差距为3*10e-12,证实该方法的适用性。
在这里插入图片描述

3.2 实验

复现实验时,发现结果与王振杰博士差距很大,可能我对杨文采研究员提出的方法有误解,需要请教老师

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值