ufuncs, iterators

Barry Smith bsmith at mcs.anl.gov
Thu Aug 18 22:49:29 CDT 2005

  What is x1, x2 and ip?


On Fri, 19 Aug 2005, S V N Vishwanathan wrote:

> Hi!
> >> I am not sure I understand the fine difference. As far as we are
> >> concerned, all the operations which we are doing (point wise addition,
> >> addition, multiplication etc.) are on the linear operator. 
> Barry> Certainly pointwise addition is the same as adding two operators
> Barry> together (PETSc has this with MatAXPY), but what about, for
> Barry> example, pointwise multiply? You could well be correct, but I'd
> Barry> like to see the list and what they correspond to in terms of
> Barry> linear operators, for example row and column sums what do they
> Barry> represent (true they are the multiplication of the matrix (or its
> Barry> transpose) by the vector of all ones, but is that a useful
> Barry> meaning. 
> Well I guess the problem is that we are interested in computing matrices
> of the form K_{ij} where the i, j th entry is 
> exp( -1/2\sigma^{2} ||x_{i} - x_{j}||_{2}^{2}) 
> Here X is a huge matrix (possibly sparse) and x_{i} are the rows of
> X. Of course, in a purist sense this is not linear algebra being applied
> to a linear operator but it makes sense to use pointwise operations to
> compute it. No?
> Sample code:
> n_sq1 = numarray.add.reduce( x1*x1, 1 ) # vector of norm squareds (slightly faster than x1**2)
> n_sq2 = numarray.add.reduce( x2*x2, 1 )
> n_sq = (-0.5/self.sigma2) * numarray.add.outer( n_sq1, n_sq2 ) # matrix of norm squared sums
> res = ip # result (alias)
> numarray.add( ip, n_sq, res )   
> numarray.exp( res, res )
> vishy

More information about the petsc-dev mailing list