Stop the Hollyweb! No DRM in HTML5.

三分法求极值模板

以后大概就这么写吧

program tri;
//三分法求凸性函数极值
Const
  SMAX=true;
  SMIN=false;
  NOW=SMAX;
  LMIN=1e-10;
  RMAX=100000000;
  Res=1e-10;//这个精度不能再小了,否则浮点数误差会大于此精度

Function F(x:extended):extended;inline;//extended的更精确,但同时计算速度最慢
  begin
  exit(ln(x)-x);
end;

Function get(l,r:extended):extended;
var
 mid1,mid2:extended;
  begin
  if r-l<Res then exit((l+r)/2);
  mid1:=(r-l)/3+l;
  mid2:=(r-l)/3*2+l;
  if NOW=SMAX then
    if f(mid1)>f(mid2) then exit(get(l,mid2)) else exit(get(mid1,r))
  else
    if f(mid1)<f(mid2) then exit(get(l,mid2)) else exit(get(mid1,r));
end;

  begin
  writeln(get(lmin,rmax):0:18);
end.

 

posted on 2013-03-12 21:11  灰天飞雁  阅读(709)  评论(0编辑  收藏  举报

填写您的邮件地址,订阅我们的精彩内容:  点击这里给我发消息

添加到收藏夹