我创建了一个向量,该向量将微分方程的字符串连接起来,这些字符串的格式正确,可以用作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,u,p,t)
Combine[i]
end")
我创建了一个向量,该向量将微分方程的字符串连接起来,格式正确,可用于茱莉亚的差分运算法则(即f(du,u,p,t):组合
如@jverzani所述,