c语言求教,急急

来源:百度知道 编辑:UC知道 时间:2024/06/09 17:42:40
用二分法求解方程2x^3-4x^2+3x-6=0在【-10,10】之间的解。

令f(x)=2x^3-4x^2+3x-6,对其求导,令导函数=0得6x^2-8x+3=0,方程无实数解,且导函数恒大于0,所以f(x)单调递增。又因为f(-10)<0,f(10)>0,所以方程在【-10,10】之间有且只有一个解。这样,就可以取区间【-10,10】的中点0,计算f(0)的值并与0比较。若小于0,说明0比方程的根小,再取【0,10】的中点,按此方法继续比较下去;若大于0,同理,再取【-10,0】的中点,继续比较。
程序如下:
#include<stdio.h>
int main(void)
{ float x1=-10,x2=10,x,y;
while(1)
{ x=(x1+x2)/2.0;
y=2.0*x*x*x-4*x*x+3*x-6;
if(y<0.00001&&y>-0.00001) break;
if(y<0) x1=x;
if(y>0) x2=x;
}
printf("x=%-7.4f",x);
}