我开始使用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").
答案 0 :(得分: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%。