CODE
#include <iostream>
#include <cmath>
using namespace std;
double calculateArea( double leftLimit, double rightLimit, double tolerance, double area );
double lHeight( double leftLimit );
double rHeight( double rightLimit );
int main()
{
double leftLimit, rightLimit, tolerance, initialArea, area1;
cout << "This is a demonstartion of integrating x^3 + 2." << endl;
cout << "Enter the left & right limits of integration: ";
cin >> leftLimit >> rightLimit;
cout << endl;
cout << "Enter the desired error tolerance: ";
cin >> tolerance;
cout << endl;
//function is f(x) = x^3 + 2
initialArea = (rightLimit-leftLimit)*(( lHeight( leftLimit ) + rHeight( rightLimit ))/2 );
area1 = calculateArea( leftLimit, rightLimit, tolerance, initialArea );
cout << "The area is approximately " << area1 << endl;
return 0;
}
double calculateArea( double leftLimit, double rightLimit, double tolerance, double area )
{
double mid = (leftLimit + rightLimit)/2;
double area2 = (mid-leftLimit)*(( lHeight( leftLimit ) + rHeight( mid ))/2 ) +
(rightLimit-mid)*(( lHeight( mid ) + rHeight( rightLimit ))/2 );
if( fabs(area-area2) < tolerance )
return area2;
else
{
return calculateArea( leftLimit, mid, tolerance/2, area2 ) + calculateArea( mid, rightLimit, tolerance/2, area2 );
}
}
double lHeight( double leftLimit )
{
return pow( leftLimit, 3 ) + 2;
}
double rHeight( double rightLimit )
{
return pow( rightLimit, 3 ) + 2;
}
