[SciPy-User] [SciPy-user] Matrix Exponentials For Very Large Sparse Matrices

Burak1327 burak.o.cankurtaran@alumni.uts.edu...
Fri Jan 22 19:58:33 CST 2010


It looks like you are propagating the density on a real-space grid.
Don't know the specifics to your problem, but generally calculating
the exponential of the matrix happens thousands of times for the
whole evolution time, so you need to approximate the exponential with a 
method like Joshua referenced or you will have to let your future 
grandchildren finish the simulation :)

The most simple approximations are polynomial expansions. 
Chebychev polynomials are GREAT, even a 2nd order
Taylor expansion is good enough in a lot of cases, specific to
your type of problem. 

Which leads to actual scipy discussion. I'm no scipy expert, but
the above mentioned methods are probably in the library.

Thanks
Burak


Joshua Stults wrote:
> 
> On Fri, Jan 22, 2010 at 8:24 PM, Dylan Gorman <dgorman@berkeley.edu>
> wrote:
>> Dear Chuck and Joshua,
>>
>> It's a problem in quantum simulation. I'm trying to solve d(rho)/dt =
>> L*rho for a sparse matrix L. L should be symmetric, and in principle I
>> just need to compute (e^L*t)*(rho(0)) or something--not e^(L*t)
>> explicitly.
> 
> If you end up rolling your own, it sounds like 'Method 20: Krylov
> space methods', in 'Nineteen Dubious Ways to Compute the Exponential
> of a Matrix' is for you:
> http://www.cs.cornell.edu/cv/researchpdf/19ways+.pdf
> 
>>
>> Regards,
>> Dylan
>>
>> On Jan 22, 2010, at 5:16 PM, Joshua Stults wrote:
>>
>>> On Fri, Jan 22, 2010 at 8:04 PM, Charles R Harris
>>> <charlesr.harris@gmail.com> wrote:
>>>>
>>>>
>>>> On Fri, Jan 22, 2010 at 5:17 PM, Dylan Gorman
>>>> <dgorman@berkeley.edu> wrote:
>>>>>
>>>>> Hi Folks,
>>>>>
>>>>> I'd like to exponentiate very large sparse matrices with scipy,
>>>>> and I
>>>>> would be very grateful for any suggestions. Currently, I'm running
>>>>> into memory errors exponentiating random matrices of order 10^3x10^3
>>>>> with the standard linalg.expm() routine. However, I suspect that I
>>>>> may
>>>>> realistically be able to handle somewhat larger matrices since the
>>>>> actual matrices I will be using are quite sparse. Ideally, I'd
>>>>> like to
>>>>> be able to exponentiate matrices of size 10^5-10^6 x 10^5 - 10^6.
>>>>> However, there does not seem to be any linalg.sparse.expm()
>>>>> function--
>>>>> is this because there is in fact no advantage to exponentiating
>>>>> sparse
>>>>> matrices? Or would I need to implement something by hand?
>>>>>
>>>>
>>>> Out of curiosity, do the matrices have any special structure? For
>>>> instance,
>>>> are they banded or symmetric? Also, why to you want to exponentiate
>>>> them?
>>>>
>>> Another question: do you need the matrix exponential explicitly, or do
>>> you just need it's action on a vector?
>>>
>>>> Chuck
> 
> Maybe there's something already lurking in Scipy that's appropriate?
> 
> -- 
> Joshua Stults
> Website: http://j-stults.blogspot.com
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
> 
> 

-- 
View this message in context: http://old.nabble.com/Matrix-Exponentials-For-Very-Large-Sparse-Matrices-tp27281924p27282461.html
Sent from the Scipy-User mailing list archive at Nabble.com.



More information about the SciPy-User mailing list