如何在C ++中实现R的“优化”功能?

时间:2011-08-30 01:34:07

标签: c++ algorithm r optimization

免责声明:我使用关键字搜索了答案:R,optimize,C ++,C,optima,maxima,minima,local maximum,optimization,Newton's Method,Gradient descent等。并没有找到任何满意的答案。 R optimize man page给出了原始的Fortran代码,但没有提供它的C语言。如果我应该搜索其他关键字,或者您可以快速找到明确回答此问题的网站,请告诉我。

问题:我是C ++的新手,希望将我的一个R程序转换为C ++。我在R中使用了optimize函数,想知道C ++中是否有任何库/头文件/函数可以轻松地给我相同的结果。如果可能请举例。

这是R优化的一个简单例子,最大化f(p)= p *(1-p)超过(0,1),其中最大值为p = 0.5且f(0.5)= 0.25:

> optimize(function(p) p*(1-p),c(0,1),maximum=T)
$maximum
[1] 0.5

$objective
[1] 0.25

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

R源代码可在http://cran.r-project.org/获得。你应该能够在那里得到c实现,使得c ++应该是微不足道的。

答案 1 :(得分:5)

http://cran.r-project.org/src/base/R-2/R-2.13.1.tar.gz

代码在../ R-2.13.1 / src / main / optimize.c

答案 2 :(得分:0)

R函数optimize()基本上实现了Brent的方法。要用C ++或其他几种语言实现,您只需从这里下载:https://people.sc.fsu.edu/~jburkardt/cpp_src/brent/brent.html