C语言用弦截法解方程问题谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:54:20
C语言用弦截法解方程是不是只能求出方程的进似根 能不能改下下面哪个条件让每次都能求出方程最准确的那个根来谢谢
#include<stdio.h>
#include<math.h>
float f(float x)
{return((x-5.0)*x+16)*x-80.0;
}
float xpoint(float x1,float x2)
{return(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
}
float root(float x1,float x2)
{float x,y,y1;
y1=f(x1);
do
{x=xpoint(x1,x2);
y=f(x);
if(y*y1>0)
{y1=y;
x1=x;
}
else
x2=x;
}
while(y!>0.00001);
return x;
}
void main()
{float x,x1,x2,y1,y2;
do
{printf("input x1,x2 ");
scanf("%f,%f",&x1,&x2);
y1=f(x1);
y2=f(x2);
}
while(y1*y2>0);
x=root(x1,x2);
printf("A root is%f\n",x);
}

基本不可能,你要明白,电脑里没分数这个概念,只有浮点数,而且浮点数的表示在电脑里也存在精度问题,很多你看起来应该很精确的小数在电脑里是没办法精确的
如果你想求出一个最准确的,我个人认为还是有办法的,自己设计数据结构和算法,但是基本思想还是采用弦截法,应该能求出很精确的数据