二分法求函数f(x)=x^2-3x+1的根的C语言代码
时间: 2024-09-19 09:02:44 浏览: 23
二分法是一种数值搜索方法,通常用于在一个已知范围内找到函数零点。下面是使用C语言实现二分查找法求解函数f(x) = x^2 - 3x + 1的实数根的一个简单示例。这个函数有两个实根,大约在x=1和x=2附近。假设我们已经确定了一个初始区间[lower, upper],这里为了简化,我们直接设置为[1, 2]。
```c
#include <stdio.h>
#include <math.h>
// 函数f(x)的定义
double f(double x) {
return pow(x, 2) - 3 * x + 1;
}
// 二分查找函数
double binary_search(double lower, double upper) {
if (upper - lower <= 0.0001 || f(lower)*f(upper) >= 0) { // 边界条件或相乘结果非负则结束
return lower; // 如果区间太小或者f值同号,则返回区间的端点
}
double mid = (lower + upper) / 2; // 计算中间点
if (f(mid) == 0) { // 中间点满足f(x)=0,则找到了根
return mid;
} else if (f(mid) * f(lower) < 0) { // 中间点f值异号,舍弃下半部分
return binary_search(mid, upper);
} else { // 中间点f值异号,舍弃上半部分
return binary_search(lower, mid);
}
}
int main() {
double root = binary_search(1, 2); // 初始区间 [1, 2]
printf("Root of the function f(x) = x^2 - 3x + 1 is approximately %.4lf\n", root);
return 0;
}
```