1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#
#
# harmonic.R
#
# $Revision: 1.2 $ $Date: 2004/01/07 08:57:39 $
#
# harmonic()
# Analogue of polynom() for harmonic functions only
#
# -------------------------------------------------------------------
#
harmonic <- function(x,y,n) {
if(missing(n))
stop("the order n must be specified")
n <- as.integer(n)
if(is.na(n) || n <= 0)
stop("n must be a positive integer")
if(n > 3)
stop("Sorry, harmonic() is not implemented for degree > 3")
namex <- deparse(substitute(x))
namey <- deparse(substitute(y))
if(!is.name(substitute(x)))
namex <- paste("(", namex, ")", sep="")
if(!is.name(substitute(y)))
namey <- paste("(", namey, ")", sep="")
switch(n,
{
result <- cbind(x, y)
names <- c(namex, namey)
},
{
result <- cbind(x, y,
x*y, x^2-y^2)
names <- c(namex, namey,
paste("(", namex, ".", namey, ")", sep=""),
paste("(", namex, "^2-", namey, "^2)", sep=""))
},
{
result <- cbind(x, y,
x * y, x^2-y^2,
x^3 - 3 * x * y^2, y^3 - 3 * x^2 * y)
names <- c(namex, namey,
paste("(", namex, ".", namey, ")", sep=""),
paste("(", namex, "^2-", namey, "^2)", sep=""),
paste("(", namex, "^3-3", namex, ".", namey, "^2)",
sep=""),
paste("(", namey, "^3-3", namex, "^2.", namey, ")",
sep="")
)
}
)
dimnames(result) <- list(NULL, names)
return(result)
}
|