求解高次方程的代码为什么不对呢?
#include <stdio.h>#include <math.h>
void main()
{
float x1,x2,y1,y2;
do
{
printf("Input two numbers:\n");
scanf("%f,%f",&x1,x2);
y1=f(x1);
y2=f(x2);
}while(y1*y2<0);
x=root(x1,x2);
printf("A root is %f",x);
}
float f(float)
{
return(x^3-5x*x+16x-80);
}
float xpoint(float x1,float x2)
{
return(x1*f(x2)-x2*f(x1))/(f(x1)-f(x2));
}
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(fabs(y)>0.000001);
}
这个求解x^3-5x^2+16x-80=0的代码为什么总是错呢?请大家帮我看看,修改一下吧。