病态矩阵如何求解??
用matlab求解A×x=I的矩阵,A=[-4.7619 4.7619 0 0; 4.7619 -6.5163 1.7544 0; 0 1.7544 -1.7544 0.0000; 0 0 0.0000 -0.0000]
I=[-1;0;1;0];
A是个病态矩阵,虽然A\I的结果差强人意,但是总有warning!另外,用pinv的话,结果差很远!而且,这个A矩阵只是一个简单4×4阵,以后还要遇到比维度更大的矩阵!
求教高手,具体到这类方程该怎么求解?(尤其不要让他提示Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 2.935338e-017.)
我不是数学专业的,只是学习中遇到这样的矩阵运算,请高手帮忙解释清楚,否则我可能读不懂!!
[ 本帖最后由 ChaChing 于 2010-6-17 16:29 编辑 ]
回复:(banditxue)病态矩阵如何求解??
试一下GS迭代或者SOR迭代 教授先生,你所说的GS迭代和SOR迭代是matlab内置的函数么?要不要另外编写了啦??<BR><BR>matlab内部的inv是用什么方法求出来的?用迭代的方法计算阶数比较大的矩阵,会不会导致计算时间太长的问题?????回复:(banditxue)病态矩阵如何求解??
GS迭代和SOR迭代自己写一下,不难<BR><BR>GS迭代时间肯定长,SOR要看你的松弛因子选的怎么样了<BR><BR>inv具体用什么算得还真没仔细看过,你可以调出它的m文件来看看lkc
矩阵A和b存在的微小扰动δA和δb,会引起方程组Ax=b解的很大变化,则称Ax=b为病态方程组,称矩阵A为病态矩阵。若数据没抄错,则A显然是一奇异矩阵,而非病态矩阵,方程组Ax=b不可用x=A\I表示其解,只因A的维数rank(A)=3,其逆不存在,方程组Ax=I有无穷多解.可用迭代法求一解,或先求一特解,再求其基础解系,得全部解.
另外,令B=[-4.7619 4.7619 0;4.7619 -6.5163 1.7544;0 1.7544 -1.7544],记x0=B\I,则方程组Ax=I的解为
x=+',其中t为任意常数.
[ 本帖最后由 ChaChing 于 2010-6-17 16:01 编辑 ]
页:
[1]