嗨,大家好,我在我的ODE系列中遇到了一個我的方程式問題。我有兩個完全相同的方程,然而他們出現了非常不同的答案。我的方程式給出不同的答案有什麼原因嗎? 這兩個方程是管理e和r的方程。相同ODE方程的作用不同
library(sigmoid)
parameters <- c(
a = 0.032,
b = (9/140),
c = (5/1400),
d = (95/700),
k = 1/140,
i = 0.25,
# r = 0.2,
n = 6000000,
x = 0.5 ,
y = 0.25,
t = 1/180, # important in looking at the shape
u = 1/180, # important in looking at the shape
v = 1/180, # important in looking at the shape
p = 10,
s = 100,
g = 100
# e = .4,
#h = 1000
)
state <- c(
S = 5989900,
E = 0,
I = 0,
Q = 0,
D = 100,
B = 0,
C = 100,
Y = 100,
H = 100,
R = 10,
J = 10,
h = 100,
e = 0.1,
r = 0.1
)
# Function will transition between 0 and 1 when h and Q are approximately
equal
smooth.transition <- function(h, Q, tune = 0.01){
sigmoid((h/Q - 1)/tune)
}
Q <- 1
h <- seq(0.001, 5, by = 0.001)
plot(h/Q, j, type = "l")
# set up the equations
equation <- (function(t, state, parameters)
with(as.list(c(state, parameters)), {
# rate of change
dS <- (-(a * S * I)/n) - (((1/r) * S * D)/n)
dE <- (a * S * I)/n + (((1/r) * S * D)/n) - i * E
j <- smooth.transition(h, Q)
dI <- i * (j) * E - (e) * I - c * I - d * I
dQ <- (j) * (e) * I - b * Q - k * Q
dD <- d * I - r * D
dB <- b * Q + r * D
dC <- c * I + k * Q
dY <- p * (b * Q + r * D)
dR <- j*(1 - x - y) * (p * (b * Q + r * D)) - j*t * (R)
de <- j*t * (s/R)
dJ <- (y) * (p * (b * Q + r * D)) - v * (J)
dr <- v * (s/J)
dH <- (x) * (p * (b * Q + r * D)) - u * (H)
dh <- u * (H/g)
# return the rate of change
list(c(dS, dE, dI, dQ, dD, dB, dC, dY, dR, de, dJ, dr, dH, dh))
}))
#
# solve the equations for certain starting parameters
library(deSolve)
times <- seq(0, 200, by = 1)
out <-
ode(y = state,
times = times,
func = equation,
parms = parameters,
maxsteps = 1e5
)
# , method = "vode"
head(out)
tail(out)
# graph the results
par(oma = c(0, 0, 3, 0))
plot(out, xlab = "Time", ylab = "People")
#plot(out[, "X"], out[, "Z"], pch = ".")
mtext(outer = TRUE, side = 3, "Ebola Model",cex = 1.5
)
我得到了R,E,J和r初始迭代:
R: 10, 10.05540, 10.11050
e: 0.1, 59, 138
J: 10, 39, 79
r: 0.1, 0.105, 0.11
J和8r被表現得像我希望他們採取行動,而R和E都沒有。任何人都可以在我的編碼中看到問題。我認爲我的數學是堅實的。
你是什麼意思 「初始迭代」?早期的模型解決方案?你如何期望你的變量行爲? PS您可以刪除Q和h以及相鄰繪圖功能的定義。這只是爲了向你展示平滑函數的外觀。 – Lyngbakr
我希望至少我改變參數,R和J的行爲相同,因此作爲e和r是J和R的衍生物也應該是相同的 – angusr
我有點困惑。 dR和dJ的定義並不相同,爲什麼它們的表現會一樣呢? – Lyngbakr