-->

Numerical Methods: Solution of non-linear equations by using Bisection method in C

Numerical Methods: Solution of non-linear equations by using Bisection method in C

    Algorithm:

    1. Declare and initialize necessary variables like up_range, mid, low_range etc.
    2. Read the range( upper and lower)  from user within which the root of the equation  is to be calculated.
    3. If root lies within the range? if yes: go to step 4. if no: go to step 2
    4. Calculate the mid value of upper and lower range, mid = (upper+lower)/2
    5. Calculate the functional value at mid i.e. func(mid).
    6. If func(mid)*func(low_range) is less than zero, then replace upper range by mid else replace lower range by mid
    7. Display the no of iteration and root
    8. if func(mid) is very small? yes: go to step 9. No: go to step 4
    9. Display the value of most closest and accurate root.

    Source Code:

    /********************************************
        program: solution of non-linear equation
                        bisection method
        language: C
        Author : Bibek Subedi
        Tribhuvan University, Nepal
    ************************************************/
    #include<stdio.h>
    #include<math.h>
    //function that returns the functional value
    float func(float x){
        return (pow(x,3)+5*pow(x,2)-7);
    }
    int main(){
        float up_range, low_range, mid;
        int i = 0; //no of iteration
        printf("Enter the range: ");
        scanf("%f%f",&up_range,&low_range);
        while(func(up_range)*func(low_range) > 0){ //repeatadly read until the range has root
            printf("\nThis range doesnot contains any root");
            printf("\nEnter again the range: ");
            scanf("%f%f",&up_range,&low_range);
        }
        do{
            mid = (up_range + low_range) / 2;
            if(func(low_range) * func(mid) < 0){ //if signs of mid and low_range is
                up_range = mid;                  //different, replace up_range by mid
            }else{ //else raplace, low_range by mid
                low_range = mid;
            }
            i++;
            printf("\nAt iteration: %d, root = %f",i,mid);
        }while(fabs(func(mid))> 0.0001);
        printf("\nThe root of the equation is %f", mid);
        return 0;
    }

    Output:

    bisection
    fardi zayden
    @مرسلة بواسطة
    كاتب ومحرر اخبار اعمل في موقع دراسات تقنية .

    إرسال تعليق