Ryacas и MaxEvalDepth

Я начал использовать R для решения сложного уравнения. После генерации уравнения я попытался решить его, используя Ryacas, К сожалению, вместо того, чтобы дать мне результат, Ryacas возвращает следующее:

CommandLine (1): максимальная глубина стека оценки достигнута. Пожалуйста, используйте MaxEvalDepth для увеличения размера стека по мере необходимости.
CommandLine (1): максимальная глубина стека оценки достигнута. Пожалуйста, используйте MaxEvalDepth для увеличения размера стека по мере необходимости.

Не могли бы вы сказать мне, как увеличить этот размер стека с помощью Ryacas? Я пытался сделать это разными способами, но я действительно не знаю, как воспользоваться советом, который Ryacas дал мне.

===== Редактировать =======

Итак, вот код, который приводит к генерации уравнения, которое я хочу решить.

#define net and gross values
net=10000
gross=12563.49

#construct an array for cash flows
flows=matrix(nrow=1, ncol=60)

#populate the array with cash flows
flows[c(1:60)]=c(-297.21)

#generate the equation
#flows
eq1=NULL
for (i in 1:60) {
  eq1=paste(eq1," + ", toString(flows[i]),"/((1 + x)^(",i, "/60)", ") ", collapse="")
}
#complete
equation=paste(toString(net), eq1, " == ", toString(gross), collapse="")

Затем я пытаюсь решить, используя Solve(equation, "x").

1 ответ

Решение

Это выглядит как уравнение для APR. Попробуйте использовать простую итерацию, подобную этой:

#inputs
instalments=60
net=12800
monthly=387.63
interest=0.1890

#function
CalculateAPR <- function(InitialPayout, InterestRate, N, MonthlyRepayment) {
  i <- InterestRate 
  repeat{
    DF <- sapply(1:N, function(N) { MonthlyRepayment/((1+i)^(N/12)) } )
    if(InitialPayout>=sum(DF)) break()
    i <- i + 0.00001
  }
return(i)
}

#output
ans=CalculateAPR(net, interest, instalments, monthly)
rm(list = c('instalments', 'interest', 'monthly', 'net'))
print(ans)

Возможно, вы захотите попробовать более эффективный алгоритм, чем этот, который просто добавляет 0,001% к каждой итерации.

Другие вопросы по тегам