answersLogoWhite

0

#include

#include

#include

/* define prototype for USER-SUPPLIED function f(x) */

double ffunction(double x);

/* EXAMPLE for "ffunction" */

double ffunction(double x)

{

return (x * sin(x) - 1);

}

/* -------------------------------------------------------- */

/* Main program for algorithm 2.3 */

void main()

{

double Delta = 1E-6; /* Closeness for consecutive iterates */

double Epsilon = 1E-6; /* Tolerance for the size of f(C) */

int Max = 199; /* Maximum number of iterations */

int Satisfied = 0; /* Condition for loop termination */

double A, B; /* INPUT endpoints of the interval [A,B] */

double YA, YB; /* Function values at the interval-borders */

int K; /* Loop Counter */

double C, YC; /* new iterate and function value there */

double DX; /* change in iterate */

printf("-----------------------------------------------------\n");

printf("Please enter endpoints A and B of the interval [A,B]\n");

printf("EXAMPLE : A = 0 and B = 2. Type: 0 2 \n");

scanf("%lf %lf", &A, &B);

printf("The interval ranges from %lf to %lf\n", A,B);

YA = ffunction(A); /* compute function values */

YB = ffunction(B);

/* Check to see if YA and YB have same SIGN */

if( ( (YA >= 0) && (YB >=0) ) ( (YA < 0) && (YB < 0) ) ) {

printf("The values ffunction(A) and ffunction(B)\n");

printf("do not differ in sign.\n");

exit(0); /* exit program */

}

for(K = 1; K <= Max ; K++) {

if(Satisfied 0) { /* first 'if' */

Satisfied = 1; /* Exact root is found */

}

else if( ( (YB >= 0) && (YC >=0) ) ( (YB < 0) && (YC < 0) ) ) {

B = C; /* Squeeze from the right */

YB = YC;

}

else {

A = C; /* Squeeze from the left */

YA = YC;

}

if( (fabs(DX) < Delta) && (fabs(YC) < Epsilon) ) Satisfied = 1;

} /* end of 'for'-loop */

printf("----------------------------------------------\n");

printf("The number of performed iterations is : %d\n",K - 1);

printf("----------------------------------------------\n");

printf("The computed root of f(x) = 0 is : %lf \n",C);

printf("----------------------------------------------\n");

printf("Consecutive iterates differ by %lf\n", DX);

printf("----------------------------------------------\n");

printf("The value of the function f(C) is %lf\n",YC);

} /* End of main program */

User Avatar

Wiki User

14y ago

What else can I help you with?