我创建了一个向量,该向量将微分方程的字符串连接起来,这些字符串的格式正确,可以用作Julia中的differeq ode sovler(即f(du,u,p,t):
Combine <- c("du[1] = - 1*0.4545*(u[1]^1) - 1*27000000*(u[4]^1)*(u[1]^1)","du[2] = - 1*3100000000*(u[2]^1)*(u[4]^1)","du[3] = - 1*33000*(u[3]^1)*(u[4]^1)","du[4] =2*0.4545*(u[1]^1) - 1*3100000000*(u[2]^1)*(u[4]^1) - 1*33000*(u[3]^1)*(u[4]^1) - 1*27000000*(u[4]^1)*(u[1]^1) - 1*8500000*(u[4]^1)*(u[5]^1) - 1*390000000*(u[4]^1)*(u[6]^1)","du[5] = - 1*8500000*(u[4]^1)*(u[5]^1)","du[6] = - 1*390000000*(u[4]^1)*(u[6]^1)"
我的问题是如何使用JuliaCall:Julia_eval评估这些表达式?我知道,如果我明确包含这些表达式,则ODE求解器可以正常工作,但是如果我只使用Combine [i],则会遇到错误,因为我正在调用全局变量。
f <- JuliaCall::julia_eval("
function f(du,u,p,t)
du[1] = - 1*0.4545*(u[1]^1) - 1*27000000*(u[4]^1)*(u[1]^1)
du[2] = - 1*3100000000*(u[2]^1)*(u[4]^1)
du[3] = - 1*33000*(u[3]^1)*(u[4]^1)
du[4] = 2*0.4545*(u[1]^1) - 1*3100000000*(u[2]^1)*(u[4]^1) - 1*33000*(u[3]^1)*(u[4]^1) - 1*27000000*(u[4]^1)*(u[1]^1) - 1*8500000*(u[4]^1)*(u[5]^1) - 1*390000000*(u[4]^1)*(u[6]^1)
du[5] = - 1*8500000*(u[4]^1)*(u[5]^1)
du[6] = - 1*390000000*(u[4]^1)*(u[6]^1)
end")
有什么办法可以解决此问题?我尝试取消列出“ Combine”的清单,并在每行末尾添加一个\ n的字符串,但这没有成功。理想的情况是,我可以从全局环境中调用向量,并由ODE求解器对其进行分析,如下所示(我知道这种方法不能这样工作):
f <- JuliaCall::julia_eval("
function f(du,t)
Combine[i]
end")