根据一些数学知识可知,整个函数是单调递减的,所以根据二分法找零点。
需要注意 浮点类型数字的比较方法。
#include<stdio.h>
#include<math.h>
#include<float.h>
int p, q, r, s, t, u;
double calcu(double x) {
return p * exp(-x) + q * sin(x) + r * cos(x) + s * tan(x) + t * pow(x, 2)
+ u;
}
int main() {
while (scanf("%d%d%d%d%d%d", &p, &q, &r, &s, &t, &u) != EOF) {
if (calcu(0) * calcu(1) > 0) {
printf("No solution\n");
} else {
double l = 0, r = 1;
double mid;
double midValue;
while (r - l > 1e-9) {
mid = (r + l) / 2;
midValue = calcu(mid);
if (midValue > 0)
l = mid;
else
r = mid;
}
printf("%1.4lf\n", mid);
}
}
return 0;
}
二分法求解函数零点
本文介绍了一个使用二分法寻找特定函数零点的C语言程序。该函数涉及指数、三角函数等复杂组合。程序通过用户输入的系数来确定函数的形式,并利用二分法在指定区间内查找零点,直到达到预定的精度。
458

被折叠的 条评论
为什么被折叠?



