Inverting a 2D numerical function?

Any ideas on how to invert a 2-dimensional numerical function in Igor? Right now I have the function formatted in Igor as a pair of 2D waves: X_out(X_in,Y_in) and Y_out(X_in,Y_in). I would like to be able to convert this into two new waves of the form: X_in(X_out,Y_out) and Y_in(X_out,Y_out).

The best idea I've had for doing this so far is to extract contours from X_out and Y_out at a variety of z-positions and to figure out where the two contours cross (see my other post: http://www.igorexchange.com/node/4878, for a more specific question about this). Maybe there is a more efficient way of doing this, though?

Thanks,
Chris Smallwood
I am not convinced that this is a well-posed problem unless the data satisfy additional relationships which you have not stated.

Specifically, If you can draw a contour line on the surface then, at least in principle you can have multiple pairs of (x,y) that match a given z value. If that is the case, how do you propose to create a unique inversion?


A.G.
WaveMetrics, Inc.
It sounds like you want FindRoots with /Z=<desired value>,. It solves AG's question of uniqueness by ignoring it :) That's a humorous way to say that FindRoots will, in most cases, find a root if one exists, but it won't find all the roots when more than one exists.

Be sure to read the background material:

DisplayHelpTopic "Finding Function Roots"

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com