äºåæ³çåºæ¬æè·¯æ¯ï¼ä»»æ两个ç¹x1åx2ï¼å¤æåºé´ï¼x1,x2)å
ææ ä¸ä¸ª
å®æ ¹ï¼å¦æf(x1)ä¸f(x2)符å·ç¸åï¼å说ææä¸å®æ ¹ãæ¥çåï¼x1,x2)çä¸ç¹xï¼æ£æ¥f(x)åf(x2)æ¯å¦åå·ï¼å¦æä¸åå·ï¼è¯´æå®æ ¹å¨ï¼x,x2)ä¹é´ï¼å¦æåå·ï¼å¨æ¯è¾ï¼x1,x),è¿æ ·å°±å°èå´ç¼©å°ä¸åï¼ç¶åæä¸è¿°æ¹æ³ä¸æçéå½è°ç¨ï¼ç´å°åºé´ç¸å½å°ï¼æ¾åºæ ¹ä¸ºæ¢ï¼ï¼
代ç å¦ä¸ï¼å·²è°è¯ï¼ï¼
#include "math.h"
main()
{
float x,x1,x2;
float F(float x,float x1,float x2);
printf("请è¾å
¥åºé´[x1,x2]\n");
scanf("%f%f",&x1,&x2);
printf("x=%f\n",F(x,x1,x2));
}
float F(float x,float x1,float x2)
{
float f,f1,f2;
do
{
f1=pow(x1,3)-x1-1.0;
f2=pow(x2,3)-x2-1.0;
}while(f1*f2>0); //ç¡®ä¿è¾å
¥çx1,x2使å¾f1,f2符å·ç¸å
do
{
x=(x1+x2)/2; //æ±x1,x2çä¸ç¹
f=pow(x,3)-x-1.0;
if(f1*f>0) //å½fä¸f1符å·ç¸åæ¶
{x1=x;f1=f;}
else if(f2*f>0) //å½fä¸f2符å·ç¸åæ¶
{x2=x;f2=f;}
}while(fabs(f)>1e-6); //å¤ææ¡ä»¶fabs(f)>1e-6çæææ¯fçå¼é常0
return x;
}
è¾å
¥ï¼1 1.5
åè¾åºï¼x=1.324718