病态方程的求解问题
有一个线性方程组Ax=b,本身矩阵A的条件数就很大 cond(A)=1.3451e+20;矩阵A是一个2000*50的系数矩阵。我用求广义逆矩阵的最小二乘法求出的解还可以,很准确,然后分别对矩阵A与向量b加噪声,然后求解,但是误差特别大。采用Hansen教授的Tikhonov正则化工具箱,正则化函数求解。一点改善都没有?请大胜么指教。以下是我采用最小二乘(未加噪)最小二采用x=pinv(A)*b;、加噪(最小二乘),加噪(正则化的结果),然而正则化一点效果都没有,为什么?正则化的的过程采用一下几个函数:=csvd(A); lamnda_l=l_curve(U,s,b); x_tikh_l=tikhonov(U,s,V,b,lamnda_l)是不是噪声加太大了? 雨夜 发表于 2015-9-15 16:25
是不是噪声加太大了?
我认为噪声已经很小了,主要是我要让系数矩阵A和观测向量b 均加噪,是不是在正则化过程中要构造合适的极小泛函?不知你是否遇到过这类问题? 寂寞的部落 发表于 2015-9-15 17:48
我认为噪声已经很小了,主要是我要让系数矩阵A和观测向量b 均加噪,是不是在正则化过程中要构造合适的极 ...
正则化问题可以简单描述为:
其中正则化参数λ ,控制着残差的范数与附加条件之间的权重,λ的选择是否恰当在正则化问题中起着非常重要的作用。
不知道你是否调整过该参数?
弗朗索瓦 发表于 2015-9-16 08:54
正则化问题可以简单描述为:
其中正则化参数λ ,控制着残差的范数与附加条件之间的权重,λ的选择是 ...
我就是依次采用这几个函数=csvd(A); lamnda_l=l_curve(U,s,b);x_tikh_l=tikhonov(U,s,V,b,lamnda_l),利用l_curve函数就是求λ 的,但是求出来怪怪的,图中我也贴出来了。我在怀疑是不是那个正则化二次的最小泛函的公式只适用于等式右端b的扰动?如果两端都扰动的话,要构造合适的正则化子? 寂寞的部落 发表于 2015-9-16 11:41
我就是依次采用这几个函数=csvd(A); lamnda_l=l_curve(U,s,b);x_tikh_l=tikhonov(U,s,V,b,lamnda_l),利 ...
那你就要好好研读一下源代码了,{:{05}:} 寂寞的部落 发表于 2015-9-16 11:41
我就是依次采用这几个函数=csvd(A); lamnda_l=l_curve(U,s,b);x_tikh_l=tikhonov(U,s,V,b,lamnda_l),利 ...
这就没有这么深入研究了,不过相关的书籍还是挺多的,有时间的话可以找来研究研究
页:
[1]