[R] tensor product of equi-spaced B-splines in the unit square

Patrizio Frederic frederic.patrizio at gmail.com
Thu Jul 31 17:18:02 CEST 2008


dear all,
I apologize for a second post on the same subject. I still have the
problem. I'm going to describe the problem in a different setting:
I have 3 matrix A,B,W such that

dim(A) = c(n,M)
dim(B) = c(n,M)
dim(W) = c(M,M)

what I'm searching for is an efficient computation of vector R,
length(R)=n, where

R[i] = \sum_{j=1}^M \sum_{k=1}^M A[i,j]*B[i,k]*W[j,k] # I apologize
for a bit of LaTex code.

I understand this is about tensor products but I can't figure how to
use neither package tensor nor tensorA (I was not trained in tensor
algebra and right now it's too hot in Italy to me for studing a new
topic).

Any suggestion is welcome.

Regards,

Patrizio Frederic

 +-------------------------------------------------
 | Patrizio Frederic
 | Research associate in Statistics,
 | Department of Economics,
 | University of Modena and Reggio Emilia,
 | Via Berengario 51,
 | 41100 Modena, Italy
 |
 | tel:  +39 059 205 6727
 | fax:  +39 059 205 6947
 | mail: patrizio.frederic at unimore.it
 +-------------------------------------------------


2008/7/29 Patrizio Frederic <frederic.patrizio at gmail.com>:
> Dear all,
> I need to compute tensor product of B-spline defined over equi-spaced
> break-points.
> I wrote my own program (it works in a 2-dimensional setting)
>
> library(splines)
> # set the break-points
> Knots   = seq(-1,1,length=10)
> # number of splines
> M       = (length(Knots)-4)^2
> # short cut to splineDesign function
> bspline = function(x) splineDesign(Knots,x,outer.ok = T)
> # bivariate tensor product of bspline
> btens   = function(x) t(bspline(x[1]))%*%bspline(x[2])
> # numebr of points to plot
> ng      = 51
> # create vectors for plotting
> xgr     = seq(-1,1,length=ng)
> xgr2    = expand.grid(xgr,xgr)
> # generate random coef. of linear combination
> bet       = rnorm(M)
> # create matrix for contour-type plot
> Bx      = apply(xgr2,1,btens)
> Bmat    = matrix(t(Bx)%*%bet,ng)
> # plot the result
> contour(xgr,xgr,Bmat)
> persp(xgr,xgr,Bmat,theta=15)
>
> any of you have a better idea (ie more efficient)?
> Thanks in advance,
>
> Patrizio Frederic
>
> +-------------------------------------------------
> | Patrizio Frederic
> | Research associate in Statistics,
> | Department of Economics,
> | University of Modena and Reggio Emilia,
> | Via Berengario 51,
> | 41100 Modena, Italy
> |
> | tel:  +39 059 205 6727
> | fax:  +39 059 205 6947
> | mail: patrizio.frederic at unimore.it
> +-------------------------------------------------
>



More information about the R-help mailing list