You're awful at the internet. People get intimidated about posting questions to lists because of threads like this. Most of the time when you want to say RTFM you should say (at least) say which manual to read.
Ray Brownrigg-2 wrote
1) The returned value of umax() is a list. How do you expect curve() to plot a list?
2) curve() requires that the function umax() must be vectorisable wrt its first parameter,
i.e. you pass it a numeric vector and it returns a numeric vector of the same length.
3) you have to realise that curve() will only graph a 1-dimensional function
but, there has to be some way to represent a multivariate function in terms of two of its arguments, i just dont know what to use.