看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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 例如上述矩陣,利用高斯消去從左邊往下消,再從右邊往上消 第一行跟第二行因做太多次計算所以數值會差很多, 但是第五行跟第四行誤差就會很小, 有什麼比較好的方法可以減少誤差呢?? -- !!!!!!!!!!!!!簽名檔破530000點擊率啦!!!!!!!!!!!!!!! Fw: [問卦] 電影:決勝21點的機率問題 https://goo.gl/2BpbB7 #1MfN3FgZ (joke)
yeebon: chx64的1/2悖論真的很經典呢07/22 16:41
!!!!!!!!!!!!!!簽名檔破530000點擊率啦!!!!!!!!!!!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.8.169.63 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1512642876.A.BCA.html
hsnuyi: CS開的數值方法會討論 或是數學系的數值線代 網路上有講義 12/07 19:02
school4303: 資工的numerical analysis 中文是數值分析 12/07 19:42
j0958322080: 我有修物理系的沒教到,比較注重解微分方程 12/07 19:47
caras: 讀數值方法 Numerical Method 會講這個 12/07 20:21
caras: 或是把你的程式貼出來讓大家吐槽 12/07 20:22
LPH66: 你應該聽過每次 pivot 時找絕對值最大的列 pivot 12/07 20:26
LPH66: 這就是為了數值穩定度的考慮的選擇 12/07 20:26
j0958322080: 樓上我沒聽過耶,可是如果數值過大也是誤差會很大吧 12/07 22:12
Lipraxde: 挑大的出來當pivot不會讓你越算數字越大吧? 12/07 23:15
LPH66: 我以前貼過一個小例子在 #1EnRlkgw (Prob_Solve) 12/07 23:29
j0958322080: 那這樣還要在裡面加個氣泡排序法? 12/08 09:49
Lipraxde: 挑最大做,順便把順序記下來,應該是可以不用排序吧? 12/08 09:57
j0958322080: 因為目前只有想到照順序做,如果不照順序還沒想到 12/08 11:32
Lipraxde: 那你把大的那行跟你準備要做的那行交換不就好了 12/08 12:39
j0958322080: 是說如果用LU分解來求反矩陣可以避開上述的問題嗎 12/08 13:17
LPH66: LU/LUP 分解跟高斯消去法其實是一體兩面 12/08 13:44
LPH66: 可以說 LU/LUP 就是把高斯消去法給紀錄下來的分解 12/08 13:44
j0958322080: 但是這兩種方法在計算反矩陣我看資料好像都是分開講 12/08 13:57
j0958322080: 然後會說LU分解是算反矩陣的首選 12/08 13:58
Lipraxde: 想要0誤差可以用分數做啊 12/08 14:01
DJWS: 什麼資料這樣寫 可以提供一下嗎? 12/09 12:33
j0958322080: 就是單純要求反矩陣,矩陣數太大誤差就明顯了 12/09 12:42
hsnuyi: ... 出現一堆上古神獸... 12/09 16:10
rex0707: partial-pivoting 12/13 01:08