CVXPY使用函数信息以及DCP规则(DCP rules)来标记表达式的正负与曲率。
中缀操作符有+,-,,/。其中+和-是仿函数。在CVXPY中 和/也是仿的,因为仅仅当expr1或者expr2其中之一是常数时expr1*expr2才被允许。同理在expr1/expr2要求expr2是标量常数
所有的非标量表达式都能使用语法expr[i, j]。索引是一种仿函数,
The syntax expr[i] can be used as a shorthand for expr[i, 0] when expr is a column vector.假如expr是一个列向量,expr[i] = expr[i,0],第i行第0列。
Similarly, expr[i] is shorthand for expr[0, i] when expr is a row vector.假如expr是一个行向量,expr[i] = expr[0,i],第0行,第i列元素
Non-scalar expressions can also be sliced into using the standard Python slicing syntax. For example, expr[i:j:k, r] selects every kth element in column r of expr, starting at row i and ending at row j-1.
非标量表达式能够使用Python的切片语法进行切片,例如expr[i:j:k,r]选择的是:第r列,行是从i开始j-1行结束,每隔k个取一个元素。
任何表达式的转置都可以通过语法expr.T获得
Power: For any CVXPY expression expr, the power operator expr**p is equivalent to the function power(expr, p).
幂函数,对于任何CVXPY表达式expr,幂操作符expr**p = power(expr,p)
标量函数使用一个或多个标量、向量、矩阵作为参数,返回一个标量。
//如下例子:
norm(X)或者norm(X,2) = ∑ix2i‾‾‾‾‾‾√ ,其中 X∈Rn
这些函数操作的是针对参数中的每一个元素项。例如,如果X是一个5*4的矩阵变量,则abs(X)是一个5*4的矩阵表达式,
abs(X)[1,2]=abs(X[1,2])。
元素函数可以接受多个参数,例如max_elemwise、mul_elemwise操作每个参数的相应的每个元素。
例如:如果X和Y都是3*3的矩阵变量,max_elemwise(X,Y)是一个3*3矩阵,max_elemwise(X, Y)[2, 0] =max_elemwise(X[2, 0], Y[2, 0]). 要求所有的参数必须具有相同的维度和标量。
A vector/matrix function takes one or more scalars, vectors, or matrices as arguments and returns a vector or matrix.
http://www.cvxpy.org/en/latest/tutorial/functions/index.html#functions