Bisection, Simpleson
Bisection, Simpleson
If (f1 * f2) > 0, it displays the initial guesses are wrong and transfer control to step 11.
int main ()
{
printf ( " \n Display the real roots of the given equation using the Bisection method: ");
printf ( " \n x ^ 3 + 3 * x - 5 = 0 \n ");
double x0, x1;
int iterate;
printf (" \n Input the number of iteration you want to perform: ");
scanf (" %d", &iterate);
int count = 1;
double l1 = x0;
double l2 = x1;
double r, f1, f2, f3;
// now check whether the initial approximation are the real root
if (bisect (l1) == 0) // it is a root
{
r = l1;
}
else if ( bisect (l2) == 0)
{
r = l2;
}
// if the above two values are not the root of the given equation
else
{
while (count <= iterate) // here count is initialized with 1
{
f1 = bisect (l1);
r = (l1 + l2) / 2.0; // get the mid value of the interval l1 and l2
f2 = bisect (r);
f3 = bisect (l2);
// check f2 is equal to 0
if (f2 == 0)
{
r = f2;
break; // break the execution from the while loop statement
}
printf (" \n The root after %d iterations is %lf. \n", count, r);
For this, let’s discuss the C program for Simpson 1/3 rule for easy and accurate
calculation of numerical integration of any function which is defined in program.
In the source code below, a function f(x) = 1/(1+x) has been defined. The calculation
using Simpson 1/3 rule in C is based on the fact that the small portion between any two
points is a parabola. The program follows the following steps for calculation of the
integral.
As the program gets executed, first of all it asks for the value of lower
boundary value of x i.e. x0, upper boundary value of x i.e. xn and width of the
strip, h.
Then the program finds the value of number of strip as n=( xn – x0 )/h and
checks whether it is even or odd. If the value of ‘n’ is odd, the program refines
the value of ‘h’ so that the value of ‘n’ comes to be even.
After that, this C program calculates value of f(x) i.e ‘y’ at different
intermediate values of ‘x’ and displays values of all intermediate values of ‘y’.
After the calculation of values of ‘c’, the program uses the following formula to
calculate the value of integral in loop.
Integral = *((y0 + yn ) +4(y1 + y3 + ……….+ yn-1 ) + 2(y2 + y4 +……….+ yn-2 ))
Finally, it prints the values of integral which is stored as ‘ans’ in the program.
If f(x) represents the length, the value of integral will be area, and if f(x) is area, the
output of Simpson 1/3 rule C program will be volume. Hence, numerical integration can
be carried out using the program below; it is very easy to use, simple to understand, and
gives reliable and accurate results.
f(x) = 1/(1+x)
#include<stdio.h>
#include<math.h>
float f(float x)
{
return(1/(1+x));
}
int main()
{
int i,n;
float x0,xn,h,y[20],so,se,ans,x[20];
printf("\n Enter values of x0,xn,h: ");
scanf("%f%f%f",&x0,&xn,&h);
n=(xn-x0)/h;
if(n%2==1)
{
n=n+1;
}
h=(xn-x0)/n;
printf("\n Refined value of n and h are:%d %f\n",n,h);
printf("\n Y values: \n");
for(i=0; i<=n; i++)
{
x[i]=x0+i*h;
y[i]=f(x[i]);
printf("\n %f\n",y[i]);
}
so=0;
se=0;
for(i=1; i<n; i++)
{
if(i%2==1)
{
so=so+y[i];
}
else
{
se=se+y[i];
}
}
ans=h/3*(y[0]+y[n]+4*so+2*se);
printf("\n Final integration is %f",ans);
return 0;
}
OUTPUT:
Enter values of x0,xn,h: 1 5 2
Refined value of n and h are:2 2.000000
Y values:
0.500000
0.250000
0.166667