作者Arton0306 (没有怎麽办)
看板Programming
标题Re: [问题] 有关矩阵的determine and inverse
时间Mon Oct 16 00:48:01 2006
※ 引述《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)