Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Problem 2 In this problem you are going to create a C program that calculates th

ID: 3711484 • Letter: P

Question

Problem 2 In this problem you are going to create a C program that calculates the root, x*, of a polynomial function, f(x), using the bisection method. The bisection method is an iterative method, that requires an initial guess for the interval (a, b) around the value ofx*, where we suspect root offx) is located, to calculate the true value ofx* to an accuracy of e. This means, that the bisection method will calculate x* such that Page 1 of 5 SJSU AE 30 L. Capdevila 4/16/2018 General procedure for the bisection method is as follows: 1) Get initial values for a andib 2) Calculate an initial guess for x*, g, where g -(a + b)/2 3) Calculatef(x) at x-g, that is,f(g) 4) If fig)l 2 e, the following will occur: a. Calculate the function value at a, that is, f(a) b. If the SIGN offg) matches the SIGN off(a), update the value of a to the value of g, that is, set a -g. Otherwise, update b to the value of g, that is, set b -g c. Update g, that is, g - (a+b)/2 d. Update the function value at g, that is,fg) 5) Go back to step 4) until |f(g)l

Explanation / Answer

This program in C is used to demonstrate bisection method. Bisection method is one of the many root finding methods.
In this method we are given a function f(x) and we approximate 2 roots a and b for the function such that f(a).f(b)<0
Then we find another point
c=(a+b)/2
if f(c)==0
then root=c;
else
if f(a).f(c)<0
b=c;
if f(b).f(c)<0
a=c;
and we repeat these steps for the given number of iterations.

#include<stdio.h>

#include"math.h"

double F(double x)

{

    return(pow(x,3)+3*x-5);//This return the value of the function

}

int main()

{

    printf("This program illustrates the bisection method in C ");

    printf("x^3 + 3*x - 5 = 0 ");

    double x0,x1;

    printf("Enter the first approximation to the root ");

    scanf("%lf",&x0);

    printf("Enter the second approximation to the root ");

    scanf("%lf",&x1);

    int iter;

    printf("Enter the number of iterations you want to perform ");

    scanf("%d",&iter);

    int ctr=1;

    double l1=x0;

    double l2=x1;

    double r,f1,f2,f3;

    //We check if the initail approximations are the root or not

    if(F(l1)==0)

    r=l1;

    else

    if(F(l2)==0)

    r=l2;

    else

    {

    while(ctr <= iter)

    {//this is an implementation of the algorithm mentioned above

        f1=F(l1);

        r=(l1+l2)/2.0;

        f2=F(r);

        f3=F(l2);

        if(f2==0)

        {

            r=f2;

            break;

        }

        printf("The root after %d iteration is %lf ",ctr,r);

        if(f1*f2<0)

        l2=r;

        else

        if(f2*f3<0)

        l1=r;

        ctr++;

    }

    }

    printf("The approximation to the root is %lf",r);

    getch();

}

/*A sample run of the program was carried out and the results were found as:-

This program illustrates the bisection method in C

x^3 + 3*x - 5 = 0

Enter the first approximation to the root

1

Enter the second approximation to the root

2

Enter the number of iterations you want to perform

9

The root after 1 iteration is 1.500000

The root after 2 iteration is 1.250000

The root after 3 iteration is 1.125000

The root after 4 iteration is 1.187500

The root after 5 iteration is 1.156250

The root after 6 iteration is 1.146025

The root after 7 iteration is 1.148438

The root after 8 iteration is 1.152344

The root after 9 iteration is 1.154297

The root is 1.154297

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote