[问题] 高斯消去求反矩阵

楼主: j0958322080 (Tidus)   2017-12-07 18:34:32
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
NO
问题(Question):
在使用高斯消去求反矩阵时,如果遇到很多无穷小数的加减,
那算出来整个数值就会跟正确的差很多
喂入的资料(Input):
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
例如上述矩阵,利用高斯消去从左边往下消,再从右边往上消
第一行跟第二行因做太多次计算所以数值会差很多,
但是第五行跟第四行误差就会很小,
有什么比较好的方法可以减少误差呢??
作者: yeebon   2016-07-22 16:41:00
chx64的1/2悖论真的很经典呢
作者: hsnuyi (羊咩咩~)   2017-12-07 19:02:00
CS开的数值方法会讨论 或是数学系的数值线代 网络上有讲义
作者: school4303 (某爬虫类)   2017-12-07 19:42:00
资工的numerical analysis 中文是数值分析
楼主: j0958322080 (Tidus)   2017-12-07 19:47:00
我有修物理系的没教到,比较注重解微分方程
作者: caras   2017-12-07 20:21:00
读数值方法 Numerical Method 会讲这个或是把你的程式贴出来让大家吐槽
作者: LPH66 (-6.2598534e+18f)   2017-12-07 20:26:00
你应该听过每次 pivot 时找绝对值最大的列 pivot这就是为了数值稳定度的考虑的选择
楼主: j0958322080 (Tidus)   2017-12-07 22:12:00
楼上我没听过耶,可是如果数值过大也是误差会很大吧
作者: Lipraxde (Lipraxde)   2017-12-07 23:15:00
挑大的出来当pivot不会让你越算数字越大吧?
作者: LPH66 (-6.2598534e+18f)   2017-12-07 23:29:00
我以前贴过一个小例子在 #1EnRlkgw (Prob_Solve)
楼主: j0958322080 (Tidus)   2017-12-08 09:49:00
那这样还要在里面加个气泡排序法?
作者: Lipraxde (Lipraxde)   2017-12-08 09:57:00
挑最大做,顺便把顺序记下来,应该是可以不用排序吧?
楼主: j0958322080 (Tidus)   2017-12-08 11:32:00
因为目前只有想到照顺序做,如果不照顺序还没想到
作者: Lipraxde (Lipraxde)   2017-12-08 12:39:00
那你把大的那行跟你准备要做的那行交换不就好了
楼主: j0958322080 (Tidus)   2017-12-08 13:17:00
是说如果用LU分解来求反矩阵可以避开上述的问题吗
作者: LPH66 (-6.2598534e+18f)   2017-12-08 13:44:00
LU/LUP 分解跟高斯消去法其实是一体两面可以说 LU/LUP 就是把高斯消去法给纪录下来的分解
楼主: j0958322080 (Tidus)   2017-12-08 13:57:00
但是这两种方法在计算反矩阵我看资料好像都是分开讲然后会说LU分解是算反矩阵的首选
作者: Lipraxde (Lipraxde)   2017-12-08 14:01:00
想要0误差可以用分数做啊
作者: DJWS (...)   2017-12-09 12:33:00
什么资料这样写 可以提供一下吗?
楼主: j0958322080 (Tidus)   2017-12-09 12:42:00
就是单纯要求反矩阵,矩阵数太大误差就明显了
作者: hsnuyi (羊咩咩~)   2017-12-09 16:10:00
... 出现一堆上古神兽...
作者: rex0707 (我就是我)   2017-12-13 01:08:00
partial-pivoting

Links booklink

Contact Us: admin [ a t ] ucptt.com