例题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 \),并返回其索引。
代码实现: