这个原理真没啥好说的, 其他的博客都写得比我好....
直接上模板:
double trichotomy(double minn,double maxx)
{//给定了函数的定义域
double l, r,ml,mr,ml_v,mr_v;
l=minn;
r=maxx;
while (l+eps<r)
{
ml=(l+r)/2;
mr=(ml+r)/2;
ml_v=f(ml);//f()表示要求极值的函数
mr_v=f(mr);//f()表示要求极值的函数
if (ml_v>=mr_v)//求极大值中间是>=, 极小值则是<=;
r=mr;
else
l=ml;
}
return l;
}