函数

时间:2017-03-23 14:58:44

标签: r

我有一个ODE函数LVM(),它接受时间,人口,携带容量和增长率的参数。我需要通过使用'pracma'R包或'rootSolve'包找到Jacobian来计算其稳定性,但是我得到一个错误

  

fun(x,...)中的错误:缺少参数“r”,没有默认值

我的功能是;

LVM <- function(t,pop,int_mat,str_mat,carry_cap,r){ 
dN=r*pop*((carry_cap-(int_mat*str_mat)%*%pop)/carry_cap)
  return(dN)
}

当我按下面计算雅可比矩阵时;

jacobian(LVM,c(0.287778,0.2553485,0.147619,0.3661074,0.4390739,0.1270218,0.4533318,0.2236241,0.3555208,0.2102366))

其中数值是人口密度,我得到一个错误

  

fun(x,...)中的错误:缺少参数“r”,没有默认值

您的意见将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

使用修改后的函数LVM_V2来取代参数向量     在6个参数中,我得到以下输出。这是预期的输出

参数映射:

#r=>x[6]
#pop => x[2]
#carry_cap => x[5]
#int_mat => x[3]
#str_mat => x[4]


LVM_V2 <- function(x){ 
 dN=x[6]*x[2]*((x[5]-(x[3]*x[4])%*%x[2])/x[5])
 return(dN)
}

pracma::jacobian(LVM_V2,c(0.287778,0.2553485,0.147619,0.3661074,0.4390739,0.1270218,0.4533318,0.2236241,0.3555208,0.2102366))

#     [,1]      [,2]         [,3]         [,4]        [,5]      [,6] [,7] [,8] [,9] [,10]
#[1,]    0 0.1190372 -0.006905828 -0.002784515 0.002321776 0.2473229    0    0    0     0

请注意,参数t在函数

中仍未使用