# exponentiate.fd: Powers of a functional data ('fd') object In fda: Functional Data Analysis

 exponentiate.fd R Documentation

## Powers of a functional data ('fd') object

### Description

Exponentiate a functional data object where feasible.

### Usage

``````## S3 method for class 'fd'
e1 ^ e2
exponentiate.fd(e1, e2, tolint=.Machine\$double.eps^0.75,
basisobj=e1\$basis,
tolfd=sqrt(.Machine\$double.eps)*
sqrt(sum(e1\$coefs^2)+.Machine\$double.eps)^abs(e2),
maxbasis=NULL, npoints=NULL)
``````

### Arguments

 `e1` object of class 'fd'. `e2` a numeric vector of length 1. `basisobj` reference basis `tolint` if abs(e2-round(e2))

### Details

If e1 has a B-spline basis, this uses the B-spline algorithm.

Otherwise it throws an error unless it finds one of the following special cases:

e2 = 0

Return an `fd` object with a constant basis that is everywhere 1

e2 is a positive integer to within tolint

Multiply e1 by itself e2 times

e2 is positive and e1 has a Fourier basis

e120 <- e1^floor(e2)

outBasis <- e120\$basis

rng <- outBasis\$rangeval

Time <- seq(rng[1], rng[2], npoints)

e1.2 <- predict(e1, Time)^e2

fd1.2 <- smooth.basis(Time, e1.2, outBasis)\$

d1.2 <- (e1.2 - predict(fd1.2, Time))

if(all(abs(d1.2)<tolfd))return(fd1.2)

Else if(outBasis\$nbasis<maxbasis) increase the size of outBasis and try again.

Else write a warning with the max(abs(d1.2)) and return fd1.2.

### Value

A function data object approximating the desired power.

### References

Ramsay, James O., Hooker, Giles, and Graves, Spencer (2009), Functional data analysis with R and Matlab, Springer, New York.

Ramsay, James O., and Silverman, Bernard W. (2005), Functional Data Analysis, 2nd ed., Springer, New York.

Ramsay, James O., and Silverman, Bernard W. (2002), Applied Functional Data Analysis, Springer, New York.

`arithmetic.fd` `basisfd`, `basisfd.product`

### Examples

``````##
## sin^2
##

basis3 <- create.fourier.basis(nbasis=3)
plot(basis3)
# max = sqrt(2), so
# integral of the square of each basis function (from 0 to 1) is 1
integrate(function(x)sin(2*pi*x)^2, 0, 1) # = 0.5

# sin(theta)
fdsin <- fd(c(0,sqrt(0.5),0), basis3)
plot(fdsin)

fdsin2 <- fdsin^2

# check
fdsinsin <- fdsin*fdsin
# sin^2(pi*time) = 0.5*(1-cos(2*pi*theta) basic trig identity
plot(fdsinsin) # good

all.equal(fdsin2, fdsinsin)

par(oldpar)

``````

fda documentation built on May 29, 2024, 11:26 a.m.