-
bisection method
here is the c program for arriving at a solution using bisection method.
The ouput is going infinte..pls help ....i think it has more of syntax errors than logical errors...
Code:
main()
{
float a,b,c,x1,x2,x,series;
double d;
printf("enter a,b,c and x1(pos) & x2(neg)");
scanf("%f%f%f%f%f", &a, &b, &c, &x1, &x2);
read:
x = (x1 + x2) / 2;
series = a * x * x + b * x + c;
d = fabs(series);
if (d > 0.0001)
{
if (x * x1 < 0)
x = x2;
else
x = x1;
goto read;
}
else
{
printf("ans=%f", x);
}
return 0;
}
-
main() - read FAQ
it should be
int main(void)
you should work on your indentation
if (x*x1<0) - you shoudl really think a little about this line
goto read; - there are several cases where usage of goto has its reasons. Your case is not one of these. So write your code using while loop
-
-
hey i edited it ....bt its still not workin...help...
Code:
#include<stdio.h>
#include<math.h>
main()
{float a,b,c,x1,x2,x,series;
double d;
printf("enter a,b,c and x1(pos) & x2(neg)");
scanf("%f%f%f%f%f",&a,&b,&c,&x1,&x2);
x=0;
d=1;
while(d>0.0001)
{
x=(x1+x2)/2;
series=a*x*x+b*x+c;
d=fabs(series);
if(x*x1 < 0)
x2=x;
else
x1=x;
}
printf("ans=%f",x);
return 0;
}
-
you have doe notinnk with the line
if(x*x1 < 0)
suppose x1 = 1, x2 = 3, than x = 2
think about right condition to get rid of the half of the interval