用二分法求下面方程在(-10,10)之间的根。
2X3 – 4X2 + 3X - 6 = 0
二分法,也就是我们常说的折半查找法,此算法主要用于对一组排列有序的数字进行查找,因为每查询一次,即可排除一半。因此算法运行的效率是很高的。其主要原理是,查找中间值的大小,如果大于指定的值,即可确定:需要找的值,或者求的值在前半部分,此时进行将中间值赋值给最大值,继续折半查找。如果中间值小于指定的值,即可确认:查找的值,或者求的值在后半部分,此时进行将中间值赋值给最小值。继续进行折半查找。根据此原理。程序代码如下:
#include <stdio.h> #include <math.h>
double F1(double); int main(int argc, int *argv[]) { double lit = pow(10,-5); double min = -10, max = 10; double mid = (max + min) / 2; double result; while (min < max && fabs(F1(mid)) > lit) { if (F1(mid) > 0) { max = mid; } if (F1(mid) < 0) { min = mid; } mid = (max + min) / 2; } if (fabs(F1(mid)) < lit) { result = mid; printf("the result is :%f\n",result); } else { printf("error:no result!\n"); } system("pause"); return 0; }
double F1(double x) { return 2 * x * x * x - 4 * x * x + 3 * x - 6; }
|
经过程序运行,求出方程的根为:2。
阅读(7150) | 评论(0) | 转发(0) |