R中向量/矩阵形式的常微分方程求解系统(使用deSolve?



所以我想问一下,是否有任何方法可以使用矩阵符号定义和求解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,其问题归结为解决涉及纯矩阵的常微分方程系统。

最新更新