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

Joshua Stults joshua.stults at gmail.com
Mon Jan 25 22:09:07 EST 2010


On Mon, Jan 25, 2010 at 5:18 PM, Joshua Stults <joshua.stults at gmail.com> wrote:
> On Mon, Jan 25, 2010 at 5:04 PM, Dylan Gorman <dgorman at berkeley.edu> wrote:
>> Joshua,
>>
>> Thanks for the expokit suggestion. I seem to have gotten it installed
>> on my Mac OS X Leopard system. The presentation you linked indicated
>> that I need to change the call to matvec in expokit.f to include n, so
>> I first replaced all instances of 'call matvec(' in expokit.f with
>> 'call matvec(n,', but I'm not sure exactly when this should be done. I
>> then executed:

The expokit site also gives some tips about defining 'matvecs':
http://www.maths.uq.edu.au/expokit/support.html

>>
>> f2py -m expokit -h expokit.pyf expokit.f
>> f2py -c expokit.pyf expokit.f --link-lapack-opt
>>
>> which produced the expokit.so file.
>>
>> However, now I'm trying to reproduce the example given in the
>> presentation you linked, and the call to dmexpv() does not seem to
>> work. It wants a lot of arguments:
>>
>>  >>> from scipy import *
>>  >>> from expokit import dmexpv
>>  >>> dmexpv()
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> TypeError: expokit.dmexpv() takes at least 11 arguments (0 given)
>>
>> The most confusing thing it wants me to pass is matvec, which is
>> apparently an external matrix-vector multiplication function. I can't
>> seem to figure out how to get this function to work. Tthe presentation
>> uses a much simpler call:
>>
>> dmexpv(m, t, v, wsp, iwsp, A)
>>
>> Can you offer any insight into this problem?
>>
>
> Maybe a little, the Krylov methods will require a function that gives
> the action of your matrix on a vector, just like a Krylov method for
> solving a linear system would.  F2py usually does a pretty good job of
> generating doc strings that give all the arguments and their
> dimensions, have you taken a look at
>
> print dmexpv.__doc__
>
> ?
>
>> Thank you,
>> Dylan
>>
>> On Jan 22, 2010, at 6:47 PM, Joshua Stults wrote:
>>
>>> On Fri, Jan 22, 2010 at 8:58 PM, Burak1327
>>> <burak.o.cankurtaran at alumni.uts.edu.au> wrote:
>>>>
>>>>
>>>> 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.
>>>>
>>>
>>> Here's an example of using f2py to compile expokit (see slides 15 -
>>> 21):
>>> http://sf.anu.edu.au/~mhk900/Python_Workshop/short.pdf
>>>
>>> Expokit website: http://www.maths.uq.edu.au/expokit/
>>>
>>> Uses Krylov methods for sparse matrices; these will use more memory
>>> than the polynomial expansion methods that Burak mentioned.
>>>
>
>
> --
> Joshua Stults
> Website: http://j-stults.blogspot.com
>



-- 
Joshua Stults
Website: http://j-stults.blogspot.com



More information about the SciPy-User mailing list