studio - superponer graficas en r ggplot
Cómo representar polinomios con vectores numéricos en R (3)
La multiplicación polinomial es la convolución de los coeficientes.
convolve(c(2,1),rev(c(-1,3)),type="open")
#[1] -2 5 3
En R, ¿cómo se podría representar expresiones polinomiales y hacer matemáticas polinomiales con los objetos vectoriales numéricos? Por ejemplo:
x1 <- c(2,1) # 2 + x
x2 <- c(-1,3) # -1 + 3*x
Y querer:
x1 * x2 # to return -2 + 5*x + 3*x^2
Nota: respondí una pregunta esta mañana y luego el póster aparentemente la eliminó (por lo que me pregunto si era la tarea). Por lo tanto, vuelvo a publicar la pregunta de memoria.
Uno podría multiplicar los coeficientes directamente usando outer
y luego agregar los resultados
x1 <- c(2,1) # 2 + x
x2 <- c(-1,3) # -1 + 3*x
tmp <- outer(x1, x2)
tapply(tmp, row(tmp) + col(tmp) - 1, sum)
# 1 2 3
#-2 5 3
x1 <- c(2, 1) # 2 + x
x2 <- c(-1, 3, 2) # -1 + 3*x + 2*x^2
tmp <- outer(x1, x2)
tapply(tmp, row(tmp) + col(tmp) - 1, sum) # should give -2 + 5*x + 7*x^2 + 2*x^3
# 1 2 3 4
#-2 5 7 2
como se discutió en los comentarios, el ''-1'' en el código no es necesario. Cuando se me ocurrió la solución que me ayudó, ya que me permitió mapear cada ubicación en la salida de outer
a donde terminaría en el vector final. Si hiciéramos un ''-2'' en su lugar, entonces se mapearía al exponente en x en el polinomio resultante. Pero realmente no lo necesitamos, así que algo como lo siguiente funcionaría igual de bien:
tmp <- outer(x1, x2)
tapply(tmp, row(tmp) + col(tmp), sum)
Usa el paquete polinom:
require(polynom)
# Loading required package: polynom
# From the example for as.polynomial
p <- as.polynomial(c(1,0,3,0))
p
# 1 + 3*x^2
x1 <- c(2,1)
x2 <- c(-1,3)
px1 <- as.polynomial(x1)
px2 <- as.polynomial(x2)
px1*px2
# -2 + 5*x + 3*x^2
prod.p <- .Last.value
str(prod.p)
# Class ''polynomial'' num [1:3] -2 5 3
unclass(prod.p)
# [1] -2 5 3