t*********g 发帖数: 6 | 1 我现在用cholesky分解去求逆矩阵,发现太慢,那位大侠知道
有没有优于O(n^3)的算法?多谢了。 | g***i 发帖数: 90 | 2 这要看你的matrix的条件了
看来好象是symmetrix positive definite?
【在 t*********g 的大作中提到】 : 我现在用cholesky分解去求逆矩阵,发现太慢,那位大侠知道 : 有没有优于O(n^3)的算法?多谢了。
| t*********g 发帖数: 6 | | q***h 发帖数: 1 | 4 用Numerical Recipe吧。(ft,不知我拼对了没有)
那里的算法基于一种原理很复杂的SVD算法,很快。
给我的感觉:他的算法肯定比n^3快。
【在 t*********g 的大作中提到】 : 是呀,没错。大侠给指点指点吧?
| g***i 发帖数: 90 | 5 用lapack里面的求逆算法
【在 q***h 的大作中提到】 : 用Numerical Recipe吧。(ft,不知我拼对了没有) : 那里的算法基于一种原理很复杂的SVD算法,很快。 : 给我的感觉:他的算法肯定比n^3快。
| r****y 发帖数: 26819 | 6 n^3是求逆算法得复杂度上限了吧
【在 q***h 的大作中提到】 : 用Numerical Recipe吧。(ft,不知我拼对了没有) : 那里的算法基于一种原理很复杂的SVD算法,很快。 : 给我的感觉:他的算法肯定比n^3快。
| t*********g 发帖数: 6 | 7 Thanks a lot. 我找找看!
【在 g***i 的大作中提到】 : 用lapack里面的求逆算法
| t*********g 发帖数: 6 | 8 ok,让我看看。
【在 q***h 的大作中提到】 : 用Numerical Recipe吧。(ft,不知我拼对了没有) : 那里的算法基于一种原理很复杂的SVD算法,很快。 : 给我的感觉:他的算法肯定比n^3快。
| n******t 发帖数: 4406 | 9 no.
【在 r****y 的大作中提到】 : n^3是求逆算法得复杂度上限了吧
| S***y 发帖数: 186 | 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. 我找找看!
|
|