Expression of biquadratic function

Nonconvex
Mar 26, 2020
J

I am a beginner in CVX and I have read the reference guide and the DCP ruleset, but I cannot find any useful information. Could anyone help me with this problem?

In my objective function, there is an expression of v’R_Av*v’R_Bv, where R_A and R_B are both Hermitian matrices. So this part should be a biquadratic function of the variable v and it should be convex, but it seems that CVX cannot accept it and it shows:
Disciplined convex programming error:
Cannot perform the operation: {convex} .* {convex}
Can anyone offer me some hints to deal with this problem? Thanks in advance.

E

It should be convex!

How do you prove that statement?

Most likely the proof will tell you how to solve the problem.

J
Replying to #2

Thank you for your reply. I think it could compared with Ax^2*Bx^2(where A and B are positive constant) for scalar. And my expression is an extension this biquadratic form to a complex vector situation. Is there any problem in this analog?

M
Replying to #3

You can choose the matrices in such a way that your expression becomes v_1^2v_2^2, which is not convex.

J
Replying to #4

I am still curious how do you get this conclusion. We only have one variable vector v and the matrices between them are Hermitian, so I think it is more like the biquadrate ABx^4 rather than ABx1^2x2^2. Could you please give me a more intuitive example? Thanks a lot.

J
Replying to #5

By the way, I have another term ( v’ R_A v)^2, which is equivalent to v’ R_A vv’ R_A v and it can be achieved by square_pos( v’ R_A v) thus accepted by CVX as a convex function. I think there is no big difference when we exchange a R_A with R_B. Is there any problem?

J
Replying to #6

CVX examines each single product of affine expressions, and each single squaring of an affine expression, checking for convexity; it will not check, for example, sums of products of affine expressions. For example, given scalar variables x and y, the expression
x ^ 2 + 2 * x * y + y ^2
will cause an error in CVX, because the second of the three terms 2 * x * y, is neither convex nor concave. But the equivalent expressions
( x + y ) ^ 2 ( x + y ) * ( x + y )
will be accepted.

The above paragraph was copied from the DCP ruleset document and it may be related to my problem, FYI.

M

You’re correct that 2*x*y is neither convex nor concave. Well neither is x^2*y^2 (which is quite different than x^4), which I believe is @Michal_Adamaszek 's point. I.e., that x^2*y^2 is a special case of the biquadratic, and it is not convex.

You think there is no big difference when we exchange a R_A with R_B. Well, it’s the difference between convex and non-convex.

J
Replying to #8

Thank you very much. I can get your point that to view v’R_Av as x^2 and view v’R_Bv as y^2. But what really confuses me is that even when R_A and R_B are both known and fixed matrices, this expression still cannot be considered as AB*x^4? I mean there is only one variable v. It is hard to understand.

M

v is a vector. What you are saying is true only if the length of the vector is 1.

v(1) is just as different from v(2) as x is from y.

v(1)^2*v(2)^2 is the same thing (from CVX’s and convexity’s point of view) as x^2*y^2. That is different than v(1)^4 or x^4.

J
Replying to #10

OK, I got it. Thank you for your patient response.