avatar
求矩阵逆的算法# Computation - 科学计算
t*g
1
我现在用cholesky分解去求逆矩阵,发现太慢,那位大侠知道
有没有优于O(n^3)的算法?多谢了。
avatar
g*i
2
这要看你的matrix的条件了
看来好象是symmetrix positive definite?

【在 t*********g 的大作中提到】
: 我现在用cholesky分解去求逆矩阵,发现太慢,那位大侠知道
: 有没有优于O(n^3)的算法?多谢了。

avatar
t*g
3
是呀,没错。大侠给指点指点吧?
avatar
q*h
4
用Numerical Recipe吧。(ft,不知我拼对了没有)
那里的算法基于一种原理很复杂的SVD算法,很快。
给我的感觉:他的算法肯定比n^3快。

【在 t*********g 的大作中提到】
: 是呀,没错。大侠给指点指点吧?
avatar
g*i
5
用lapack里面的求逆算法

【在 q***h 的大作中提到】
: 用Numerical Recipe吧。(ft,不知我拼对了没有)
: 那里的算法基于一种原理很复杂的SVD算法,很快。
: 给我的感觉:他的算法肯定比n^3快。

avatar
r*y
6
n^3是求逆算法得复杂度上限了吧

【在 q***h 的大作中提到】
: 用Numerical Recipe吧。(ft,不知我拼对了没有)
: 那里的算法基于一种原理很复杂的SVD算法,很快。
: 给我的感觉:他的算法肯定比n^3快。

avatar
t*g
7
Thanks a lot. 我找找看!

【在 g***i 的大作中提到】
: 用lapack里面的求逆算法
avatar
t*g
8
ok,让我看看。

【在 q***h 的大作中提到】
: 用Numerical Recipe吧。(ft,不知我拼对了没有)
: 那里的算法基于一种原理很复杂的SVD算法,很快。
: 给我的感觉:他的算法肯定比n^3快。

avatar
n*t
9
no.

【在 r****y 的大作中提到】
: n^3是求逆算法得复杂度上限了吧
avatar
S*y
10
你如果用Fortran, 试试这个:
SUBROUTINE ZGEINV (N,A)
IMPLICIT NONE
INTEGER :: N
COMPLEX*16 :: A(N,N)
INTEGER :: IPIV(N)
INTEGER :: INFO, LWORK
COMPLEX*16, ALLOCATABLE :: WORK(:)
LWORK=N*ILAENV(1,'ZGETRI',' ',N,-1,-1,-1)
ALLOCATE(WORK(LWORK))
CALL ZGETRF(N,N,A,N,IPIV,INFO)
CALL ZGETRI(N,A,N,IPIV,WORK,LWORK,INFO)
DEALLOCATE(WORK)
END SUBROUTINE ZGEINV
这个是算复数矩阵的,如果你是实数矩阵,
把complex*16都换成real*8, ZGE都换成DGE.
当然这个是算普通矩阵的,对于对称正定矩阵,
可能还有更好的方法。
最后,要用LAPACK, 一定要用optimised BLAS,
否则对大矩阵,慢上个3,4倍都很正常。

【在 t*********g 的大作中提到】
: Thanks a lot. 我找找看!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。