投与量を何倍かに増量(減量)した場合、どうなるか。
time_interval <- seq(0, 1, by=0.05) #投与間隔 y0 <- 100 #1回の注射で投与する量 k <- 0.2 #上の関数 y <- function(dose_time, y_start){ return(y_start * exp(-k * dose_time)) } N <- 100 #投与回数 ny <- 2 #初期投与量y0の何倍か blood_conc <- y0 max_conc <- 1 #愚直に計算する for(i in 1:(N - 1)){ blood_conc <- append(blood_conc, y(time_interval, tail(blood_conc, 1))) blood_conc[length(blood_conc)] <- tail(blood_conc, 1) + y0 max_conc <- append(max_conc, which(blood_conc==max(blood_conc))) } plot(blood_conc, ylim=c(0, max(blood_conc)), type="l", xlab="time", ylab="concentration") lines(max_conc, blood_conc[max_conc], lty=2, col=2) #最終的に到達する濃度 #ny倍にする for(i in 1:(N - 1)){ blood_conc <- append(blood_conc, y(time_interval, tail(blood_conc, 1))) blood_conc[length(blood_conc)] <- tail(blood_conc, 1) + ny * y0 max_conc <- append(max_conc, which(blood_conc==max(blood_conc))) } #元に戻す for(i in 1:(N - 1)){ blood_conc <- append(blood_conc, y(time_interval, tail(blood_conc, 1))) blood_conc[length(blood_conc)] <- tail(blood_conc, 1) + y0 max_conc <- append(max_conc, which(blood_conc==max(blood_conc))) } plot(blood_conc, ylim=c(0, max(blood_conc)), type="l", xlab="time", ylab="concentration") lines(max_conc, blood_conc[max_conc], lty=2, col=2) #最終的に到達する濃度