Multivariate polynomials, mvp objects
mvp.RdCreate, test for, and coerce to, mvp objects
Usage
mvp(vars, powers, coeffs)
is_ok_mvp(vars,powers,coeffs)
is.mvp(x)
as.mvp(x)
# S3 method for class 'character'
as.mvp(x)
# S3 method for class 'list'
as.mvp(x)
# S3 method for class 'mpoly'
as.mvp(x)
# S3 method for class 'mvp'
as.mvp(x)
# S3 method for class 'numeric'
as.mvp(x)Details
Function mvp() is the formal creation mechanism for mvp
objects. However, it is not very user-friendly; it is better to use
as.mvp() in day-to-day use.
Function is_ok_mvp() checks for consistency of its arguments.
Note
Interactive development environments such as RStudio may invoke subsetting operations internally for object inspection, particularly the Environment pane. These calls may trigger warnings on the console, typically:
Warning message:
In jj[] <- value :
number of items to replace is not a multiple of replacement length
Such warnings are expected in interactive inspection contexts and do not indicate an error in user code or package functionality. Just ignore them.
Examples
mvp(list("x", c("x","y"), "a", c("y","x")), list(1,1:2,3,c(-1,4)), 1:4)
#> mvp object algebraically equal to
#> 3 a^3 + x + 2 x y^2 + 4 x^4 y^-1
## Note how the terms appear in an arbitrary order, as do
## the symbols within a term.
kahle <- mvp(
vars = split(cbind(letters,letters[c(26,1:25)]),rep(seq_len(26),each=2)),
powers = rep(list(1:2),26),
coeffs = 1:26
)
kahle
#> mvp object algebraically equal to
#> a b^2 + 14 a^2 z + 15 b c^2 + 2 c d^2 + 16 d e^2 + 3 e f^2 + 17 f g^2 + 4 g h^2
#> + 18 h i^2 + 5 i j^2 + 19 j k^2 + 6 k l^2 + 20 l m^2 + 7 m n^2 + 21 n o^2 + 8 o
#> p^2 + 22 p q^2 + 9 q r^2 + 23 r s^2 + 10 s t^2 + 24 t u^2 + 11 u v^2 + 25 v w^2
#> + 12 w x^2 + 26 x y^2 + 13 y z^2
## again note arbitrary order of terms and symbols within a term
## Standard arithmetic rules apply:
a <- as.mvp("1 + 4*x*y + 7*z")
b <- as.mvp("-7*z + 3*x^34 - 2*z*x")
a+b
#> mvp object algebraically equal to
#> 1 + 4 x y - 2 x z + 3 x^34
a*b^2
#> mvp object algebraically equal to
#> 196 x y z^2 + 28 x z^2 + 196 x z^3 + 112 x^2 y z^2 + 4 x^2 z^2 + 28 x^2 z^3 +
#> 16 x^3 y z^2 - 42 x^34 z - 294 x^34 z^2 - 168 x^35 y z - 12 x^35 z - 84 x^35
#> z^2 - 48 x^36 y z + 9 x^68 + 63 x^68 z + 36 x^69 y + 49 z^2 + 343 z^3
(a+b)*(a-b) == a^2-b^2 # should be TRUE
#> [1] TRUE
## variable "xy" is distinct from "x*y":
as.mvp("x + y + xy")^2
#> mvp object algebraically equal to
#> 2 x xy + 2 x y + x^2 + 2 xy y + xy^2 + y^2
as.mvp(paste(state.name[1:5],collapse="+"))^2
#> mvp object algebraically equal to
#> 2 Alabama Alaska + 2 Alabama Arizona + 2 Alabama Arkansas + 2 Alabama
#> California + Alabama^2 + 2 Alaska Arizona + 2 Alaska Arkansas + 2 Alaska
#> California + Alaska^2 + 2 Arizona Arkansas + 2 Arizona California + Arizona^2 +
#> 2 Arkansas California + Arkansas^2 + California^2