Re: [問題] 有關矩陣的determine and inverse
※ 引述《Robert0512 (天天衝浪三國無雙)》之銘言:
: 因為作業關係
: 必須要用到矩陣的determine和inverse
: 但不論算哪一個好像都O(n!) or O(n^2(n-1)!)
: 算10by10就要幾秒鐘了
: 算到13by13已經是分鐘計算了
: 15by15根本就算不出來orz (我等了1小時還沒有出來 哭)
: 請問有比較快的方法嗎?
: 聽說是可以連結matlab
: 但我沒有matlab orz
: 在這跪求有效率的計算方法
: 拜託各位神人了><
: PS 忘了說 我是用C
不知你是不是直接用定義去算
如果是 那會很慢
可以先用高斯消去法把矩陣消成上三角矩陣U 這時候算出對角乘積 即為det
算這個的時候 同時準備一個I
這個I的作用是原矩陣作什麼運算 這個I就作什麼運算
接著再把U變成I
而原本準備的I就變成inverse了
如
1 2 3
4 5 6
7 8 10
準備一個I
1 0 0
0 1 0
0 0 1
開始轉成U
1 2 3
0 -3 -6
0 0 1
det=-3
同時I也作相同的列運算 (第一列* -4加到第二列....等等)
最後
1 2 3
4 5 6
7 8 10
會變成
1 0 0
0 1 0
0 0 1
而I變成的就是inverse
此演算法為n^2
還有 為了不讓浮點數造成錯誤 需排列一下 如
10000000 a b
1 c d
10000 e f
排成
10000000 a b
10000 e f
1 c d
最後記得處理一下就好
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.58.5.192
※ 編輯: Arton0306 來自: 210.58.5.192 (10/16 00:48)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章