如何在 R 中最小化此功能?
How can I minimize this function in R?
我正在尝试编写一个公式来确定 a
的值,使函数输出 myfun
(即 a-fptotal
)最小化。 MWE:
c <- as.matrix(c(.25,.5,.25))
d <- as.matrix(c(10000,12500,15000))
e <- 700
f <- 1.1
tr <- .30
myfun <- function(a) {
b <- max(a-e,0)
df <- data.frame(u1=c(c*b*.40),u2=c(c*b*.60))
df$year <- 1:nrow(df)
df$factor <- 1/(f)^df$year
df$d <- d
df$t <- (df$d-df$u1-df$u2)*tr
df$f <- df$d-df$t
df$fp <- df$f*df$factor
fptotal <- sum(df$fp)
return(a-fptotal) # what is a good approach to minimize this?
}
我已经尝试过类似的事情但没有成功:
o2 <- optimize(myfun, lower = 0, upper = 30000)
正确答案应该在28355
左右:
myfun(28355)
## [1] -1.04151
如有任何想法,我们将不胜感激。谢谢!
我想你想最小化 a-fptotal
的 平方 ...
ff <- function(x) myfun(x)^2
> optimize(ff,lower=0,upper=30000)
$minimum
[1] 28356.39
$objective
[1] 1.323489e-23
或找到根(即 myfun(x)==0
所在的位置):
uniroot(myfun,interval=c(0,30000))
$root
[1] 28356.39
$f.root
[1] 1.482476e-08
$iter
[1] 4
$init.it
[1] NA
$estim.prec
[1] 6.103517e-05
我正在尝试编写一个公式来确定 a
的值,使函数输出 myfun
(即 a-fptotal
)最小化。 MWE:
c <- as.matrix(c(.25,.5,.25))
d <- as.matrix(c(10000,12500,15000))
e <- 700
f <- 1.1
tr <- .30
myfun <- function(a) {
b <- max(a-e,0)
df <- data.frame(u1=c(c*b*.40),u2=c(c*b*.60))
df$year <- 1:nrow(df)
df$factor <- 1/(f)^df$year
df$d <- d
df$t <- (df$d-df$u1-df$u2)*tr
df$f <- df$d-df$t
df$fp <- df$f*df$factor
fptotal <- sum(df$fp)
return(a-fptotal) # what is a good approach to minimize this?
}
我已经尝试过类似的事情但没有成功:
o2 <- optimize(myfun, lower = 0, upper = 30000)
正确答案应该在28355
左右:
myfun(28355)
## [1] -1.04151
如有任何想法,我们将不胜感激。谢谢!
我想你想最小化 a-fptotal
的 平方 ...
ff <- function(x) myfun(x)^2
> optimize(ff,lower=0,upper=30000)
$minimum
[1] 28356.39
$objective
[1] 1.323489e-23
或找到根(即 myfun(x)==0
所在的位置):
uniroot(myfun,interval=c(0,30000))
$root
[1] 28356.39
$f.root
[1] 1.482476e-08
$iter
[1] 4
$init.it
[1] NA
$estim.prec
[1] 6.103517e-05