Un paciente recibe una inyección intravenosa de un fármaco con una concentración inicial de \(c_o =100\) mg/L en el plasma. La eliminación del fármaco sigue una cinética de primer orden con una constante de eliminación de \(k=0.2\)
¿Cuál será la concentración del fármaco después de 5 horas?
¿Cuánto tiempo tomará para que la concentración del fármaco se reduzca a 10 mg/L?
¿Cuanto tiempo tomara en bajar la concentración por debajo de 20 mg/L?
Resolviendo una ecuación diferencial de primer orden en R. Ecuación diferencial a resolver: \[\frac{dC}{dt}=−kC\] Donde:
\(C(t)\) es la concentración de un fármaco en el cuerpo.
\(k\) es la constante de eliminación.
\(c_0=100\) mg/L es la concentración inicial.
# Instalar paquete si no está instalado
if (!require("deSolve")) install.packages("deSolve", dependencies=TRUE)
## Loading required package: deSolve
library(deSolve)
# Definir la ecuación diferencial dC/dt = -kC
modelo <- function(t, C, params) {
k <- params["k"] # Constante de eliminación
dCdt <- -k * C # Ecuación diferencial
return(list(dCdt))
}
# Parámetros y condiciones iniciales
params <- c(k = 0.2) # Constante de eliminación
C_inicial <- 100 # Concentración inicial (mg/L)
tiempo <- seq(0, 20, by=0.1) # Intervalo de tiempo
# Resolver la ecuación diferencial
solucion <- ode(y = C_inicial, times = tiempo, func = modelo, parms = params)
# Graficar la solución
plot(solucion[, "time"], solucion[, "1"], type="l", col="blue", lwd=2,
xlab="Tiempo (h)", ylab="Concentración (mg/L)",
main="Eliminación del Fármaco en el Cuerpo")
Si quieres saber la concentración en un tiempo específico (por ejemplo, \(t=10\) horas), puedes usar el siguiente código:
# Encontrar la concentración en t = 10 horas
t_deseado <- 10
C_en_t <- solucion[solucion[, "time"] == t_deseado, "1"]
print(C_en_t)
## 1
## 13.53352
Si quieres resaltar un punto específico en la gráfica, puedes agregar una línea vertical o un punto:
plot(solucion[, "time"], solucion[, "1"], type="l", col="blue", lwd=2,
xlab="Tiempo (h)", ylab="Concentración (mg/L)",
main="Eliminación del Fármaco en el Cuerpo")
# Agregar una línea vertical en t = 10
abline(v=t_deseado, col="red", lty=2)
# Agregar un punto en t = 10
points(t_deseado, C_en_t, col="red", pch=16, cex=1.5)
Si quieres saber en qué momento la concentración baja de 20 mg/L, puedes usar:
# Encontrar todos los valores de tiempo donde la concentración es menor a 20
t_menor_20 <- solucion[solucion[, "1"] < 20, "time"]
print(t_menor_20)
## [1] 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5
## [16] 9.6 9.7 9.8 9.9 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11.0
## [31] 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12.0 12.1 12.2 12.3 12.4 12.5
## [46] 12.6 12.7 12.8 12.9 13.0 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 14.0
## [61] 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 14.9 15.0 15.1 15.2 15.3 15.4 15.5
## [76] 15.6 15.7 15.8 15.9 16.0 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 17.0
## [91] 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 18.0 18.1 18.2 18.3 18.4 18.5
## [106] 18.6 18.7 18.8 18.9 19.0 19.1 19.2 19.3 19.4 19.5 19.6 19.7 19.8 19.9 20.0
Encontrar el primer valor
# Encontrar el primer tiempo en que la concentración es menor a 20
t_menor_20 <- solucion[solucion[, "1"] < 20, "time"][1]
print(t_menor_20)
## [1] 8.1