Borrar filtros
Borrar filtros

Calculating exponential of a complex symmetric matrix

3 visualizaciones (últimos 30 días)
Pranav Gupta
Pranav Gupta el 9 de Nov. de 2018
Comentada: Steven Lord el 9 de Nov. de 2018
I work in electron spin resonance spectroscopy, where the differential equation describing the quantum statistical mechanical evolution of a spin ensemble, crudely, has the form dx/dt=Ax, where A is a complex symmetric matrix. Hence the solution is x=exp(At), which necessitates the computation of the exponential of a complex symmetric matrix.
1. I use expm in MATLAB, but don't know the error estimate on MATLAB's answer. Because according to my naive understanding of the scaling and squaring algorithm MATLAB uses, the error should be inversely related to the scaling factor 2^M. Is there a way MATLAB could tell me the error estimate on the answer from expm?
2. Also, if my matrix is very big, how I can make the expm routine work faster? Will a simple-minded parallel pool on MATLAB suffice? Or there are cleverer ways to use multiple cores to save time?
3. This is a math question, but is expm(At) * v (for some vector v) better than calculating the (A+iw)\v for many values of w and then taking a (discrete) Fourier transform of (A+iw)\v to give expm(At)?
4. The nice thing about a complex symmetric matrix A is that it can be written as B+iC, where B and C are both real symmetric. Is there a way I could coax MATLAB into taking advantage of this fact, when it calculates expm(A/2^M) in its scaling and squaring algorithm? Naively speaking, can I write expm(A/2^M)=expm((B+iC)/2^M) and then use the awesomeness of B, C in being real symmetric, to make expm more accurate? Or does MATLAB already do this or something related behind the scenes?
5. This is a general question about MATLAB functions when dealing with big matrices. I know that MATLAB routines are quite fast when there are no for loops. But if I start dealing with 50000*50000 matrices, is it advisable to rip off Fortran LAPACK routines to speed up the calculations, as MATLAB might face memory overload issues? Or there is a quick fix to such a problem in MATLAB and I can save myself the trouble of constructing a FORTRAN code to do the task?
Please pardon my prolixity here. Thanks in advance for your help.
  4 comentarios
John D'Errico
John D'Errico el 9 de Nov. de 2018
As James points out, expm is already going to use all the available cores you have if the matrix is at all large. A quick test just verified that fact on my computer, even for a moderately sized 1Kx1K matrix.
Steven Lord
Steven Lord el 9 de Nov. de 2018
The first two References in the documentation page for the expm function may include some technical information relevant to at least your first question.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Eigenvalues & Eigenvectors en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by