用BB包解决R中的非线性方程

时间:2016-04-07 13:14:55

标签: r

我试图解决一组非线性方程式但是卡住了。

0<x1<1 ; x2>0 ; x3>0

library(BB) 

f <- function(x) { 
  x1 <- x[1] 
  x2 <- x[2]
  x3 <- x[3] 

  F <- rep(NA, 3) 

  F[1] <- 1-x1^(log(1+1/(x3)^x2))-0.64

  F[2] <- x1^(log(1+1/(x3)^x2))-x1^(log(1+(2/x3)^x2))-0.17

  F[3] <- x1^(log(1+(2/x3)^x2))-x1^(log(1+(3/x3)^x2))-0.10

  return(F) 
} 

p0 <- c(0.5,2,1) 

dfsane(par=p0, fn=f,control=list(maxit=30000)) 

仅在第一次迭代时遇到错误

  

&#34;失败:功能评估错误&#34;

任何人都可以帮忙解决错误吗?

1 个答案:

答案 0 :(得分:0)

要调试此类错误,您可以打印出在每次函数迭代时正在处理的x的值,以识别导致函数行为异常的参数。

当我这样做时,我发现以下输入数据存在问题:

x <- c(-1.199934, -2.745093,  3.648077)
f(x)
# [1] NaN NaN NaN

您应该更新您的函数,以便它不会返回NaN越界数据(或移动到接受函数参数约束的解算器)。