# How to study the quasi-concavity of a function

I have the following function:

f[y_] = y (k + h (1 - y - x) - t (1 - y - x) x + (1 - y) t (-y + x))


where k, h and t are parameters with values comprehended in the interval [0,1]. I already studied its concavity computing the second derivative wrt to y and using Reduce in order to understand when it is negative.

foc = D[f[y], y]
soc = D[foc, y]
Reduce[soc < 0]


Which gives the following output:

x \[Element] Reals && (t | y) \[Element] Reals && h > -t + 3 t y


I interpreted it as "the function is concave when h > -t + 3 t y (I do not understand the other part of the output).

Now, I would like to study under which conditions the function is quasi-concave. How can I do it?

• So you are trying to show an inequality involving the function f... can you please tell us exactly what that inequality is? My first thought is to try Reduce to find the region over which the inequality holds. – bill s May 5 at 23:12
• Before approaching the quasi-concavity, I studied the concavity of the function. So, as you said, I used Reduce in order to understand when the second derivative (wrt y, I forgot to say that the variable of interest is y, I will edit the post) is negative. Now I would like to study the quasi-concavity, which is a weaker condition than concavity, but I have no idea how to do it. – Plastic Man May 6 at 8:09
• any conditions on h, x and t? (e.g., are they all positive reals?) – kglr May 6 at 9:33
• As said, h and t (together with k) range in the interval [0,1]. x can be any real number. – Plastic Man May 6 at 11:36
• @kglr can you help me with this? I am really stuck :( – Plastic Man May 8 at 7:30

First formalizing a textbook definition of quasi-concavity which gives us the desired condition for the case in OP:

ClearAll[quasiConcaveQ]
quasiConcaveQ[foo_] := Resolve[ForAll[{λ, y1, y2},
0 < λ < 1 && Element[{y1, y2}, Reals],
foo[λ y1 + (1 - λ) y2] >= Min[foo[y1], foo[y2]]]]


For a cubic polynomial a z + b z^2 + c z^3 (with 0<c<1) this gives a simple condition:

FullSimplify[quasiConcaveQ[a # + b #^2 + c #^3 &], 0 < c < 1]

3 a c >= b^2


Defining f in OP in an alternative way:

ClearAll[f]
f[y_, k_, h_, t_, x_] := Collect[
y (k + h (1 - y - x) - t (1 - y - x) x + (1 - y) t (-y + x)), y]

f[y, k, h, t, x]

 (h + k - h x + t x^2) y + (-h - t) y^2 + t y^3

cRule = Thread[{a, b, c} ->  Rest[CoefficientList[Collect[f[y, k, h, t, x], y], y]]];

assumptions = And @@ Thread[0 < {k, h, t} < 1] && Element[{x}, Reals];

FullSimplify[FullSimplify[quasiConcaveQ[a # + b #^2 + c #^3 &], 0 < c < 1] /.
cRule, assumptions]

 3 t (h + k - h x + t x^2) >= (h + t)^2

• So, does it mean that f is quasi-concave when 3 t (h + k - h x + t x^2) >= (h + t)^2? – Plastic Man May 8 at 16:37
• @PlasticMan, f is quasi-concave when and only when 3 t (h + k - h x + t x^2) >= (h + t)^2. – kglr May 8 at 19:31
• Thank you so much! I appreciate the time you spent on this :) – Plastic Man May 9 at 8:28
• Sorry to bother again. What if I have another function to study, for instance r[x_] = k y + 1/2 (-2 + y) y (-t + y h) + k x + 1/2 x (-2 + 2 y + x) (-t + h x). How can I modify the code in order to study it? – Plastic Man May 11 at 7:59
• @PlasticMan, since your new function is also cubic in y, you can use ClearAll[f] f[y_, k_, h_, t_, x_] := k y + 1/2 (-2 + y) y (-t + y h) + k x + 1/2 x (-2 + 2 y + x) (-t + h x); cRule = Thread[{a, b, c} -> Rest[CoefficientList[f[y, k, h, t, x], y]]]; FullSimplify[ FullSimplify[quasiConcaveQ[a # + b #^2 + c #^3 &], 0 < c < 1] /. cRule, assumptions] – kglr May 11 at 8:06