From: Bernard F. <fra...@er...> - 2003-09-06 14:27:48
|
Andrew Nesbit wrote: >Konrad Hinsen <hi...@cn...> writes: > >>On Thursday 04 September 2003 16:42, Andrew Nesbit wrote: >> >> >>>I need a function equivalent to Matlab's sqrtm, i.e., a square root >>>for matrices >>> >[snip] > >>I'd use an eigenvalue decomposition, then take the square root of the >>eigenvalues, and then apply the diagonlization matrix in reverse. If you >>convert to eigenvalues to complex before taking the square root, this will >>work for non-positive-definite matrices, yielding a complex result >> > >Thankyou for the advice. This gives me a good starting point. > >Andrew. > > > The only problem with this approach is that you have to find all the eigenvalues and eigenvectors to get the spectral decomposition. For large, poorly conditioned matrices this can be a source of significant errors, and a lot of work. An alternative, and often faster and more accurate approach is to use a series expansion for the square root. Evaluating the series expansion only requires multiplication. Bernie |