Thread: bisection method

  1. #1
    Registered User
    Join Date
    Feb 2009
    Posts
    3

    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;
    }
    Last edited by swty_todd; 02-07-2009 at 09:39 PM.

  2. #2
    Hurry Slowly vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,788
    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
    All problems in computer science can be solved by another level of indirection,
    except for the problem of too many layers of indirection.
    – David J. Wheeler

  3. #3
    Registered User
    Join Date
    Feb 2009
    Posts
    3
    hey thnx vart.....!!!

  4. #4
    Registered User
    Join Date
    Feb 2009
    Posts
    3
    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;
    }

  5. #5
    Hurry Slowly vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,788
    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
    All problems in computer science can be solved by another level of indirection,
    except for the problem of too many layers of indirection.
    – David J. Wheeler

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. on method pointers and inheritance
    By BrownB in forum C++ Programming
    Replies: 2
    Last Post: 03-02-2009, 07:50 PM
  2. Replies: 2
    Last Post: 01-22-2008, 04:22 PM
  3. bisection method
    By bar5037 in forum C++ Programming
    Replies: 13
    Last Post: 10-30-2007, 04:26 PM
  4. Bisection Method function value at root incorrect
    By mr_glass in forum C Programming
    Replies: 3
    Last Post: 11-10-2005, 09:10 AM
  5. problem with the bisection method
    By dionys in forum C Programming
    Replies: 1
    Last Post: 04-01-2004, 04:19 PM