24小时热门版块排行榜    

查看: 3278  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

mathstudy

金虫 (正式写手)


[交流] matlab 求解线性方程组Ax=b

x=inv(A)*b;和x=A\b;和迭代法  有什么区别? 前面两个求 A逆 的是基于什么?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tiancanrong

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
如果你要知道inv(A)*b与Gauss 消元法的区别,就要知道计算机运算和你自己用笔算是有区别的。你用笔算可以用分数,理论上是没有误差的;然而计算机运算时受限于数的精度,理论上是有误差的。所以同样的题目,计算机用不同的算法就是误差或效率会有差别。另外说一句,inv(A)也需要很复杂的计算的,Gauss消去法也需要条件的。当然了,由于现在电脑的软硬件都很先进了,一般的方程随便什么方法解都没区别了。
5楼2014-02-08 22:00:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tiancanrong

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
我大致看了一下matlab help,A\b 根据A的情况用到几种不同的算法,如果A是一个方阵,b是一个列向量,此时Ax=b就是你说的线性方程组,\用的算法就是Gauss消去法;如果A不是方阵,那么Ax=b就是一个矩阵方程,其实这时候精确解不一定存在,matlab中的\就用了最小二乘法的思想求了一个近似的x(也可称为广义解),算法是QR分解。

可以这个简单理解,inv(A)*b是A\b的一种特殊情况(线性方程组时),但是A\b更强大,可以求出广义解。
在计算线性方程组Ax=b时,inv(A)*b和A\b用的数值算法都是Gauss消去法。至于你说的效率,A\b由于考虑的情况比较庞大,调用的时候稍微会慢一点,我不认为有质的区别。
7楼2014-02-09 12:15:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tiancanrong

金虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
引用回帖:
8楼: Originally posted by mathstudy at 2014-02-09 19:33:04
谢谢啊.....但是我的运行结果显示  A\b比自己的Gauss程序快很多...

你自己编的Gauss程序,和matlab自带的程序库里的Gauss算法调用的方式应该有区别的,亲儿子当然快一点。另外问一下,你如何测试程序的快慢的?为什么要测试快慢?

[ Last edited by tiancanrong on 2014-2-10 at 12:26 ]
9楼2014-02-10 12:14:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mathstudy 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见