三分模版
三分查找,用来比较不同坐标处值的大小关系(比较的这两点通常是分布在极值点两侧的),来确定区间内的极值。
三分应用于最优化问题的求解。在解题时没必要给出证明,只要知道问题不满足单调性,就可以尝试用三分搜索极值点,而且三分整数很少见,因为除非能够证明这种策略是正确的(即完全符合凸函数的性质,但是通常极值点不会在整点取得,如果三分整数,那么函数也不是连续的了),否则很可能会错误,而三分应用在小数中是最常见的,比如说三分角度,三分坐标等等。
一些函数的常用结论:
1、如果一个函数是若干个开口向上的二次函数的最大值 这个函数只能先减后增
2、如果一个函数是若干个开口向下的二次函数的最小值 这个函数只能先增后减
模版:
凸函数求极大值:
while (l + eps < r) { double lm = l + (r-l) / 3; double rm = r - (r-l) / 3; if (f(lm) > f(rm)) r = rm; else l = lm; } //凸点: l cout << f(l) << endl;
凹函数求极小值:
while (l + eps < r) { double m1 = l + (r-l) / 3; double m2 = r - (r-l) / 3; if (f(m1) > f(m2)) l = m1; else r = m2; } // 凹点: l cout << f(l) << endl;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步