[Trilinos-Users] Beginner's problems with PyTrilinos and Anasazi
Marko Budisic
mbudisic at engineering.ucsb.edu
Tue Dec 16 12:10:46 MST 2008
Chris,
I am sorry, I made a typo in my reply. I have rescaled matrix rows with
_row_ sums (not matrix sums). And your computations are right for W
prior to rescaling. After rescaling, the eigenvalues are as posted
before.
Best,
Marko
On Tue, 2008-12-16 at 14:06 -0500, Marko Budisic wrote:
> Hi Chris,
>
> those eigenvalues are right for the matrix W. However, if you look back
> into the code, you'll see that immediately after populating the entries
> of the matrix, I rescale the matrix rows with matrix sums to create a
> row-stochastic matrix. After that eigenvalues are those that I've
> included in my reply to Heidi.
>
> Thanks,
> Marko Budisic
>
>
> On Tue, 2008-12-16 at 11:56 -0700, Baker, Christopher Grover wrote:
> > Marko,
> >
> > If I am correct in reading the code below, the matrix A is:
> > W =
> > (1,1) 1
> > (1,2) 2
> > (1,3) 3
> > (1,5) 2
> > (2,2) 1
> > (2,3) 2
> > (3,3) 1
> > (3,4) 2
> > (4,1) 3
> > (4,4) 1
> > (5,4) 2
> > (5,5) 1
> >
> > or, alternatively:
> >
> > 1 2 3 2
> > 1 2
> > W = 1 2
> > 3 1
> > 2 1
> >
> > According to MATLAB eig() and eigs(), the eigenvalues of this matrix
> > are:
> > 4.3379
> > -0.2754 + 2.7399i
> > -0.2754 - 2.7399i
> > 0.2128
> > 1.0000
> >
> > These are not the same eigenvalues that you list below. Do I have the
> > matrix wrong?
> >
> > Chris
> >
> > On 12/16/08 11:28 AM, "Marko Budisic" <mbudisic at engineering.ucsb.edu>
> > wrote:
> >
> > Hi Heidi,
> >
> > thank you for your reply.
> >
> > Indeed, I have intended to create a 5x5 matrix and the code
> > snippet had
> > a faulty code, probably left over from when I was trying to
> > play with
> > parameters to see if I understood them properly. The line
> >
> > numglobals = nx*nx
> >
> > should be changed to
> >
> > numglobals = nx
> >
> > to get a matrix with 5 rows. The matrix population code is
> > complete.
> > However, this does not resolve the original problem. For
> > additional
> > information, here are eigenvalues of the matrix that I would
> > like to
> > compute (as computed by numpy and numpy.linalg):
> >
> > 1.00000000+0.j
> > -0.01363536+0.59362319j
> > -0.01363536-0.59362319j
> > 0.06893738+0.j
> > 0.33333333+0.j
> >
> > Thank you for your help.
> >
> > Best,
> > Marko
> >
> >
> > On Tue, 2008-12-16 at 11:09 -0700, Thornquist, Heidi K wrote:
> > > Hi Marko,
> > >
> > > Thanks for sending a copy of your code. Upon inspection of
> > the
> > > attached code snippet, it looks like you
> > > are creating a matrix with 25 rows and columns and then only
> > filling
> > > the primary 5x5 block. This gives
> > > the matrix a nullspace of dimension 20. Is this the matrix
> > you meant
> > > to generate, or did you omit some
> > > of the matrix population for brevity? If so, could you
> > include all
> > > the matrix population code.
> > >
> > > Thanks,
> > > Heidi
> > >
> > > ---
> > > Heidi K. Thornquist
> > > Senior Member of Technical Staff
> > > Electrical & Microsystem Modeling
> > > Sandia National Laboratories
> > > P.O. Box 5800, MS 0316
> > > Albuquerque, NM 87185-0316
> > > Phone: (505)284-8426
> > > Fax: (505)284-5451
> > >
> > >
> > >
> > >
> > > On 12/15/08 9:47 PM, "Marko Budisic"
> > <mbudisic at engineering.ucsb.edu>
> > > wrote:
> > >
> > > Dear Trilinos list,
> > >
> > > I would like to use PyTrilinos with Anasazi to
> > compute
> > > eigenvectors of
> > > large non-symmetric sparse matrices. In order to
> > familiarize
> > > myself with
> > > both packages, I tried to build a small example for
> > computing
> > > 1-eigenvector of a probability transition matrix for
> > a random
> > > walk on a
> > > graph. The solver I tried to use was
> > BlockKrylovSchur.
> > >
> > > I managed to successfuly build the matrix in
> > question and even
> > > perform
> > > some basic operations on it (I checked by printing
> > the
> > > matrix). I also
> > > managed to pass the setProblem() sanity test with
> > the
> > > Eigenproblem
> > > object. However, when I try to invoke the solver,
> > the GEES
> > > subroutine
> > > fails which causes the entire code to fail.
> > >
> > > This is the traceback from Python:
> > > ******************
> > > Traceback (most recent call last):
> > > File "src/anasazitest.py", line 56, in <module>
> > > info = mngr.solve()
> > > File
> > >
> > "/usr/lib/python2.5/site-packages/PyTrilinos/Anasazi.py", line
> > > 6456, in solve
> > > return
> > _Anasazi.BlockKrylovSchurSolMgrEpetra_solve(*args)
> > >
> > SystemError: /home/mbudisic/downloads/trilinos-9.0.1/packages/anasazi/src/AnasaziBlockKrylovSchur.hpp:1432:
> > >
> > > Throw number = 1
> > >
> > > Throw test that evaluated to true: info != 0
> > >
> > > Anasazi::BlockKrylovSchur::computeSchurForm(): GEES
> > returned
> > > info != 0.
> > > *******************
> > >
> > > I am guessing that I am mismatching some options,
> > possibly
> > > related to
> > > block size and sizes of auxiliary vectors but I
> > don't know how
> > > to
> > > correct the problem. Below is the relevant source
> > code.
> > >
> > > If anyone could direct me in correcting this
> > problem, I would
> > > be very
> > > thankful. Also, if you have any other suggestions,
> > based on my
> > > code,
> > > those would also be very much appreciated.
> > >
> > > Best,
> > > Marko Budisic
> > >
> > > *********************************
> > > # epetra
> > > nx = 5
> > > numglobals = nx*nx
> > > mycomm = Epetra.SerialComm()
> > > mymap = Epetra.Map( numglobals, 0, mycomm )
> > > W = Epetra.CrsMatrix(Epetra.Copy, mymap, 4)
> > >
> > > # populate matrix
> > > W.InsertGlobalValues( 0, [1.,2.,3.,2.], [0,1,2,4] )
> > > W.InsertGlobalValues( 1, [1.,2.], [1,2] )
> > > W.InsertGlobalValues( 2, [1.,2.], [2,3] )
> > > W.InsertGlobalValues( 3, [3.,1.], [0,3] )
> > > W.InsertGlobalValues( 4, [2.,1.], [3,4] )
> > > W.FillComplete()
> > >
> > > # normalize the matrix
> > > d = Epetra.Vector( W.RowMap() )
> > > W.InvRowSums(d)
> > > W.LeftScale(d)
> > >
> > > print W
> > >
> > > eigs = Anasazi.BasicEigenproblem()
> > > eigs.setA( W )
> > > eigs.setHermitian(False)
> > >
> > > Nev = 1
> > > eigs.setNEV( Nev )
> > >
> > > blocksize = 1
> > > storage = Epetra.MultiVector( W.RowMap() ,
> > blocksize)
> > > eigs.setInitVec(storage)
> > >
> > > print "Problem set:", eigs.setProblem()
> > >
> > > myPL = Teuchos.ParameterList()
> > > myPL.set("Which", "LM")
> > > myPL.set("Block Size",blocksize)
> > > myPL.set("Verbosity", Anasazi.Errors |
> > Anasazi.Warnings | \
> > > Anasazi.FinalSummary )
> > >
> > > mngr = Anasazi.BlockKrylovSchurSolMgr( eigs, myPL )
> > > info = mngr.solve()
> > > print "Problem solved:", info
> > >
> > > x = eigs.getSolution()
> > > print x.Evecs()
> > >
> > > *********************************
> > >
> > >
> > > _______________________________________________
> > > Trilinos-Users mailing list
> > > Trilinos-Users at software.sandia.gov
> > >
> > http://software.sandia.gov/mailman/listinfo/trilinos-users
> > >
> > >
> > > _______________________________________________
> > > Trilinos-Users mailing list
> > > Trilinos-Users at software.sandia.gov
> > > http://software.sandia.gov/mailman/listinfo/trilinos-users
> >
> >
> > _______________________________________________
> > Trilinos-Users mailing list
> > Trilinos-Users at software.sandia.gov
> > http://software.sandia.gov/mailman/listinfo/trilinos-users
> >
> >
> > --------------------------------------
> > Christopher G. Baker, Ph.D.
> > Scalable Algorithms Department (01416)
> > Sandia National Laboratories
> > MS 1320, P.O. Box 5800
> > Albuquerque, NM 87185-1320
> > email: cgbaker at sandia.gov
> > phone: 505-284-6978
> > --------------------------------------
> >
>
>
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> http://software.sandia.gov/mailman/listinfo/trilinos-users
>
More information about the Trilinos-Users
mailing list