问题描述:
利用二分法求方程在(-10,10)的根。
方法:先求出两端点的中点,然后将中点带入方程中检查是否等于0,如果等于0说明找到了根,如果大于0,说明根在左半部分,将right的值改为mid,否则将left的值改为mid。直到左右两端点的距离小于0.000001为止。
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {float left = -10, right = 10 ;float mid = 0;while (right - left >= 1e-6) {//当左右两端点足够近时,我们认为可以结束循环了mid = (left + right) / 2.0;//if判断条件不能直接判断是否==0,因为float数有很小的误差,当小于0.001时,我们认为相等if (fabs(2 * pow(mid, 3) - 4 * pow(mid, 2) + 3 * mid - 6) <= 1e-3) {printf("该方程的根为%.2f\n", mid);break;}else if (2 * pow(mid, 3) - 4 * pow(mid, 2) + 3 * mid - 6 > 0) {//题目要求的式子right = mid;}else {left = mid;}}return 0;
}
运行结果截图:
如果该内容对你有帮助,请给我点个赞!谢谢。