Мы не можем протестировать ваш код, потому что у нас нет функции jacobian.full
, но я думаю, вы имеете в виду ту, что в пакете rootSolve
.Когда я запускаю код после library(rootsolve)
, я получаю следующие предупреждения:
Warning messages:
1: In param[i] <- c(alpha, beta, gamma, delta, epsilon[i], psi[i]) :
number of items to replace is not a multiple of replacement length
2: In eig[i] <- eigen(jacobian.full(y = c(x = x[i], y = y[i]), func = eqn, :
number of items to replace is not a multiple of replacement length
3: In param[i] <- c(alpha, beta, gamma, delta, epsilon[i], psi[i]) :
number of items to replace is not a multiple of replacement length
4: In eig[i] <- eigen(jacobian.full(y = c(x = x[i], y = y[i]), func = eqn, :
number of items to replace is not a multiple of replacement length
Они приходят не из функции eigen
, а из двух последних строк вашего кода.Не ясно, каковы ваши намерения здесь.param
инициализируется длиной 6, затем вы пытаетесь заменить один его элемент вектором длины 6.Может быть, решение состоит в том, чтобы просто использовать
param = c(alpha, beta, gamma, delta, epsilon[i], psi[i])
eig = eigen(jacobian.full(y = c(x = x[i], y = y[i]), func = eqn, parms = param))$values
, но я действительно не понимаю, что вы собираетесь.