1。以所求值和目标值的逐渐逼近:
if (y < 6 || y>807020306) { cout << "No solution!" << endl; continue; }
sum = (x * (3 + x * (2 + x * (7 + 8 * x)))) + 6;
while (fabs(sum - y) > 1e-3)
{
if (sum < y)
{
min = x;
x = (max + x) / 2;
}
else {
max = x;
x = (min + x) / 2;
}
sum = (x * (3 + x * (2 + x * (7 + 8 * x)))) + 6;
if (sum == y) break;
}printf("%.4lf\n", x);
2.函数对应x的min和max差值的逼近:
cin >> y;
// 判断有无解
if (y < f(0) || y>f(100)) { cout << "No solution!" << endl; }
else {
while (max - min > 1e-7)
{
x = (max + min) / 2.0;
sum = f(x);
if (sum < y)
min = x + 1e-7;
else
max = x - 1e-7;
if (sum == y) break;
}printf("%.4lf\n", (min+max)/2.0);