24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2205  |  回复: 10

wangxn06

金虫 (正式写手)

[求助] 解线性代数方程组

问题描述:有一个线性方程组AX=b(A是方阵)(系数矩阵A的大小为200*200以上)
                  系数矩阵A 是对称矩阵,对角不占优
                  不同的自由项b所计算得到的剩余残差不同,即的到r=b-AX'的量级上有很大差别。
问题:1:同样的系数矩阵,不同的自由项,为什么得到的残差量级上会有很大的差别,这是不是由于系数矩阵的某些特点引起的——比如说矩阵A的条件数过大?
      2.是否有合适的方法可以使得残差达到比较合适的量级。
         我用过全主元高斯消去法、列主元高斯消去法、并且在全主元高斯消去法的基础上,应用了解的迭代改进法、解对称正定线性方程组的楚列斯基法,但是这些都没有提高解的精确度(这些方法对某些自由向量b,解的结果精度都比较高,但是对某些自由向量b解的精度都不足,而这些自由向量b之间到底有什么差别也不好说)。Sample Text
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

saladin983

铁杆木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
计算残量的话还需要给定x,不然怎么比较不同b时的残量?你是怎么设定x的呢?
2楼2012-01-10 00:21:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)

引用回帖:
: Originally posted by saladin983 at 2012-01-10 00:21:47:
计算残量的话还需要给定x,不然怎么比较不同b时的残量?你是怎么设定x的呢?

我不太明白您的意思,但是我试着按我的理解回答一下。
AX=b,我先用某种解线性代数方程组的方法,比如高斯全主元消去法,得到X的解,比如说为X'. 然后计算AX', 最后残余向量r=b-AX'.
我的问题是,理论而言这个残余向量为0时,计算得到的X'才是这个方程的真解。但是,我在计算的过程中,自由项不同,残余向量的二范数的值差别很大。
对于某些自由向量,残余向量的二范数可达到10e-12的以上
而对有些自由向量,残余向量的二范数只能达到10e-2。
是否有好的方法使得残余向量的二范数尽可能的接近零呢?即,使得得到的解x‘接近真解。
3楼2012-01-10 10:24:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

math2000

铁杆木虫 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
小雨萌萌(金币+1): 3Q~ 2012-01-11 14:53:11
方程组AX=b是不相容的,即没有解,需要解最小二乘解!
因为A是对称矩阵,可以考虑正交分解的方法。
4楼2012-01-10 16:16:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)

引用回帖:
: Originally posted by math2000 at 2012-01-10 16:16:01:
方程组AX=b是不相容的,即没有解,需要解最小二乘解!
因为A是对称矩阵,可以考虑正交分解的方法。

首先方程相容不相容,由系数矩阵阵A的秩以及扩张矩阵的秩的大小有关系,当系数矩阵的秩小于扩展矩阵的秩的时候,方程组不相容。
首先假设是不相容的,这意味着,矩阵A肯定是不满秩的。这个或许我可以试试。
但是问题又出来了,如果矩阵不满秩,意味着矩阵A奇异,那么不管自由项是什么,方程组都得不到唯一的解。但是,我的问题中,在某些自由项下,还是可以有很好的结果的。所以,方程组不可能是不相容的。

同时,您提到了正交分解法,我想问一下这个方法相比其他方法有什么优点,是否从理论上可以使得得到的解x'更加接近真解。
非常感谢!
5楼2012-01-10 17:01:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

saladin983

铁杆木虫 (正式写手)


小雨萌萌(金币+1): 谢谢应助啊~ 2012-01-11 14:53:27
引用回帖:
3楼: Originally posted by wangxn06 at 2012-01-10 04:24:06:
我不太明白您的意思,但是我试着按我的理解回答一下。
AX=b,我先用某种解线性代数方程组的方法,比如高斯全主元消去法,得到X的解,比如说为X'. 然后计算AX', 最后残余向量r=b-AX'.
我的问题是,理论而言这个 ...

习惯性地套用迭代法的思维了……

你可以试试解Ay=r,然后用x+y作为解。还不行的话,多重复几次,或许能得到比较理想的解。很可能是系数矩阵条件数比较大,对误差敏感。
6楼2012-01-11 03:22:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)

引用回帖:
: Originally posted by saladin983 at 2012-01-11 03:22:46:
习惯性地套用迭代法的思维了……

你可以试试解Ay=r,然后用x+y作为解。还不行的话,多重复几次,或许能得到比较理想的解。很可能是系数矩阵条件数比较大,对误差敏感。

你讲的迭代法我也试过,没有多大的改变。最主要的是,我有一点想不通,如果系数矩阵的条件数真的很大,那为什么在有些自由向量b下,得到的结果比较理想,而在另外一些自由向量b下,结果不理想呢
7楼2012-01-11 11:37:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

saladin983

铁杆木虫 (正式写手)

引用回帖:
7楼: Originally posted by wangxn06 at 2012-01-11 05:37:30:
你讲的迭代法我也试过,没有多大的改变。最主要的是,我有一点想不通,如果系数矩阵的条件数真的很大,那为什么在有些自由向量b下,得到的结果比较理想,而在另外一些自由向量b下,结果不理想呢

如果使用迭代法的话,可以利用preconditioning来改善条件数,具体的需要从系数矩阵的特性来考虑,常用的比如iLU。

关于后面一个问题,我想我们可以打个比方考虑这样的情况:系数矩阵有很小的特征值lambda(接近于0),而右端向量非常接近于这个特征值对应的特征向量,那么求解之后的x约为这个特征向量乘以lambda的倒数(非常大),同时误差也会被lambda的倒数放大得很厉害。如果右端向量与lambda对应的特征向量垂直的话,就不会有这样的问题。

你的例子里是什么情况我不清楚,但是现实问题中右端向量往往不是随意的,尤其在求解偏微分方程的时候,右端向量常常包含一定的特征空间的信息。不知这样说对解释你遇到的问题是否有所启示?
8楼2012-01-12 00:14:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangxn06

金虫 (正式写手)

引用回帖:
: Originally posted by saladin983 at 2012-01-12 00:14:37:
如果使用迭代法的话,可以利用preconditioning来改善条件数,具体的需要从系数矩阵的特性来考虑,常用的比如iLU。

关于后面一个问题,我想我们可以打个比方考虑这样的情况:系数矩阵有很小的特征值lambda(接 ...

我试着说说你的意思:
x1为系数矩阵的特征向量,α为x1对应的特征值。 即有:Ax1=αx1
同时有 Ax=b
如果b和x1接近,可以近似有Ab=αb
因此有Ab=αAx
固有b=αx
因此x-b/α
不知道 您是不是这个意思。
9楼2012-01-12 10:24:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

saladin983

铁杆木虫 (正式写手)

引用回帖:
9楼: Originally posted by wangxn06 at 2012-01-12 04:24:50:
我试着说说你的意思:
x1为系数矩阵的特征向量,α为x1对应的特征值。 即有:Ax1=αx1
同时有 Ax=b
如果b和x1接近,可以近似有Ab=αb
因此有Ab=αAx
固有b=αx
因此x-b/α
不知道 您是不是这个意思。

应该这样写:

若A b ~= α b (b近似于α对应的特征向量), 则 x = A^{-1} b ~= b/α 。
10楼2012-01-12 17:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangxn06 的主题更新
信息提示
请填处理意见