三分算法


时间复杂度O(2log(3)n)//以3为底

单谷函数求最大值

double l=0,r=1000;
while(r-l>1e-9)
{
	double lmid=l+(r-l)/3;
	double rmid=r-(r-l)/3;
	if(check(lmid)<=check(rmid))
		l=lmid;
	else 
		r=rmid;
}

单谷函数求最小值

double l=0,r=1000;
while(r-l>1e-9)
{
	double lmid=l+(r-l)/3;
	double rmid=r-(r-l)/3;
	if(check(lmid)>=check(rmid))
		l=lmid;
	else
		r=rmid;
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/288717.html

(0)
上一篇 2022年9月11日 03:26
下一篇 2022年9月11日 03:26

相关推荐

发表回复

登录后才能评论