Stack Overflow em Português Asked by Rafaela on September 27, 2021
Estou usando ode
, do pacote deSolve
para resolver um sistema de EDOs em R, mas recebo o erro:
Error in checkFunc(Func2, times, y, rho) : The number of derivatives returned by func() (2) must equal the length of the initial conditions vector (4)
Meu vetor de retorno tem tamanho 4, como a condição inicial, então não sei qual o problema.
monod = function(t, c, parametros){
# Parametros
um = parametros$um
Ks = parametros$ks
Yx = parametros$Yx
Yp = parametros$Yp
up = parametros$up
Kp = parametros$Kp
# Concentração das espécies
X = c["X"]
P = c["P"]
S = c["S"]
V = c["V"]
# derivadas d/dt
dX = um*S*X/(S+Ks)-(0.7/V)*X #dS/dt
dP = up*S*X/(S+Kp)-(0.7/V)*P #dE/dt
dS = -(1/Yx)*dX-(1/Yp)*dP-(0.7/V)*(S-30) #dC/dt
dV = 0.7 #dV/dt
return( list( c(dX, dP, dS, dV) ) )
}
#Teste de saída
c_inicial = c(X = 1.7, P = 0, S = 40, V = 1)
# tempo
t = seq(0, 96, by = 1)
# Parametros
parametros = list(um = 0.1, Ks = 0.18, Yx = 0.25, Yp = 0.68, up = 0.05, Kp = 0.0002)
# solver (método pardrão lsoda)
out = ode(y = c_inicial, times = t, func = monod, parms = parametros)
head(out)
Se alguém puder me ajudar, agradeço!
Acho que o problema é como você define os valores iniciais e paramêtros dentro da função do modelo.
Olhando a documentação do pacote deSolve
e seguindo as orientações de como construir o modelo com a função with()
, vai funcionar:
library(deSolve)
monod = function(t, c, parametros){
with(as.list( c(c, parametros)), {
# derivadas d/dt
dX = um*S*X/(S+Ks)-(0.7/V)*X #dS/dt
dP = up*S*X/(S+Kp)-(0.7/V)*P #dE/dt
dS = -(1/Yx)*dX-(1/Yp)*dP-(0.7/V)*(S-30) #dC/dt
dV = 0.7 #dV/dt
return( list( c(dX, dP, dS, dV) ) )
})
}
#Teste de saída
c_inicial = c(X = 1.7, P = 0, S = 40, V = 1)
# tempo
t = seq(0, 96, by = 1)
# Parametros
parametros = list(um = 0.1, Ks = 0.18, Yx = 0.25, Yp = 0.68, up = 0.05, Kp = 0.0002)
# solver (método pardrão lsoda)
out = ode(y = c_inicial, times = t, func = monod, parms = parametros)
head(out)
Correct answer by Willian Vieira on September 27, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP