函数二分法怎么编程例题

时间:2025-01-28 23:22:14 网络游戏

例题1:求解多项式函数的零点

题目描述

已知函数 \( f(x) = x^5 - 15x^4 + 85x^3 - 225x^2 + 274x - 121 \),求其在区间 \([1.5, 2.4]\) 内的零点,并保留到小数点后6位。

代码实现

```cpp

include

include

using namespace std;

double f(double x) {

return pow(x, 5) - 15 * pow(x, 4) + 85 * pow(x, 3) - 225 * pow(x, 2) + 274 * x - 121;

}

int main() {

double l = 1.5, r = 2.4, m;

while (r - l >= 1e-7) { // 保留到小数点后6位

m = (l + r) / 2;

if (f(l) * f(m) > 0)

l = m;

else

r = m;

}

printf("%.6lf", m);

return 0;

}

```

例题2:求解四次方程的根

题目描述

求解方程 \( x^4 + 2x^3 - x - 1 = 0 \) 在区间 \([0, 1]\) 内的根,并保留到小数点后6位。

代码实现

```cpp

include

include

using namespace std;

float f(float x) {

return x * x * x * x + 2 * x * x * x - x - 1;

}

void main() {

float a = 0, b = 1, h, y, x;

int k, n0;

printf("请输入区间a, b和循环次数n0: ");

scanf("%f %f %d", &a, &b, &n0);

for (k = 0; k <= n0; k++) {

x = (a + b) / 2;

h = (b - a) / 2;

y = f(x);

if (fabs(h) < 1e-6 || fabs(y) < 1e-6) {

printf("k=%d, x=%f, y=%f\n", k, x, y);

break;

} else {

if (f(a) * f(x) < 0)

b = x;

else

a = x;

}

}

}

```

例题3:求解有序数组中的目标值

题目描述

在一个有序数组 \([2, 5, 8, 12, 16, 23, 38, 56, 72, 91]\) 中查找目标值 \( 23 \),并返回其索引。

代码实现