Пытаюсь найти корни уравнения (x ^ 3) - (x ^ 2) +2, используя метод деления пополам.Для этого я взял два значения у пользователя, чтобы они действовали в качестве начальных догадок (здесь они называются пределами), а затем сходились к значению, при котором функция переходит на 0. Но всякий раз, когда я изменяю пределы, значение также различается в больших количествах, и ничегоиз них близки к фактической стоимости.Любые предложения, где я могу ошибаться?
Вот код:
#include<stdio.h>
#include<cstdlib>
# define Epsilon 0.0001
float f(float x)
{
return x*x*x-x*x+2;
}
float bisection(float a, float b)
{
if(f(a)*f(b)>0)
{
printf("No root within this interval.");
}
float c=a;
while(abs(b-a)>Epsilon)
{
c=(a+b)/2;
if(f(a)*f(c)<0)
{
b=c;
}
else if(f(b)*f(c)<0)
{
a=c;
}
else if(f(c)==0)
{
printf("The root of x^3-x^2+2 is %f",c);
break;
}
}
printf("The root of x^3-x^2+2 is %f",c);
}
int main(void)
{
float u,l;
printf("Enter upper limit:\n");
scanf("%f",&u);
printf("Enter lower limit:\n");
scanf(" %f",&l);
bisection(l,u);
}
Спасибо за помощь заранее!