varias superponer studio modificar lineas graficos graficas ggplot ejes r polynomial-math

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