作者EdisonX (闭上眼的鱼)
站内Prob_Solve
标题[问题] 高斯消去法流程细节
时间Fri Nov 18 03:34:55 2011
最近有人拿了本书,问里面 matrix 方面的问题,
主要是绕在高斯消去法之探讨,但里面的 code 跟我写得很不一样,
後来先上网找其他人写得怎样,主要也是分这两派 。
关键是在 pivot 选取问题,若为 5*5 矩阵 matrix,
索引值从 0 计起,假设现在正要消 row 2,
该书之作法是
METHOD1
matrix 从第 2 列 (当前列) 开始,一直到第 4 列 (最後一列),
历遍所有元素 (所以是 a[2~4][2~4]),找到最大的元素绝对值,做为 pivot,
假设找到的 pivot 是在 matrix[3][4] 这地方,
那就要做 Rij(2,3)、Cij(2,4),之後再做消去;
如果找到的 pivot < eps,视为此方程组非唯一解。
所以在第 x 列要找 pivot 时,它花费了 x * n 的搜寻时间,
因为此法要找的 pivot 是要 「该列以下的最大元素值」。
这段流程让人意外,
这和我自修看到的高斯消去法整个差很多,在「理论」书上是这麽做
METHOD 2
matrix 一样假设 5*5,索引值从 0 计起,
假设现在消正要消 row 2 (a[row][row],
只要历遍第 2~4 列之第 2 个元素 ( 所以是 a[2][2~4] ),
只要找到 a[2][x] > eps ,就可视为 pivot,进行 Rij(2,x) 即可,
再往後做消去;若找不到 a[2][x] > eps 之 x,视为此方程组非唯一解。
我想问的是,是我想法有问题吗?以 METHOD2 进行是比较容易出包吗?
想了半天还是想不透 METHOD2 是不是有什麽「看不见的缺陷」,
毕竟这两种作法整个在时间上的效能差很多,在此请教各位先进。
最後感谢各位拨冗阅读,也请不吝指教,
小弟感激不尽。
--
If there is no tomorrow,
I want to see u last time.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.177.78.41
※ EdisonX:转录至看板 Math 11/18 03:37
1F:推 FRAXIS:第一个方法会比较Stable.. 但是会很浪费时间 11/18 09:03
2F:→ EdisonX:谢谢 F 大指引方向,感谢 :) 11/18 12:31