三分法求极值模板
以后大概就这么写吧
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.