Integral indefinida en R

Estoy buscando calcular la integral indefinida de una ecuación.

Tengo datos de un acelerómetro que ingresan a R a través de un programa visual en C, y a partir de ahí fue lo suficientemente simple como para crear una ecuación para representar la curva de aceleración. Eso está muy bien, sin embargo, también necesito calcular la velocidad del impacto. Según mi entendimiento de los buenos tiempos de la escuela secundaria, la integral indefinida de mi curva de aceleración producirá la ecuación de la velocidad.

Sé que es bastante fácil realizar una integración numérica con el integrate() función, ¿hay algo que sea comparable para una integral indefinida?

preguntado el 08 de noviembre de 11 a las 12:11

Si te refieres a un simbólico integral indefinida, entonces no. (Pero hay interfaces, por ejemplo, con Yacas ["otro sistema de álgebra computacional"] que podría hacerlo.) Por otro lado, me parece que toda integración numérica es en cierto sentido definida (es decir, para obtener una respuesta tienes que especificar los límites). -

3 Respuestas

library(Ryacas)
x <- Sym("x")
Integrate(sin(x), x)

da

expression(-cos(x))

Una forma alternativa:

yacas("Integrate(x)Sin(x)")

Puedes encontrar la referencia de la función aquí

respondido 08 nov., 11:17

Además de Ryacas, existe el paquete rSymPy, que usa SymPy de Python para CAS. - jthetzel

Como dijo Ben, pruebe el paquete Ryacas para calcular la antiderivada de una función. Pero probablemente debería preguntarse si realmente desea generar una función continua que solo se aproxime a sus datos en primer lugar (errores de ajuste). Me quedaría con la integración numérica de sus datos reales. Tenga en cuenta la incertidumbre en cada punto de datos, por supuesto.

respondido 08 nov., 11:16

Por supuesto, podría colocar una spline suavizante ( stackoverflow.com/questions/7953135/r-perfect-smoothing-curve ) e integrarlo ... - Ben Bolker

¡Gracias a todos por la entrada! Estaba buscando la integral indefinida porque también quería trazar el gráfico Velocidad - Tiempo (para fines visuales ... no tiene que ser increíblemente preciso). Gracias por el dato sobre Yacas, pero no pareció gustarle la función que le pasé (NA es producido por coacción). Supongo que podría integrarme de forma incremental en mi función de aceleración, ya que la velocidad en un punto es igual a la integración de 0 a ese punto, sin embargo, para obtener una curva decente, se requeriría una cantidad sustancial de iteraciones. - user1003131

Si los NA que menciona son informativos en el sentido de que no indican una entrada de aceleración, entonces deben reemplazarse por ceros. Supongamos que tiene los datos en acc.vec y el dispositivo registró a una velocidad de rec_per_sec:

acc.vec[is.na(ac.vec)] <- 0
vel.vec <- cumsum(acc.vec)/recs_per_sec

No creo que construir una curva de mejor ajuste vaya a mejorar su precisión en este caso. Para graficar la velocidad en función del tiempo:

plot(1:length(acc.vec)/recs_per_sec, vel.vec, 
       xlab="Seconds", ylab="Integrated Acceleration = Velocity")

respondido 08 nov., 11:21

¡Gracias por la respuesta! No hay NA en los datos, la entrada del acelerómetro siempre es un valor, nunca he visto un valor de 0 salir de mi búfer. ¡Gracias por la pista de velocidad versus tiempo! ¡Funciona genial! Casi me había dado por vencido, entonces pensé que volvería a visitar aquí una vez más. - user1003131

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.