zoukankan      html  css  js  c++  java
  • P3382|三分法模板

    三分法求极值

    其实就是每次取左右边界的中点,(然后中点稍微左偏一点、再中点往右偏一点,相等于缩小了区间)
    再然后
    如果求极大值:如果左边界函数值 <= 右边界函数值(说明还没到极值点),R = mid;否则L = mid;
    如果求极小值:如果左边界函数值 >= 右边界函数值(说明还没到极值点),L = mid;否则R = mid;

    #include<bits/stdc++.h>
    using namespace std;
    
    const double eps=1e-6;
    int n;
    double L,R;
    double a[15];
    
    double check(double x){
    	double sum = 0;
    	//1层循环:求多项式的值 从幂最大(从左往右)求多项式每次累乘1个x  
    	for(int i=n;i>=0;i--) sum = sum*x+a[i];
    	return sum;
    } 
    
    int main(){
    	cin>>n>>L>>R;
    	for(int i=n;i>=0;i--) cin>>a[i];
    	while(L + eps < R){
    		double mid = (L+R)/2;
    		if(check(mid+eps) <= check(mid-eps))
    			R = mid;
    		else
    			L = mid;
    	}
    	printf("%.5lf",R);
    	return 0;
    } 
    
  • 相关阅读:
    限制泛型可用类型
    泛型的常规用法(声明两个类型)
    一个类似于金字塔的图形
    Fibonacci数
    快来秒杀我
    奇偶数分离
    Background
    Financial Management
    HangOver
    Binary String Matching
  • 原文地址:https://www.cnblogs.com/fisherss/p/12308587.html
Copyright © 2011-2022 走看看