非线性方程组的求解

时间:2014-02-28 02:16:57

标签: r

我正在尝试解决非线性方程组:

# K = N + M
# M = log(1 + i*FS*(1 - r)/r)/log(1 + i)
# N = log[1/(1 - FS*i/(1 + i))]/log(1 + i)
# Numerically solve the above system of nonlinear equations
# Variables: N, M, FS
# Parameters (external, given): K, r, i

我尝试使用包nleqslv以下列方式解决此问题:

require(nleqslv)

NMfun<-function(x, K, r, i) {
    y <- rep(NA, length(x))

    y[1] <- K - x[1] - x[2]
    y[2] <- x[1] - log(1 + i*x[3]*(1 - r)/r)/log(1 + i)
    y[3] <- x[2] - log(1/(1 - x[3]*i/(1 + i)))/log(1 + i)

    return(y)
}

K <- 80
r <- 0.70
i <- 0.06
xstart <- c(20, 60, 60)

NMfun(xstart, K, r, i)

nleqslv(xstart, NMfun, K=K, r=r, i=i)

运行上述内容时出错:

> NMfun(xstart, K, r, i)
[1] 0.000000 3.983082      NaN
Warning message:
In log(1/(1 - x[3] * i/(1 + i))) : NaNs produced
> 
> nleqslv(xstart, NMfun, K=K, r=r, i=i)
Error in nleqslv(xstart, NMfun, K = K, r = r, i = i) : 
  evaluation of fn function has non-finite values
   (starting at index=3)
In addition: Warning message:
In log(1/(1 - x[3] * i/(1 + i))) : NaNs produced

我在这里做错了什么?

0 个答案:

没有答案