5903 Intro Scientific Prog:
Steepest Descent: Specification

  1. Write a subroutine to print (on stdout) the value of a scalar function of a vector argument (dimension n) for a list of arguments.  The function needs to be passed as a "pointer to a function".  
  2. Write a subroutine to print (on stdout) the value of a vector function (dimension n) of a vector (dimension n) argument for an array of arguments.  The function needs to be passed as a "pointer to a function".
  3. Write a linesearch algorithm (ref for example Numerical Optimization Nocedahl and Wright chpt 3.) using the Steepest Descent direction and a backtracking (start with alpha =1 and replace alpha by rho alpha until it satisfies the Wolfe conditions with c1=0.001 and c2 = 0.5) stepsize selection routine. There should be a procedure that completes a single iteration within an overall controlling procedure.  The overall controlling procedure should quit out when the gradient is les than some specified tolerance. The procedure needs to be generic with f and gradf being passed as pointers to functions.   The following wikipedia articles may be useful.
    1.  http://en.wikipedia.org/wiki/Wolfe_condition 
    2. http://en.wikipedia.org/wiki/Linesearch
    3. http://en.wikipedia.org/wiki/Backtracking_linesearch
  4. There is a test file and an overall header file in the SteepestDescent directory
  5. You must organize your code into seperate files and make the "makefile" reasonably compact.

Additions and changes are in red.