Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何使在函数内计算的根可用于函数外_Function_Output_Rstudio_Root - Fatal编程技术网

Function 如何使在函数内计算的根可用于函数外

Function 如何使在函数内计算的根可用于函数外,function,output,rstudio,root,Function,Output,Rstudio,Root,我试图执行以下代码,其中主函数(LV)包含另一个函数(fun_sp),用于在每个时间点查找根。根叫做p。根据我的理解,p依赖于一个变量C,它是一个向量,在每个时间点变化,所以p也应该是一个在每个时间点变化的向量。但是当我输出p时,我只得到一个值。我理解错了吗? 任何输入都会有帮助吗 library(deSolve) library(rootSolve) ka = 0.1; CL = 0.2; Ke = 0.3; R = 10; KD = 0.1 LV <- function(tim

我试图执行以下代码,其中主函数(LV)包含另一个函数(fun_sp),用于在每个时间点查找根。根叫做p。根据我的理解,p依赖于一个变量C,它是一个向量,在每个时间点变化,所以p也应该是一个在每个时间点变化的向量。但是当我输出p时,我只得到一个值。我理解错了吗? 任何输入都会有帮助吗


library(deSolve)

library(rootSolve)

ka = 0.1; CL = 0.2; Ke = 0.3; R = 10; KD = 0.1

LV <- function(time,state, params)

{
C <- state[1]

P <- state[2]

fun_sp <- function(p){p + ((C/R)*p/(p+(KD/R))) -1}

p <<- uniroot.all(fun_sp, c(0,1))

fb <- p/(p+(KD/R))

dC <- fb*ka*C - CL*C + P*CL - Ke*C

dP <- CL*C - P*CL 

list(c(dC, dP))
}

state_ini = c(C=100,P=0)

time = c(seq(1, 24 , 1))

fv <- ode(state_ini, time, LV, parms, method = "lsoda", rtol=1e-6, atol=1e-6, verbose=FALSE)

p

fv = as.data.frame(fv)

str(fv)

图书馆(deSolve)
库(rootSolve)
ka=0.1;CL=0.2;Ke=0.3;R=10;KD=0.1
LV变量“p”将在LV函数的每次迭代中被覆盖。好消息是,内部结果可以存储在输出矩阵中,方法是将它们添加到返回值(即列表)中,作为导数向量(在您的案例中是c(dC,dP))后面的附加参数(例如root=p),如下所示:

list(c(dC, dP), root=p)
您的示例可能如下所示,并且全局赋值运算符变量“p”将在LV函数的每次迭代中被覆盖。好消息是,内部结果可以存储在输出矩阵中,方法是将它们添加到返回值(即列表)中,作为导数向量(在您的案例中是c(dC,dP))后面的附加参数(例如root=p),如下所示:

list(c(dC, dP), root=p)

然后,您的示例可能会阅读如下内容,全局赋值运算符也是,我想在后面的另一个函数中使用根(p)。目前,我无法做到这一点。有办法做到这一点吗?另外,我想在后面的另一个函数中使用根(p)。目前,我无法做到这一点。有办法做到这一点吗?非常感谢你,托马斯。。这解决了我想做的事。非常感谢你,托马斯。。这解决了我想做的事情。