multipol (version 1.0-7)

Ops.multipol: Arithmetic ops group methods for multipols

Description

Allows arithmetic operators to be used for multivariate polynomials such as addition, multiplication, and integer powers.

Usage

# S3 method for multipol
Ops(e1, e2 = NULL)
mprod(...,  trim = TRUE , maxorder=NULL)
mplus(...,  trim = TRUE , maxorder=NULL)
 mneg(a,    trim = TRUE , maxorder=NULL)
  mps(a, b, trim = TRUE , maxorder=NULL)
 mpow(a, n, trim = TRUE , maxorder=NULL)

Arguments

e1,e2,a

Multipols; scalars coerced

b

Scalar

n

Integer power

...

Multipols

trim

Boolean, with default TRUE meaning to return a trim()-ed multipol and FALSE meaning not to trim

maxorder

Numeric vector indicating maximum orders of the output [that is, the highest power retained in the multivariate Taylor expansion about rep(0,d)]. Length-one input is recycled to length d; default value of NULL means to return the full result. More details given under taylor()

Author

Robin K. S. Hankin

Details

The function Ops.multipol() passes unary and binary arithmetic operators (“+”, “-”, “*”, and “^”) to the appropriate specialist function.

In multipol.R, these specialist functions all have formal names such as .multipol.prod.scalar() which follow a rigorous pattern; they are not intended for the end user. They are not exported from the namespace as they begin with a dot.

Five conveniently-named functions are provided in the package for the end-user; these offer greater control than the arithmetic command-line operations in that arguments trim or maxorder may be set. They are:

  • mprod() for products,

  • mplus() for addition,

  • mneg() for the negative,

  • mps() for adding a scalar,

  • mpow() for powers.

Addition and multiplication of multivariate polynomials is commutative and associative, to machine precision.

See Also

outer,trim,taylor

Examples

Run this code
a <- as.multipol(matrix(1,4,5))
100+a

f <- as.function(a+1i)
f(5:6)


b <- as.multipol(array(rnorm(12),c(2,3,2)))

f1 <- as.function(b)
f2 <- as.function(b*b)
f3 <- as.function(b^3)    # could have said b*b*b

x <- c(1,pi,exp(1))

f1(x)^2 - f2(x)    #should be zero
f1(x)^3 - f3(x)    #should be zero

x1 <- as.multipol(matrix(1:10,ncol=2))
x2 <- as.multipol(matrix(1:10,nrow=2))
x1+x2

Run the code above in your browser using DataLab