Re: [問題] 降階法
如果只是想要求行列式值的話,
基本上我個人不太建議用降階法或是排列法(行列式值定義),
因為這樣在矩陣變大的時候會很慢!(我的電腦大概10x10以上就感覺得出來了)
用高斯消去法將方陣變成上三角矩陣以後,把主對角線元素全部乘起來就好,
這樣我即使算到20x20都還感覺不出delay...
※ 引述《tyc5116 (累人啊....)》之銘言:
: 請問,降階法用程式該怎麼寫啊,我指的是針對n*n的行列式
: 主要我是要算det值啦
: n*n的動態陣列我搞定了,我用vector of vector弄出來了
: 但對於數學式不知道該怎麼寫(知道原理了)
: 精華區裡面提供的我看不懂他的意思
: 所以我用了一個很傳統的方法表示,以下面例子為例
: 0 1 2
: 3 4 5
: 6 7 8
: det值則為(0*4*8+1*5*6+2*7*3)-(2*4*6+1*3*8+0*7*5)
: ^^^A ^^^B
: 我的方式是擴張該陣列,變成
: 0 1 2 0 1
: 3 4 5 3 4
: 6 7 8 6 7
: 然後一個巢狀迴圈,得到A的值,B的值便是將陣列反轉,再擴張,算出B
: 寫完發現...3*3以上似乎都是對的
: 不過2*2就錯了
: 可見不是一個很好的方法@@
: 有誰可以提供方法嗎.....(因為我精華區的看不懂...@@)
: 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.31.121
推
10/20 20:56, , 1F
10/20 20:56, 1F
→
10/20 21:05, , 2F
10/20 21:05, 2F
推
10/21 03:13, , 3F
10/21 03:13, 3F
推
10/21 09:06, , 4F
10/21 09:06, 4F
→
10/21 09:07, , 5F
10/21 09:07, 5F
→
10/21 09:07, , 6F
10/21 09:07, 6F
推
10/21 11:31, , 7F
10/21 11:31, 7F
→
10/21 11:31, , 8F
10/21 11:31, 8F
回c大,老實說關於這點我也有蠻困擾,在主對角線元素(絕對值)比其他元素大很多時,
Rounding Error(捨入誤差)就會很明顯,所以我儘量都用精確度比較高的Double來算,
有沒有人能提供比較低誤差的撇步呀?
推
10/21 12:22, , 9F
10/21 12:22, 9F
→
10/21 12:23, , 10F
10/21 12:23, 10F
→
10/21 12:24, , 11F
10/21 12:24, 11F
推
10/21 12:27, , 12F
10/21 12:27, 12F
→
10/21 12:27, , 13F
10/21 12:27, 13F
→
10/21 12:28, , 14F
10/21 12:28, 14F
推
10/21 13:50, , 15F
10/21 13:50, 15F
→
10/21 13:51, , 16F
10/21 13:51, 16F
→
10/21 13:51, , 17F
10/21 13:51, 17F
推
10/21 15:28, , 18F
10/21 15:28, 18F
補充:高斯消去法的應用除了求反矩陣、行列式值以外,
也有在解聯立方程式(就是國中學的加減消去法)、最小平方法回歸分析時被用到喔!
→
10/21 15:58, , 19F
10/21 15:58, 19F
→
10/21 15:58, , 20F
10/21 15:58, 20F
推
10/21 17:19, , 21F
10/21 17:19, 21F
※ 編輯: yuchih0519 來自: 118.167.98.181 (10/21 22:10)
討論串 (同標題文章)