Поэтому я хочу спросить, есть ли способ определить и решить систему дифференциальных уравнений в 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 вектором параметров роста.
Я могу определить функцию, как указано выше, но когда дело доходит до использования функции ode
из deSolve
, ожидается, что parms
должен быть передан как именованный вектор параметров, который, конечно, не принимает нескалярные значения.
Возможно ли это вообще в R с deSolve или другим пакетом? В противном случае я рассмотрю, возможно, использование MATLAB или Python, хотя я не знаю, как это делается на любом из этих языков в настоящее время.
Большое спасибо,
ЧАС
С моей низкой репутацией (в баллах) я извиняюсь за то, что опубликовал это как ответ, который, предположительно, должен быть просто комментарием. Возвращаясь назад, вы пробовали этот ссылка на сайт? Вдобавок, пытаясь найти альтернативное решение вашей проблемы, пробовали ли вы МАНОПТ, набор инструментов MATLAB? На самом деле это открытый источник, как и R. Я столкнулся с MANOPT на бумага, проблема которого сводится к решение системы ОДУ, состоящей исключительно из матриц.