I want to use the solution of Maximize, defined as a function, in another function. Here's an example:

f1[y_] := x /. Last[Maximize[{Sin[x y], Abs[x] <= y}, x]]  (* or any other function *)

This definition is fine, for example if I give f1[4], I get the answer -((3 \[Pi])/8).

The problem is that when I want to use it in another function I get an error. For example:

FindRoot[f1[y] == Pi/4, {y, 1}]

Gives me the following error:

ReplaceAll::reps: {x} is neither a list of replacement rules nor a valid dispatch table, and so cannot be used for replacing. >>

FindRoot::nlnum: The function value {-0.785398+(x/.x)} is not a list of numbers with dimensions {1} at {y} = {1.}. >>

I've been struggling with this for several days now! Any comment, idea, help, ... is deeply appreciated!

  • $\begingroup$ Try evaluating f[y] alone and you'll see that the function f, a you defined it, simply isn't compatible with symbolic arguments. $\endgroup$
    – Szabolcs
    Commented Mar 1, 2013 at 4:00
  • $\begingroup$ Actually I'd say duplicate of this: mathematica.stackexchange.com/q/333/12 The answer I gave there explains the issue and the solution more clearly. $\endgroup$
    – Szabolcs
    Commented Mar 1, 2013 at 4:01
  • $\begingroup$ Also see here: support.wolfram.com/kb/3820 $\endgroup$
    – Szabolcs
    Commented Mar 1, 2013 at 4:03


Browse other questions tagged or ask your own question.