#r
Вопрос:
Я новичок в R и нуждаюсь в некоторой помощи. я хочу решить систему дифференциальных уравнений с помощью Desolve. При запуске кода я получаю : Ошибка в eval(замена(expr), данные, enclos = parent.frame()) : попытка применить функцию, не вызываемую из: eval(замена(expr), данные, enclos = parent.frame()
«»
установить.пакеты(«Удалить»)` библиотека(удалить)
Tumor.model lt;- function(t, state, parameters) { with(as.list(c(state, parameters)),{ # rate of change dT0 lt;-(kappa*N)-(phi*T[0])*(1-(T[0]/Tmax))-((1-phi)*T[0])-(mu*Im*T[0]) dT1lt;- T[0]*(1-phi)-(Phi*T[1])*(1-(T[1]/Tmax))- T[1](0)*exp((k/lam)*(1-exp(-lam*t )))-(mu*Im*T[2]) dT2lt;- (phi*T[0])*(1-(T[0]/Tmax)) (Phi*T[1])*(1-(T[1]/Tmax))- T[2](0)*exp((k/lam)*(1-exp(-lam*t)))-(beta*T[2])*(1-(T[2]/Tmax))- (mu*Im*T[2]) dT3lt;- (beta*T[2])*(1-(T[2]/Tmax))-T[3](0)*exp((k/omega)*(1-exp(-omega*t)))- (gamma*T[3])*(1-(T[3]/Tmax))-(mu*Im*T[3]) dT4lt;- (gamma*T[3])*(1-(T[3])/Tmax)-T[4](0)*exp((k/theta)*(1-exp(-theta*t)))- (alpha*T[4])*(1-(T[4]/Tmax))-(mu*Im*T[4]) dT5lt;- (alpha*T[4])*(1-(T[4]/Tmax))-T[5](0)*exp((k/psi)*(1-exp(-psi*t)))- (mu*Im*T[5]) dImlt;-(eta*I[m])*(1-(I[m]/Imax)) (rho*T*I[m])/(epsilon T)-(Xi*I[m])- (tau*T*I[m]) # return the rate of change list(c(dT0, dT1, dT2, dT3, dT4, dT5, dIm)) }) # end with(as.list ... } parameters lt;- c(N=1.7*10^12,Tmax=1*10^9,Imax=800,T=1*10^6,phi = 0.0052,beta=0.003, gamma=0.045,alpha=0.055,Phi=0.0035,kappa=0.0025,k=0.500, eta=0.0206,epsilon=1000,tau=1*10^-8,Xi=4.12*10^-2,lam=0.02, omega=0.02, theta=0.04,psi=0.04,mu = 1*10^-8, rho=0.835) times lt;- seq(0, 100, by = 0.4) state lt;- c(T0=20,T1=1,T2=1,T3=1,T4=1,T5=1,Im=5) out= ode(y=state,times=times,func=Tumor.model,parms=parameters) '''
Комментарии:
1. в вашем коде есть много заглавных букв T, которые являются
TRUE
значениями в R.T[0] * 1
естьnumeric(0)
, и, вероятно, это не то, что вы хотите. Я предполагаю, что этоT[0]
должны быть T1, T2, T3 вашейstate
переменной?2. T[0] я намерен ссылаться на начальное значение определенного этапа
3. И что представляет собой единственное число T в
dIm
вашем шагеwith
? и(0)
входящийT[5](0)
входdT5
. ЭтоT[5](0)
приводит к ошибке «попытка применить неработоспособность».4. Спасибо. T представляет среднее значение значений T, в то время как T5(0) представляет начальное значение T5