Cinética de Eliminación de un Fármaco en el Cuerpo (Orden 1)

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\)

Preguntas:

  • ¿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?

Ejemplo:

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.

¿Encuentre \(C(t)\) para \(t\in[0,20]\) horas, con \(k=0.2\).

# 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")

Obtener la concentración en un tiempo específico

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

Añadir una línea de referencia en la gráfica

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)

Encontrar el tiempo cuando la concentración cae por debajo de un valor dado

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