使用二分法,利用c语言 编写一段程序求解f(x) = x^3 + x^2 - 1 = 0
时间: 2024-05-22 20:15:33 浏览: 85
#include <stdio.h>
#include <math.h>
double f(double x) {
return pow(x, 3) - pow(x, 2) - 1;
}
int main() {
double a = 1, b = 2, c, eps = 1e-6;
while (b - a > eps) {
c = (a + b) / 2;
if (f(c) * f(a) < 0) {
b = c;
} else {
a = c;
}
}
printf("The root of the equation is: %lf\n", c);
return 0;
}
相关问题
使用c语言 编写一段程序求解f(x) = x^3 + x^2 - 1 = 0,使用二分法
#include <stdio.h>
#include <math.h>
double f(double x) {
return pow(x, 3) - pow(x, 2) - 1;
}
double bisection(double a, double b, double eps) {
double c;
while (fabs(b - a) > eps) {
c = (a + b) / 2.0;
if (f(c) == 0.0) return c;
else if (f(a) * f(c) < 0.0) b = c;
else a = c;
}
return (a + b) / 2.0;
}
int main() {
double a = -10.0, b = 10.0, eps = 0.00001;
double root = bisection(a, b, eps);
printf("Root of the equation is: %lf\n", root);
return 0;
}
二分法求函数f(x)=x^2-3x+1的根的C语言代码
二分法是一种数值搜索方法,通常用于在一个已知范围内找到函数零点。下面是使用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;
}
```
阅读全文