# 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. May 5, 2020 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. May 6, 2020 at 8:09
• any conditions on h, x and t? (e.g., are they all positive reals?)
– kglr
May 6, 2020 at 9:33
• As said, h and t (together with k) range in the interval [0,1]. x can be any real number. May 6, 2020 at 11:36
• @kglr can you help me with this? I am really stuck :( May 8, 2020 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? May 8, 2020 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, 2020 at 19:31
• Thank you so much! I appreciate the time you spent on this :) May 9, 2020 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? May 11, 2020 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, 2020 at 8:06