Tracing contours (pwkit.contours
)¶
pwkit.contours - Tracing contours in functions and data.
Uses my own homebrew algorithm. So far, it’s only tested on extremely well-behaved functions, so probably doesn’t cope well with poorly-behaved ones.
-
pwkit.contours.
analytic_2d
(f, df, x0, y0, maxiters=5000, defeta=0.05, netastep=12, vtol1=0.001, vtol2=1e-08, maxnewt=20, dorder=7, goright=False)[source]¶ Sample a contour in a 2D analytic function. Arguments:
- f
- A function, mapping (x, y) -> z.
- df
- The partial derivative: df (x, y) -> [dz/dx, dz/dy]. If None, the derivative of f is approximated numerically with scipy.derivative.
- x0
- Initial x value. Should be of “typical” size for the problem; avoid 0.
- y0
- Initial y value. Should be of “typical” size for the problem; avoid 0.
Optional arguments:
- maxiters
- Maximum number of points to create. Default 5000.
- defeta
- Initially offset by distances of defeta*[df/dx, df/dy] Default 0.05.
- netastep
- Number of steps between defeta and the machine resolution in which we test eta values for goodness. (OMG FIXME doc). Default 12.
- vtol1
- Tolerance for constancy in the value of the function in the
initial offset step. The value is only allowed to vary by
f(x0,y0) * vtol1
. Default 1e-3. - vtol2
- Tolerance for constancy in the value of the function in the
along the contour. The value is only allowed to vary by
f(x0,y0) * vtol2
. Default 1e-8. - maxnewt
- Maximum number of Newton’s method steps to take when attempting to hone in on the desired function value. Default 20.
- dorder
- Number of function evaluations to perform when evaluating the derivative of f numerically. Must be an odd integer greater than 1. Default 7.
- goright
- If True, trace the contour rightward (as looking uphill), rather than leftward (the default).