when I use contourplot, the system will simplify the expression first with its parameters holded. However some expressions can not be simplified first without inputting parameters, for example,
g[x_, y_, z_] := x + y + z;
f[x_, y_] := z /. FindRoot[g[x, y, z], {z, 0}];
ContourPlot[f[x, y] == 1, {x, -1, 1}, {y, -1, 1}]
will give warning informations
FindRoot::nlnum: The function value {0. +x+y} is not a list of numbers with dimensions {1} at {z} = {0.}. >>
ReplaceAll::reps: {FindRoot[g[x,y,z],{z,0}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>
General::stop: Further output of FindRoot::nlnum will be suppressed during this calculation. >>
ReplaceAll::reps: {FindRoot[g[x,y,z],{z,0}]} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>
General::stop: Further output of ReplaceAll::reps will be suppressed during this calculation. >>
whereas the output plot is right

but the following code will not generate warning information
g[x_, y_, z_] := x + y + z;
f[x_, y_] := z /. FindRoot[g[x, y, z], {z, 0}];
ContourPlot[f[x, y], {x, -1, 1}, {y, -1, 1}]
Question: how can I use the first example to generate the right plot without warning?Thanks a lot!
