Functions and an Introduction to Recursion
Write a program for learn C++ subfunction. Exercise: ◦ Please implement the following functions: double derivative(double a, double n, double x0); receives three parameters and returns the slope of ax n at x 0. double integral(double a, double n, double x1, double x2); receives four parameters and returns the area enclosed by ax n, y=0, x=x 1 and x=x 2.
To compute the slope S between (x 1, y 1 ) and (x 2, y 2 ): x y x2x2 x1x1 (x 1, y 1 ) (x 2, y 2 ) y 2 - y 1 x 2 - x 1
To compute the slope of the tangent line at x 0 : x0x0 x y x 0 +dx f(x)f(x)
When dx approaches 0, then the slope of the tangent line at x 0 is called the derivative of f(x) at x 0. ◦ We would use a very small dx to approximate the derivative.
Program framework prototype implementation
You can use the #define directive to give a meaningful name to a constant in your program. ◦ Example: DX will be replaced by #include #define DX int main () { cout << DX << endl; return 0; } #include #define DX int main () { cout << DX << endl; return 0; }
Remember the only way for a sub-function to communication with outside is through its parameters and return value! Copy value Output x Parameter int value Return Value S argument int x3 int value = x*x + 2*x + 5; 20
What the sub-function can only access are its parameters and variables. ◦ Note: do not declare a variable of the same variable name with parameters.
How do we compute the area enclosed by ax n, y=0, x=x 1 and x=x 2 ? x y x1x1 x2x2
Use rectangles of the same width to cover the enclosed field and then sum up their area x y x1x1 x2x2 dx f(x 1 +dx) f(x1)f(x1)f(x 1 +2dx) f(x 1 +3dx) f(x 1 +4dx) f(x 1 +5dx)
The measure of area is ◦ The accuracy of area measure depends on how small dx is. x y x1x1 x2x2
When dx approaches 0, we can approximate the area below f(x) between x 1 and x 2. ◦ We denote as the integral of f(x) from x 1 to x 2.
Program framework
Use a very small value to represent dx. Compute the area of rectangle by multiplying f(x) and dx. Accumulate the area of rectangles. for (double i = x1; i <= x2; i += DX) { …… }