三分法---黄金分割(求单峰函数最值) 洛谷--P3382 【模板】三分法

    科技2024-12-05  38

    黄金分割法具体思路看这个 看懂之后看代码是秒懂 纯纯的三分进化版,思路和三分一毛一样,只是取的两个三分点变成了两个黄金分割点,每次缩小的范围比三分点稍微大一点点

    #include <bits/stdc++.h> using namespace std; const double gold = (sqrt(5)-1)/2;//黄金分割率 const double eps = 1e-8;//正常题目要求精度+2 const int MA = 15; double xi[MA];//所存系数 int n; double de_sum(double x){//求多项式的和 double sum = 0; for (int i = 0; i <= n; i++){ sum = sum*x + xi[i]; } return sum; } int main() { double l,r; scanf("%d%lf%lf",&n,&l,&r); for (int i = 0 ; i <= n; i++){ scanf("%lf",&xi[i]);//从大到小好计算 } while(fabs(r-l) > eps){ double Gold = (r-l) * gold; double rmid = l + Gold; double lmid = l + r - rmid; if(de_sum(lmid) > de_sum(rmid) ) r = rmid; else l = lmid; } printf("%.5lf",l); return 0; }
    Processed: 0.009, SQL: 8