HW16: Function numder One area where function pointers are used extensively is in numerical computing. Many numerical methods such as minimization and optimization, require the derivative of the mathematical function which is being analyzed. Rather than writing a separate derivative function for each mathematical function (and in some cases the derivative can not be written in closed form), a general purpose numerical derivative function can be written to work with any differentiable function. Consider the following algorithm for a numerical derivative: df(x)/dx ~= (f(x+h) - f(x-h))/2h (The ~= means approximately equal, I have omitted an error term from the equation.) The error in this approximation is proportional to h*h. Thus, a small value of h will give a better numerical derivative. Based upon this algorithm, write a function, numder(), which accepts three parameters. The first is a pointer to a function that accepts a double argument and returns a double value. The second parameter is the value of x (type double) where the numerical derivative is to be evaluated. The third parameter is a double variable that contains the value of h. Thus the user of the function numder can specify the precision with which the numerical derivative is calculated. The function returns the numerical derivative (also a double variable). You may want to define a function pointer type. If you do, make sure that you include the typedef in the numder.h file. Otherwise, numder.h would contain the function prototype. SUBMITTING YOUR HOMEWORK: Use the toteach command to submit numder.c & numder.h