所以我想问一下,是否有任何方法可以使用矩阵符号定义和求解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 的向量。 即我想使用矩阵/向量符号定义微分方程组。 这很重要,因为我的系统要复杂得多,而且我不想定义 11 个具有 100+ 参数的不同微分方程,而不是定义 1 个具有 1 个交互作用参数矩阵和 1 个增长参数向量的微分方程。
我可以如上所述定义函数,但是当涉及到使用 deSolve
中的函数ode
时,有一个期望parms
应该作为参数的命名向量传递,这当然不接受非标量值。
这在带有deSolve的R或其他包中是否可能?如果没有,我会考虑使用MATLAB或Python,尽管我现在也不知道这两种语言是如何完成的。
非常感谢,
H
由于我的声誉(积分(很低,我很抱歉将其作为应该只是一个评论的答案发布。回过头来,你试过这个链接吗?此外,为了找到解决问题的替代解决方案,您是否尝试过 MATLAB 的工具箱 MANOPT?它实际上是开源的,就像R一样。我在一篇论文中遇到了MANOPT,其问题归结为解决涉及纯矩阵的常微分方程系统。