我有一个线性系统要解决,写成Ax = b A是175乘175对称的正方形,其对角线(即aii = 1),其他条目的范围从0到1(即0)
A病情很严重,而且不是肯定的,其等级为162,其病情数为3.5869e + 16
我花了几天时间在MATLAB中解决这个问题,我已经尝试了几乎所有我能找到的方法,包括\,pcg,bicg,bicgstab,bicgstabl,cgs,gmres,lsqr,minres,qmr,symmlq,tfqmr 这些方法给了我一些解决方案。但我不知道如何信任他们,或者信任哪种解决方案。有确定的标准吗?
我会感谢能够给我一个值得信任的解决方案的人。 谢谢!
A和b存储在.mat文件中,可以从Dropbox链接下载:
https://www.dropbox.com/s/s6xlbq68juqs6xi/A.mat?dl=0
https://www.dropbox.com/s/pxl0hdup20hf2lr/b.mat?dl=0
像这样使用:
负载(' A.mat&#39);
负载(' b.mat&#39);
x = A \ b;
答案 0 :(得分:3)
不确定这是否会有所帮助,但请试一试:
基本上,当由于病态而难以计算以下内容时:
您最小化以下内容
成为\ Gamma通常是单位矩阵。
最后,您得到x的以下等式:
除此之外,您通常还需要添加一个"超参数"来控制您将问题规范化的程度。所以\ Gamma而不仅仅是单位矩阵,它将是一个数字(即0.001)乘以size(A)
的单位矩阵。
在Matlab中尝试最后的等式应该很简单。试一试。
注意:这不是答案。实际上可能没有解决病态问题的独特答案。这只是一种方法。