I am considering using an algorithm called Covariance Matrix Adaptation Evolution Strategy (CMA-ES) for global optimization. Part of the algorithm involves taking a square root of a covariance matrix, which requires that the matrix be diagonalized. Since the covariance matrix will be rather large $(N\ge100)$ I am concerned about the computational cost of this square root step. What is the computational complexity for diagonalizing a covariance matrix? Or is there anyway of computing the square root of a matrix without diagonalizing?
Asked
Active
Viewed 9,510 times
2 Answers
4
Probably you should take realization of Singular Value Decomposition algorithm, it's complexity is $O(N^3)$.
Evgeny
- 5,755
2
Partial answer:
You may find many details in this paper: PERFORMANCE AND ACCURACY OF LAPACK’S SYMMETRIC TRIDIAGONAL EIGENSOLVERS. I remember that the QR algorithm is $3bn^3 + O(n^2)$ while the Divide and Conquer algorithm is $O(n^3)$ in the worst case.
Do you need to do this many times? Otherwise a symmetric 1000x1000 matrix should be a matter of a second according to this post.
Unfortunately, I am unaware of an other method to take the square root.