write a program to find a root of non linear equation using Bisection method in c++.
write a program to find a root of non linear equation using Bisection method in c++.
Source Code:
/********************************************
program: solution of non-linear equation
bisection method
language: C
Author : Tanveer Khan
Rajasthan University, Jaipur
************************************************/
#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:
/********************************************
program: solution of non-linear equation
bisection method
language: C
Author : Tanveer Khan
Rajasthan University, Jaipur
************************************************/
#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:
Comments
Post a Comment