Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

How can I determine convexity of the function f = Log[ x, 1 + (x^a - 1) (x^b - 1)/(x - 1)] with the parameters $a,\,b$ belonging to the interval $(0,1)$ in Mathematica?

share|improve this question

1 Answer 1

Let's define the function f suitably:

f[x_, a_, b_] := Log[x, 1 + (x^a - 1)*(x^b - 1)/(x - 1)]

We would have defined f with appropriate conditions (I recommend to examine this post: Placement of Condition /; expressions), e.g. f[x_, a_, b_] /; 0 < a < 1 && 0 < b < 1 && x > 0 := ... however since we are to deal with certain symbolic capabilities of the system I would rather choose the former way.
In order to test convexity of the function f we are interested in positivity of its second derivative with respect to x: D[ f[x, a, b], {x, 2}].
In such cases I'd use Reduce with certain assumptions, e.g.

Reduce[ D[ f[x, a, b], {x, 2}] <= 0 && 0 < a < 1 && 0 < b < 1 && x > 0, x]

nevertheless the second derivative of f is slightly involved and even restricting the domain of interest, symbolic treatment of the function with Reduce may appear to be too memory consuming ending up with:

No more memory available.
Mathematica kernel has shut down.
Try quitting other applications and then retry. 

Alternatively we would exploit another approach using numerical estimates (see e.g. this answer Prove (or check) an expression is positive given constraints on variables?), since we expect that the second derivative should be positive wherever the constraint 0 < a < 1 && 0 < b < 1 && x > 0 is satisfied we would make use of NMinimize[{ f[x, a, b] ,cons},{ x, a, b}] finding a global minimum of f subject to the constraints given:

NMinimize[{ D[ f[ x, a, b], { x, 2}], 0 < a < 1, 0 < b < 1, x > 0}, {x, a, b}]
{0., { x -> 0.382136, a -> 0.85969, b -> 0.}}    

We have found that the global minimum of the function is zero ( however the constraint 0 < b < 1 is satisfied numercally) thus we have demonstrated that f is convex at the domain of interest.
Another way would exploit FindMinimum, e.g.

FindMinimum[{ D[ f[ x, a, b], {x, 2}], 0 < a < 1, 0 < b < 1, x > 0}, 
            {{x, 1/2}, {a, 1/2}, {b, 1/2}}]
 { 4.6312*10^-10, { x -> 3.10181, a -> 0.999902, b -> 0.999902}}

but one has to use it carefully since FindMinimum can search only local minimum of f.

share|improve this answer
    
Thank you for your interest to the question and your work. Unfortunately, the answer done with the NMinimize command is not any proof because of the possible round-off errors. There is a chanse that the true minimum equals -2*10^(-125). I unsuccessfully tried to apply the properties of convex functions, namely the Hessian of f[ x, a, b] to this end. My question is of interest because convex functions have many applications. BTW, the singularity at x=1 can be removed by f[1,a,b]=a*b. –  user64494 Jun 16 at 11:23
7  
@user64494 You should mention in your question that you are searching for a symbolic method, removing the numerics tag from it and adding the proof tag. I provided acceptable way for figuring out a fast test. I would devote a bit more of my time only if the OP can ask a reliable question, however after six edits it is still quite a vague question, thus I have to unupvote it. –  Artes Jun 16 at 12:04
    
@ Artes I think my question is clearly formulated. Unfortunately, the NMinimize command produces the answer only for concrete values of the parameters. I appreciate your answer to one of my questions and don't refuse my vote up. –  user64494 Jun 16 at 12:17

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.