base包的optimize()函数就可以求一维函数极小值,具体调用方法参见帮助吧。
例子:求(1-x)^2+4极小值。
> f=function(x)(1-x)^2+4
> optimize(f,c(0,2))
$minimum
[1] 1
$objective
[1] 4
nlm()可以求多元函数极小值。
例子:求100*(x1-x2^2)^2+(1-x1)^2的极小值
> f=function(x){f<-c(10*(x[2]-x[1]^2), 1-x[1]);sum(f^2)}
> nlm(f,c(-1.5,1))
$minimum
[1] 3.983443e-12 #极小值
$estimate
[1] 0.999998 0.999996 #极小值点
$gradient
[1] -3.358886e-07 1.721028e-07
$code
[1] 1
$iterations
[1] 23