6

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?

nanthini
  • 151
null83
  • 61

2 Answers2

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.

Ludi
  • 185
  • 9