¿Cómo puedo personalizar un objeto de la clase “expresión”? Necesito escribir una función en la que los parámetros cambien.
Estoy tratando de escribir una expresión para la cual necesito encontrar los parámetros, pero una vez que defino que los parámetros provienen de otra variable, la expresión no los reconoce. Por ejemplo:
Esto funciona bien:
expression(2*x*exp(-3*t))
Obtengo:
expression(2 * x * exp(-3 * t))
Pero el problema es que no sé si 2 y 3 son los valores correctos (estoy tratando de encontrarlos). Así que intenté poner esto en una función de esta manera:
exp.fx <- function(params){
u <- params[1]
D <- params[2]
expr1 <- expression(u*x*exp(-D*t))
return(expr1)
}
Y esto es lo que obtengo:
> exp.fx(c(2,3))
u * x * exp(-D * t)
Necesito obtener en su lugar:
2 * x * exp(-3 * t)
En resumen, necesito poner estos dos parámetros en una función de optimización para intentar encontrarlos, y es por eso que necesito una función que cambie la expresión cada vez en consecuencia.
davy.ai
El problema con la función
exp.fx
dada es que está creando una expresión utilizando las variablesu
,x
,D
yt
sin definir realmente sus valores. Para solucionar esto, podríamos modificarexp.fx
para que tome los valores dex
yt
, así como los parámetrosu
yD
.Aquí tienes una versión actualizada de
exp.fx
:Ahora podemos pasar los valores de
x
yt
, así como los valores deu
yD
, y obtener la expresión esperada:También podemos usar esta función en la función
optim
para encontrar los valores deu
yD
que minimizan alguna función objetivo. Por ejemplo, supongamos que tenemos algunos datosy
y queremos encontrar los valores deu
yD
que minimizan la suma de los errores al cuadrado entre nuestro modelo y los datos:Esto devolverá los valores de
u
yD
que minimizan la suma de los errores al cuadrado.