二分法求方程2x^3-x ^2+3x-6=0在(-10,10)之间的根
- 核心思想是零点定理在区间[a,b]上连续不断且f(a)*f(b)<0的函数f(x),由零点定理,将函数f(x)零点所在的区间二分,使端点a,b逼近零点,得到近似值的方法称为二分法
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double func(double x)
{
double ret;
ret = 2 * x * x * x - 4 * x * x + 3 * x - 6;
return ret;
}
int main()
{
double x1, x2, x, y1, y2, y;
printf("请输入左右端点:\n");
scanf("%lf%lf", &x1, &x2);
y1 = func(x1);
y2 = func(x2);
x = (x2 + x1) / 2;
y = func(x);
while (y1 * y2 < 0 )
{
x = (x2 + x1) / 2;
y = func(x);
if (y*y1<0)
{
x2 = x;
y2 = y;
}
else if (y*y2<0)
{
x1 = x;
y1 = y;
}
else if(0==y)
{
break;
}
}
printf("根的值为:%5.2lf\n", x);
system("pause");
return 0;
}