Решение системы ОДУ в векторной / матричной форме в R (с помощью deSolve?) - PullRequest
0 голосов
/ 01 мая 2018

Итак, я хочу спросить, есть ли способ определить и решить систему дифференциальных уравнений в 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 вектором параметров роста.

Я могу определить функцию, как указано выше, но когда дело доходит до использования функции ode из deSolve, есть ожидание parms, которое должно быть передано как именованный вектор параметров, что, конечно, не принимать нескалярные значения.

Это вообще возможно в R с deSolve или другим пакетом? Если нет, я, возможно, рассмотрю возможности использования MATLAB или Python, хотя в настоящее время я не знаю, как это делается ни на одном из этих языков.

Большое спасибо,

H

1 Ответ

0 голосов
/ 15 марта 2019

С моей низкой репутацией (баллы) я прошу прощения за то, что опубликовал это как ответ, который предположительно должен быть просто комментарием. Возвращаясь, вы пробовали эту ссылку ? Кроме того, пытаясь найти альтернативное решение вашей проблемы, вы пробовали MANOPT , набор инструментов MATLAB? Это на самом деле с открытым исходным кодом точно так же, как и R. Я столкнулся с MANOPT на бумаге , чья проблема сводится к решению системы ODE с использованием чисто матриц .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...