所以我想问一下是否有任何方法可以使用矩阵表示法定义和求解R中的微分方程组。
我通常知道你做的事情
lotka-volterra <- function(t,a,b,c,d,x,y){
dx <- ax + bxy
dy <- dxy - cy
return(list(c(dx,dy)))
}
但我想做
lotka-volterra <- function(t,M,v,x){
dx <- x * M%*% x + v * x
return(list(dx))
}
其中x是长度为2的向量,M是2 * 2矩阵,v是长度为2的向量。我想用矩阵/向量表示法定义微分方程组。
这很重要,因为我的系统要复杂得多,而且我不想用100个参数定义11个不同的微分方程,而不是1个具有1个交互参数矩阵和1个生长参数矢量的微分方程。
我可以像上面那样定义函数,但是当使用ode
中的deSolve
函数时,期望parms
应该作为参数的命名向量传递,当然不接受非标量值。
这是否可以在R中使用deSolve或其他包?如果不是,我可能会考虑使用MATLAB或Python,但我目前还不知道它是如何用这两种语言完成的。
非常感谢,
ħ
答案 0 :(得分:0)
由于我的信誉不佳(得分),我很抱歉将其发布为答案,应该只是一个评论。回头来说,您是否尝试过此link?另外,为了找到解决问题的替代解决方案,您是否尝试过MANOPT(MATLAB的工具箱)?实际上就像open source一样,就像R。我在paper遇到MANOPT时,问题归结为solving a system of ODEs involving purely matrices。