The Doctoral Dissertation How Can We Determine Numerical Quality in Software? The Doctoral Dissertation of Thomas Rowan
“Functional Stability Analysis Of Numerical Algorithms” Thomas Harvey Rowan: “Functional Stability Analysis Of Numerical Algorithms” Doctoral Dissertation Department of Computer Sciences The University of Texas at Austin 1990
What is meant by numerical quality?
(i.e. having slightly different input) What is meant by numerical quality? The computed solution (i.e. the output) is the exact solution to a close problem (i.e. having slightly different input)
(i.e. having slightly different input) What is meant by numerical quality? The computed solution (i.e. the output) is the exact solution to a close problem (i.e. having slightly different input) This is called “numerical stability”
Input: a pair of lines in the plane
Input: a pair of lines in the plane Output: the intersection (if any)
well conditioned problem This is what we seek: A poor solution to a well conditioned problem
Notice the difficulty: We have to guarantee that ? ? Notice the difficulty: We have to guarantee that the approximate solution is not the solution to ANY close problem
Idea: Search the input space attempting to maximize the ratio of the forward error to the condition number.
Idea: Search the input space attempting to maximize the ratio of the forward error to the condition number. Details, details: How do you get the forward error? How do you get the condition number?
Would you like to find the maximum of this?
Nelder Mead Simplex Algorithm: The crawling spider
high high high high
Simplex difficulties: Huge use of storage (n2) Equivalent weight to all variables
Simplex difficulties: Huge use of storage (n2) Equivalent weight to all variables Subplex: Determine small subspaces likely to be most useful for determining minimum
the Subplex Algorithm to locate minima of The idea is to use the Subplex Algorithm to locate minima of (the negative of) the backward error INSTAB SUBPLEX Backward Error code code extra precision
Does it work?
Does it work? Tried on known unstable algorithms Tried on known stable algorithms Tried on unknown algorithms
Does it work? Tried on known unstable algorithms Identified all as unstable Tried on known stable algorithms Found no false positives Tried on unknown algorithms Discovered unstable algorithms
Backword error estimate for Gaussian elimination
Anything left to do? Two papers to write Translation into C++ or Matlab More experiments Refinements to INSTAB or SUBPLEX