关于三分求解多峰函数峰值
查看原帖
关于三分求解多峰函数峰值
205782
R浩轩泽Anmicius楼主2021/9/28 21:26

求解一元三次方程根的时候需要求函数峰值,本以为这类题是水题,没想到就在机房里耗了一个晚自习(悲

多峰函数的峰值真的能用三分法搞出来吗

我在三分的时候,其中的一个等分点似乎把峰给跳过了

然后下一次枚举的时候峰就不在待定区间里了

具体代码如下:

void triple(){
	int l=L,r=R;
	while(r-l>eps){
		int p=(2*l+r)/3,q=(l+2*r)/3;
		if(ans(p)<ans(q))l=p;
		else r=q;
	}//求出峰横坐标 
	peak_1=(l+r)*0.5;
	l=L;r=R;
	while(r-l>eps){
		int p=(2*l+r)/3,q=(l+2*r)/3;
		if(ans(p)<ans(q))r=q;
		else l=p;
	}//求出谷横坐标 
	peak_2=(l+r)*0.5;
}

这样求得的两个峰的位置都在L和R附近,根本不对

请问问题出在哪呢?

2021/9/28 21:26
加载中...