#include #include #include #include using namespace std; /* double calc(const vector& func, int x){ int n = func.size(); double ans = 0; for(int i = 0; i < n; i++){ ans += pow(x, n-i) * func[i]; } return ans; }*/ //秦九韶算法 double calc(const vector& func, double x){ double ans = 0; for(double y: func){ ans = x * ans + y; } return ans; } int main(){ int n; double l, r; n = 3; l = -0.9981; r = 0.5; //cin >> n >> l >> r; //任取两个点,把[l, r]分成三段,调整l, r的值 vector func(n+1); func[0] = 1; func[1] = -3; func[2] = -3; func[3] = 1; /*for(int i = 0; i < n; i++){ }*/ double mid1, mid2; double ans = 0; while(r - l > 1e-6){ mid1 = l + (r-l)/3; mid2 = r - (r-l)/3; if(calc(func, mid1) > calc(func, mid2)){ r = mid2; } else if(calc(func, mid1) <= calc(func, mid2)) { l = mid1; } } cout << fixed << setprecision(8) << l << endl; return 0; }